diff --git a/QnetDVAP.cpp b/QnetDVAP.cpp index 57c7266..e202bb8 100644 --- a/QnetDVAP.cpp +++ b/QnetDVAP.cpp @@ -401,6 +401,13 @@ static void readFrom20000() continue; } + if ('G' == net_buf.vpkt.hdr.r1[7]) { + unsigned char tmp[8]; + memcpy(tmp, net_buf.vpkt.hdr.r1, 8); + memcpy(net_buf.vpkt.hdr.r1, net_buf.vpkt.hdr.r2, 8); + memcpy(net_buf.vpkt.hdr.r2, tmp, 8); + } + /* check the module and gateway */ if (net_buf.vpkt.hdr.r1[7] != RPTR_MOD) { FD_CLR(insock, &readfd); @@ -768,11 +775,11 @@ static void RptrAckThread(SDVAP_ACK_ARG *parg) dr.frame.seq = 0; dr.frame.hdr.flag[0] = 0x01; dr.frame.hdr.flag[1] = dr.frame.hdr.flag[2] = 0x00; - memcpy(dr.frame.hdr.rpt1, RPTR_and_MOD, 8); - memcpy(dr.frame.hdr.rpt2, RPTR_and_G, 8); + memcpy(dr.frame.hdr.rpt2, RPTR_and_MOD, 8); + memcpy(dr.frame.hdr.rpt1, RPTR_and_G, 8); memcpy(dr.frame.hdr.urcall, mycall, 8); memcpy(dr.frame.hdr.mycall, RPTR_and_MOD, 8); - memcpy(dr.frame.hdr.sfx, (unsigned char *)" ", 4); + memcpy(dr.frame.hdr.sfx, (unsigned char *)"DVAP", 4); calcPFCS(dr.frame.hdr.flag, dr.frame.hdr.pfcs); dongle.SendRegister(dr); std::this_thread::sleep_for(std::chrono::milliseconds(DELAY_BETWEEN)); diff --git a/QnetRelay.cpp b/QnetRelay.cpp index 17705cc..16de12e 100644 --- a/QnetRelay.cpp +++ b/QnetRelay.cpp @@ -327,15 +327,14 @@ bool CQnetRelay::ProcessMMDVM(const int len, const unsigned char *raw) return true; } if (log_qso) - printf("Sent DSTR to %u, streamid=%04x ur=%.8s r1=%.8s r2=%.8s my=%.8s/%.4s\n", G2_IN_PORT, ntohs(dstr.vpkt.streamid), - dstr.vpkt.hdr.ur, dstr.vpkt.hdr.r1, dstr.vpkt.hdr.r2, dstr.vpkt.hdr.my, dstr.vpkt.hdr.nm); + printf("Sent DSTR to %u, streamid=%04x ur=%.8s r1=%.8s r2=%.8s my=%.8s/%.4s\n", G2_IN_PORT, ntohs(dstr.vpkt.streamid), dstr.vpkt.hdr.ur, dstr.vpkt.hdr.r1, dstr.vpkt.hdr.r2, dstr.vpkt.hdr.my, dstr.vpkt.hdr.nm); } else if (21 == len) { // ambe dstr.remaining = 0x16; dstr.vpkt.ctrl = dsrp.header.seq; memcpy(dstr.vpkt.vasd.voice, dsrp.voice.ambe, 12); int ret = SendTo(msock, dstr.pkt_id, 29, G2_INTERNAL_IP, G2_IN_PORT); if (log_qso && dstr.vpkt.ctrl&0x40) - printf("Sent dstr end of streamid=%04x\n", ntohs(dstr.vpkt.streamid)); + printf("Sent DSTR end of streamid=%04x\n", ntohs(dstr.vpkt.streamid)); if (ret != 29) { printf("ERROR: ProcessMMDVM: Could not write gateway voice packet\n");