recbuf in g2_ircddb.cpp is now SDSVT struct

pull/1/head
Tom Early 9 years ago
parent cacb0cf2cd
commit 137a95e80f

@ -145,7 +145,7 @@ SRPTR rptr;
// This is for echotest and voicemail // This is for echotest and voicemail
static SECHO recd[3], vm[3]; static SECHO recd[3], vm[3];
static unsigned char recbuf[100]; // 56 or 27, max is 56 SDSVT recbuf; // 56 or 27, max is 56
// the streamids going to remote Gateways from each local module // the streamids going to remote Gateways from each local module
static STOREMOTEG2 to_remote_g2[3]; // 0=A, 1=B, 2=C static STOREMOTEG2 to_remote_g2[3]; // 0=A, 1=B, 2=C
@ -1524,31 +1524,29 @@ static void runit()
time(&vm[i].last_time); time(&vm[i].last_time);
memcpy(&vm[i].streamid, readBuffer + 14, 2); memcpy(&vm[i].streamid, readBuffer + 14, 2);
memcpy(recbuf, "DSVT", 4); memcpy(recbuf.title, "DSVT", 4);
recbuf[4] = 0x10; recbuf.config = 0x10;
recbuf[5] = 0x00; for (int k=0; k<3; k++) {
recbuf[6] = 0x00; recbuf.flaga[k] = 0;
recbuf[7] = 0x00; recbuf.flagb[k] = readBuffer[k+11];
recbuf[8] = readBuffer[10]; }
recbuf[9] = readBuffer[11]; recbuf.id = readBuffer[10];
recbuf[10] = readBuffer[12]; memcpy(&recbuf.streamid, readBuffer + 14, 44);
recbuf[11] = readBuffer[13]; memset(recbuf.hdr.rpt1, ' ', 8);
memcpy(recbuf + 12, readBuffer + 14, 44); memcpy(recbuf.hdr.rpt1, OWNER.c_str(), OWNER.length());
memset(recbuf + 18, ' ', CALL_SIZE); recbuf.hdr.rpt1[7] = readBuffer[35];
memcpy(recbuf + 18, OWNER.c_str(), OWNER.length()); memset(recbuf.hdr.rpt2, ' ', 8);
recbuf[25] = readBuffer[35]; memcpy(recbuf.hdr.rpt2, OWNER.c_str(), OWNER.length());
memset(recbuf + 26, ' ', CALL_SIZE); recbuf.hdr.rpt2[7] = 'G';
memcpy(recbuf + 26, OWNER.c_str(), OWNER.length()); memcpy(recbuf.hdr.urcall, "CQCQCQ ", 8);
recbuf[33] = 'G';
memcpy(recbuf + 34, "CQCQCQ ", 8); calcPFCS(recbuf.title, 56);
calcPFCS(recbuf,56);
rec_len = 56; rec_len = 56;
(void)write(vm[i].fd, "DVTOOL", 6); (void)write(vm[i].fd, "DVTOOL", 6);
(void)write(vm[i].fd, &num_recs, 4); (void)write(vm[i].fd, &num_recs, 4);
(void)write(vm[i].fd, &rec_len, 2); (void)write(vm[i].fd, &rec_len, 2);
(void)write(vm[i].fd, (char *)recbuf, rec_len); (void)write(vm[i].fd, &recbuf, rec_len);
} }
} }
} }
@ -1580,31 +1578,29 @@ static void runit()
time(&recd[i].last_time); time(&recd[i].last_time);
memcpy(&recd[i].streamid, readBuffer + 14, 2); memcpy(&recd[i].streamid, readBuffer + 14, 2);
memcpy(recbuf, "DSVT", 4); memcpy(recbuf.title, "DSVT", 4);
recbuf[4] = 0x10; recbuf.config = 0x10;
recbuf[5] = 0x00; for (int k=0; k<3; k++) {
recbuf[6] = 0x00; recbuf.flaga[k] = 0;
recbuf[7] = 0x00; recbuf.flagb[k] = readBuffer[k+11];
recbuf[8] = readBuffer[10]; }
recbuf[9] = readBuffer[11]; recbuf.id = readBuffer[10];
recbuf[10] = readBuffer[12]; memcpy(&recbuf.streamid, readBuffer + 14, 44);
recbuf[11] = readBuffer[13]; memset(recbuf.hdr.rpt1, ' ', 8);
memcpy(recbuf + 12, readBuffer + 14, 44); memcpy(recbuf.hdr.rpt1, OWNER.c_str(), OWNER.length());
memset(recbuf + 18, ' ', CALL_SIZE); recbuf.hdr.rpt1[7] = readBuffer[35];
memcpy(recbuf + 18, OWNER.c_str(), OWNER.length()); memset(recbuf.hdr.rpt2, ' ', 8);
recbuf[25] = readBuffer[35]; memcpy(recbuf.hdr.rpt2, OWNER.c_str(), OWNER.length());
memset(recbuf + 26, ' ', CALL_SIZE); recbuf.hdr.rpt2[7] = 'G';
memcpy(recbuf + 26, OWNER.c_str(), OWNER.length()); memcpy(recbuf.hdr.urcall, "CQCQCQ ", 8);
recbuf[33] = 'G';
memcpy(recbuf + 34, "CQCQCQ ", 8); calcPFCS(recbuf.title, 56);
calcPFCS(recbuf,56);
rec_len = 56; rec_len = 56;
(void)write(recd[i].fd, "DVTOOL", 6); (void)write(recd[i].fd, "DVTOOL", 6);
(void)write(recd[i].fd, &num_recs, 4); (void)write(recd[i].fd, &num_recs, 4);
(void)write(recd[i].fd, &rec_len, 2); (void)write(recd[i].fd, &rec_len, 2);
(void)write(recd[i].fd, (char *)recbuf, rec_len); (void)write(recd[i].fd, &recbuf, rec_len);
} }
} }
} }
@ -2115,24 +2111,22 @@ static void runit()
if (recd[i].fd>=0 && 0==memcmp(&recd[i].streamid, readBuffer + 14, 2)) { if (recd[i].fd>=0 && 0==memcmp(&recd[i].streamid, readBuffer + 14, 2)) {
time(&recd[i].last_time); time(&recd[i].last_time);
memcpy(recbuf, "DSVT", 4); memcpy(recbuf.title, "DSVT", 4);
recbuf[4] = 0x20; recbuf.config = 0x20;
recbuf[5] = 0x00; for (int k=0; k<3; k++) {
recbuf[6] = 0x00; recbuf.flaga[k] = 0;
recbuf[7] = 0x00; recbuf.flagb[k] = readBuffer[k+11];
recbuf[8] = readBuffer[10]; }
recbuf[9] = readBuffer[11]; recbuf.id = readBuffer[10];
recbuf[10] = readBuffer[12]; memcpy(&recbuf.streamid, readBuffer + 14, 3);
recbuf[11] = readBuffer[13];
memcpy(recbuf + 12, readBuffer + 14, 3);
if (recvlen == 29) if (recvlen == 29)
memcpy(recbuf + 15, readBuffer + 17, 12); memcpy(recbuf.vasd.voice, readBuffer + 17, 12);
else else
memcpy(recbuf + 15, readBuffer + 20, 12); memcpy(recbuf.vasd.voice, readBuffer + 20, 12);
rec_len = 27; rec_len = 27;
(void)write(recd[i].fd, &rec_len, 2); (void)write(recd[i].fd, &rec_len, 2);
(void)write(recd[i].fd, (char *)recbuf, rec_len); (void)write(recd[i].fd, &recbuf, rec_len);
if ((readBuffer[16] & 0x40) != 0) { if ((readBuffer[16] & 0x40) != 0) {
recd[i].streamid = 0; recd[i].streamid = 0;
@ -2158,24 +2152,22 @@ static void runit()
(memcmp(&vm[i].streamid, readBuffer + 14, 2) == 0)) { (memcmp(&vm[i].streamid, readBuffer + 14, 2) == 0)) {
time(&vm[i].last_time); time(&vm[i].last_time);
memcpy(recbuf, "DSVT", 4); memcpy(recbuf.title, "DSVT", 4);
recbuf[4] = 0x20; recbuf.config = 0x20;
recbuf[5] = 0x00; for (int k=0; k<3; k++) {
recbuf[6] = 0x00; recbuf.flaga[k] = 0;
recbuf[7] = 0x00; recbuf.flagb[k] = readBuffer[k+11];
recbuf[8] = readBuffer[10]; }
recbuf[9] = readBuffer[11]; recbuf.id = readBuffer[10];
recbuf[10] = readBuffer[12]; memcpy(&recbuf.streamid, readBuffer + 14, 3);
recbuf[11] = readBuffer[13];
memcpy(recbuf + 12, readBuffer + 14, 3);
if (recvlen == 29) if (recvlen == 29)
memcpy(recbuf + 15, readBuffer + 17, 12); memcpy(recbuf.vasd.voice, readBuffer + 17, 12);
else else
memcpy(recbuf + 15, readBuffer + 20, 12); memcpy(recbuf.vasd.voice, readBuffer + 20, 12);
rec_len = 27; rec_len = 27;
(void)write(vm[i].fd, &rec_len, 2); (void)write(vm[i].fd, &rec_len, 2);
(void)write(vm[i].fd, (char *)recbuf, rec_len); (void)write(vm[i].fd, &recbuf, rec_len);
if ((readBuffer[16] & 0x40) != 0) { if ((readBuffer[16] & 0x40) != 0) {
vm[i].streamid = 0; vm[i].streamid = 0;

@ -59,3 +59,29 @@ typedef struct pkt_tag {
} SPKT; } SPKT;
#pragma pack(pop) #pragma pack(pop)
#pragma pack(push, 1)
typedef struct dsvt_tag {
unsigned char title[4]; // "DSVT"
unsigned char config; // 0x10 is hdr 0x20 is vasd
unsigned char flaga[3]; // zeros
unsigned char id; // 0x20
unsigned char flagb[3]; // 0x0 0x1 0x1
unsigned short streamid;
unsigned char counter; // hdr: 0x80 vsad: framecounter (mod 21)
union {
struct {
unsigned char flag[3];
unsigned char rpt1[8];
unsigned char rpt2[8];
unsigned char urcall[8];
unsigned char mycall[8];
unsigned char sfx[4];
unsigned char pfcs[2];
} hdr;
struct {
unsigned char voice[9];
unsigned char text[3];
} vasd;
};
} SDSVT;
#pragma pack(pop)

Loading…
Cancel
Save

Powered by TurnKey Linux.