diff --git a/.vscode/tasks.json b/.vscode/tasks.json index ac3f100..168ca95 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -12,7 +12,10 @@ "ENABLE_DEBUG=1", "USE_GPSD=1" ], - "group": "build", + "group": { + "kind": "build", + "isDefault": true + }, "problemMatcher": [] }, { @@ -25,10 +28,7 @@ "ENABLE_DEBUG=1", "USE_GPSD=1" ], - "group": { - "kind": "build", - "isDefault": true - }, + "group": "build", "problemMatcher": [] } ] diff --git a/APRSUnit.cpp b/APRSUnit.cpp index 3fe066b..ad8f9e1 100644 --- a/APRSUnit.cpp +++ b/APRSUnit.cpp @@ -51,13 +51,17 @@ void CAPRSUnit::clock(unsigned int ms) { m_timer.clock(ms); if(m_status == APS_IDLE && !m_frameBuffer.empty() && m_timer.hasExpired()) { - m_status = APS_TRANSMIT; + auto frame = m_frameBuffer.front(); m_frameBuffer.pop_front(); m_headerData = new CHeaderData(); std::string dprs, text; - CAPRSToDPRS::aprsToDPRS(dprs, text, *m_headerData, *frame); + if(!CAPRSToDPRS::aprsToDPRS(dprs, text, *m_headerData, *frame)) { + delete m_headerData; + m_headerData = nullptr; + return; + } m_slowData = new CSlowDataEncoder(); @@ -73,6 +77,7 @@ void CAPRSUnit::clock(unsigned int ms) m_seq = 0U; m_start = std::chrono::high_resolution_clock::now(); + m_status = APS_TRANSMIT; return; }