|
|
|
|
@ -1552,7 +1552,7 @@ void CQnetGateway::process()
|
|
|
|
|
band_txt[i].num_dv_silent_frames = 0;
|
|
|
|
|
band_txt[i].num_bit_errors = 0;
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
} else { // not the end of the voice stream
|
|
|
|
|
int ber_data[3];
|
|
|
|
|
int ber_errs = dstar_dv_decode(rptrbuf.vpkt.vasd.voice, ber_data);
|
|
|
|
|
if (ber_data[0] == 0xf85)
|
|
|
|
|
@ -1560,6 +1560,9 @@ void CQnetGateway::process()
|
|
|
|
|
band_txt[i].num_bit_errors += ber_errs;
|
|
|
|
|
band_txt[i].num_dv_frames++;
|
|
|
|
|
|
|
|
|
|
if (bool_dtmf_debug)
|
|
|
|
|
printf("ber_data = %X %X %X, ber_data[0] & 0xffc = %X\n",
|
|
|
|
|
ber_data[0], ber_data[1], ber_data[2], ber_data[0] & 0xffc);
|
|
|
|
|
if ((ber_data[0] & 0x0ffc) == 0xfc0) {
|
|
|
|
|
dtmf_digit = (ber_data[0] & 0x03) | ((ber_data[2] & 0x60) >> 3);
|
|
|
|
|
if (dtmf_counter[i] > 0) {
|
|
|
|
|
@ -1576,7 +1579,8 @@ void CQnetGateway::process()
|
|
|
|
|
dtmf_buf_count[i] ++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
const unsigned char silence[9] = { 0x4e,0x8d,0x32,0x88,0x26,0x1a,0x3f,0x61,0xe8 };
|
|
|
|
|
// const unsigned char silence[9] = { 0x4e, 0x8d, 0x32, 0x88, 0x26, 0x1a, 0x3f, 0x61, 0xe8 };
|
|
|
|
|
const unsigned char silence[9] = { 0x9E, 0x8D, 0x32, 0x88, 0x26, 0x1A, 0x3F, 0x61, 0xE8 };
|
|
|
|
|
memcpy(rptrbuf.vpkt.vasd.voice, silence, 9);
|
|
|
|
|
} else
|
|
|
|
|
dtmf_counter[i] = 0;
|
|
|
|
|
|