DVAP incoming G2 header r1, r2

lastudp
Tom Early 7 years ago
parent b1618607ee
commit f52bc87c4d

@ -401,6 +401,13 @@ static void readFrom20000()
continue; 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 */ /* check the module and gateway */
if (net_buf.vpkt.hdr.r1[7] != RPTR_MOD) { if (net_buf.vpkt.hdr.r1[7] != RPTR_MOD) {
FD_CLR(insock, &readfd); FD_CLR(insock, &readfd);
@ -768,11 +775,11 @@ static void RptrAckThread(SDVAP_ACK_ARG *parg)
dr.frame.seq = 0; dr.frame.seq = 0;
dr.frame.hdr.flag[0] = 0x01; dr.frame.hdr.flag[0] = 0x01;
dr.frame.hdr.flag[1] = dr.frame.hdr.flag[2] = 0x00; 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_MOD, 8);
memcpy(dr.frame.hdr.rpt2, RPTR_and_G, 8); memcpy(dr.frame.hdr.rpt1, RPTR_and_G, 8);
memcpy(dr.frame.hdr.urcall, mycall, 8); memcpy(dr.frame.hdr.urcall, mycall, 8);
memcpy(dr.frame.hdr.mycall, RPTR_and_MOD, 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); calcPFCS(dr.frame.hdr.flag, dr.frame.hdr.pfcs);
dongle.SendRegister(dr); dongle.SendRegister(dr);
std::this_thread::sleep_for(std::chrono::milliseconds(DELAY_BETWEEN)); std::this_thread::sleep_for(std::chrono::milliseconds(DELAY_BETWEEN));

@ -327,15 +327,14 @@ bool CQnetRelay::ProcessMMDVM(const int len, const unsigned char *raw)
return true; return true;
} }
if (log_qso) 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), 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);
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 } else if (21 == len) { // ambe
dstr.remaining = 0x16; dstr.remaining = 0x16;
dstr.vpkt.ctrl = dsrp.header.seq; dstr.vpkt.ctrl = dsrp.header.seq;
memcpy(dstr.vpkt.vasd.voice, dsrp.voice.ambe, 12); memcpy(dstr.vpkt.vasd.voice, dsrp.voice.ambe, 12);
int ret = SendTo(msock, dstr.pkt_id, 29, G2_INTERNAL_IP, G2_IN_PORT); int ret = SendTo(msock, dstr.pkt_id, 29, G2_INTERNAL_IP, G2_IN_PORT);
if (log_qso && dstr.vpkt.ctrl&0x40) 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) { if (ret != 29) {
printf("ERROR: ProcessMMDVM: Could not write gateway voice packet\n"); printf("ERROR: ProcessMMDVM: Could not write gateway voice packet\n");

Loading…
Cancel
Save

Powered by TurnKey Linux.