From da8e4dfc61bd076eb02a0622787bfa90c0f1ae63 Mon Sep 17 00:00:00 2001 From: Tom Early Date: Sat, 9 Feb 2019 19:25:59 -0700 Subject: [PATCH] better log_debug logs --- QnetModem.cpp | 69 ++++++++++++++++++++++----------------------------- 1 file changed, 29 insertions(+), 40 deletions(-) diff --git a/QnetModem.cpp b/QnetModem.cpp index 757f747..6fc7657 100644 --- a/QnetModem.cpp +++ b/QnetModem.cpp @@ -581,22 +581,15 @@ int CQnetModem::SendToModem(const unsigned char *buf) bool CQnetModem::ProcessGateway(const int len, const unsigned char *raw) { + std::string superframe; if (29==len || 58==len) { //here is dstar data SDSTR dstr; memcpy(dstr.pkt_id, raw, len); // transfer raw data to SDSTR struct - if (LOG_DEBUG) { - if (58 == len) - printf("From Gateway id=%04X header='%.36s'\n", ntohs(dstr.vpkt.streamid), dstr.vpkt.hdr.flag+3); - else { - printf("from Gateway id=%04X ctrl=%02X text=%02X:%02X:%02X", ntohs(dstr.vpkt.streamid), dstr.vpkt.ctrl, dstr.vpkt.vasd.text[0], dstr.vpkt.vasd.text[1], dstr.vpkt.vasd.text[2]); - if (VoicePacketIsSync(dstr.vpkt.vasd.text)) - printf(" "); - printf("\n"); - } - } + SMODEM frame; // destination frame.start = FRAME_START; if (58 == len) { // write a Header packet + superframe.empty(); frame.length = 44U; frame.type = TYPE_HEADER; memcpy(frame.header.flag, dstr.vpkt.hdr.flag, 3); @@ -609,12 +602,14 @@ bool CQnetModem::ProcessGateway(const int len, const unsigned char *raw) queue.push(CFrame(&frame.start)); PacketWait.start(); g2_is_active = true; - if (LOG_QSO && ! LOG_DEBUG) + if (LOG_QSO) printf("Queued to %s flags=%02x:%02x:%02x ur=%.8s r1=%.8s r2=%.8s my=%.8s/%.4s\n", MODEM_DEVICE.c_str(), frame.header.flag[0], frame.header.flag[1], frame.header.flag[2], frame.header.ur, frame.header.r1, frame.header.r2, frame.header.my, frame.header.nm); } else { // write a voice data packet if (g2_is_active) { //const unsigned char sdsync[3] = { 0x55U, 0x2DU, 0x16U }; if (dstr.vpkt.ctrl & 0x40U) { + if (LOG_DEBUG && superframe.size()) + printf("Final frame order: %s\n", superframe.c_str()); frame.length = 3U; frame.type = TYPE_EOT; g2_is_active = false; @@ -624,6 +619,18 @@ bool CQnetModem::ProcessGateway(const int len, const unsigned char *raw) frame.length = 15U; frame.type = TYPE_DATA; memcpy(frame.voice.ambe, dstr.vpkt.vasd.voice, 12); + if (LOG_DEBUG) { + if (VoicePacketIsSync(dstr.vpkt.vasd.text)) { + if (0 == superframe.size()) { + printf("There were no previous voice frames.\n"); + } else if (superframe.size() > 65) { + printf("Frame order: %s\n", superframe.c_str()); + superframe.empty(); + } + superframe.append(1, '#'); + } else + superframe.append(1, (dstr.vpkt.ctrl<26U) ? 'A' + dstr.vpkt.ctrl : ((dstr.vpkt.ctrl<52) ? 'a' + (dstr.vpkt.ctrl-26U) : '*')); + } } queue.push(CFrame(&frame.start)); PacketWait.start(); @@ -642,32 +649,8 @@ bool CQnetModem::ProcessModem(const SMODEM &frame) static bool first_voice_packet = false; static short stream_id = 0U; static unsigned char ctrl = 0U; + static unsigned int super_frame_count = 0U; - if (LOG_DEBUG) { - switch (frame.type) { - case TYPE_HEADER: - printf("Header from modem: %.36s\n", frame.header.flag+3); - break; - case TYPE_DATA: - printf("Data from modem: text is %02X:%02X:%02X", frame.voice.text[0], frame.voice.text[1], frame.voice.text[2]); - if (VoicePacketIsSync(frame.voice.text)) - printf(" "); - printf("\n"); - break; - case TYPE_EOT: - printf("EOT From modem\n"); - break; - case TYPE_LOST: - printf("Lost Transmission from modem\n"); - break; - default: - printf("Other packet from modem: %02X", frame.start); - for (unsigned int i=0; i