diff --git a/.vscode/launch.json b/.vscode/launch.json index ae32c96..0c7b9c8 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -109,7 +109,8 @@ "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/DGWVoiceTransmit/dgwvoicetransmit", - "args": ["F4FXL B", "${workspaceFolder}/Sandbox/Announce_F5ZEE__B.dvtool", "-text", "www.F5KAV.fr", "-dprs", "!4858.72N/00736.91Er/"], + "args": ["F5ZEE B", "${workspaceFolder}/Sandbox/french_male.dvtool", "${workspaceFolder}/Sandbox/german_male.dvtool", "-text", "abcdefghij", "-dprs", "!4858.72N/00736.91Er/"], + //"args": ["F5ZEE B", "${workspaceFolder}/Sandbox/french_male.dvtool", "${workspaceFolder}/Sandbox/german_male.dvtool"], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], diff --git a/DGWVoiceTransmit/VoiceTransmit.cpp b/DGWVoiceTransmit/VoiceTransmit.cpp index eb7f6b3..9e36968 100644 --- a/DGWVoiceTransmit/VoiceTransmit.cpp +++ b/DGWVoiceTransmit/VoiceTransmit.cpp @@ -132,9 +132,11 @@ bool CVoiceTransmit::run() header->setRptCall2(m_callsign); header->setDestination(address, G2_DV_PORT); - if(!m_text.empty()) { + bool overrideSlowData = !m_text.empty(); + + if(overrideSlowData) { slowData = new CSlowDataEncoder(); - // slowData->setHeaderData(*header); + slowData->setHeaderData(*header); if(!m_text.empty()) slowData->setTextData(m_text); if(!m_dprs.empty()) slowData->setGPSData(m_dprs); } @@ -152,6 +154,7 @@ bool CVoiceTransmit::run() while (loop) { unsigned int needed = std::chrono::duration_cast(std::chrono::high_resolution_clock::now() - start).count(); needed /= DSTAR_FRAME_TIME_MS; + unsigned char buffer[DV_FRAME_LENGTH_BYTES]; while (out < needed) { CAMBEData* ambe = m_store->getAMBE(); @@ -172,20 +175,15 @@ bool CVoiceTransmit::run() break; } - if(slowData != nullptr) { // Override slowdata if specified so - unsigned char buffer[DV_FRAME_LENGTH_BYTES]; - ambe->getData(buffer, DV_FRAME_LENGTH_BYTES); - - // Insert sync bytes when the sequence number is zero, slow data otherwise - if (seqNo == 0U) { - ::memcpy(buffer + VOICE_FRAME_LENGTH_BYTES, DATA_SYNC_BYTES, DATA_FRAME_LENGTH_BYTES); - } else { - slowData->getInterleavedData(buffer + VOICE_FRAME_LENGTH_BYTES); - } - - ambe->setData(buffer, DV_FRAME_LENGTH_BYTES); + ambe->getData(buffer, DV_FRAME_LENGTH_BYTES); + // Insert sync bytes when the sequence number is zero, slow data otherwise + if (seqNo == 0U) { + ::memcpy(buffer + VOICE_FRAME_LENGTH_BYTES, DATA_SYNC_BYTES, DATA_FRAME_LENGTH_BYTES); + } else if (overrideSlowData) { + slowData->getInterleavedData(buffer + VOICE_FRAME_LENGTH_BYTES); } - + ambe->setData(buffer, DV_FRAME_LENGTH_BYTES); + ambe->setSeq(seqNo); ambe->setDestination(address, G2_DV_PORT); ambe->setEnd(false); diff --git a/README.md b/README.md index f451764..226908d 100644 --- a/README.md +++ b/README.md @@ -145,6 +145,7 @@ The testing framwework used is Google Test. # 5. Version History ## 5.1. Version 0.7 +- [**Bugfix**] Fix #37 Unable to transmit multiple files (DGWVoiceTransmit) ([#37](https://github.com/F4FXL/DStarGateway/issues/37)) - [**Bugfix**] Unknow repeater entries in log when using Icom Hardware ([#34](https://github.com/F4FXL/DStarGateway/issues/34)) - [**Bugfix**] Malformed callsign in some cases when using DV-G (NMEA) ([#33](https://github.com/F4FXL/DStarGateway/issues/33)) - [**Bugfix**] Crash on startup with Icom Hardware. Thanks to Josh AB9FT for reporting the issue.([#31](https://github.com/F4FXL/DStarGateway/issues/31))