DMR Cap+ Block Counter Fix; #126

This commit is contained in:
lwvmobile 2023-05-15 03:00:21 -04:00
parent fc01712132
commit f5e3c6eddd
6 changed files with 11 additions and 10 deletions

View File

@ -555,7 +555,7 @@ typedef struct
uint8_t data_conf_data[2]; //flag for confirmed data blocks per slot uint8_t data_conf_data[2]; //flag for confirmed data blocks per slot
uint8_t dmr_pdu_sf[2][288]; //unified pdu 'superframe' //[slot][byte] uint8_t dmr_pdu_sf[2][288]; //unified pdu 'superframe' //[slot][byte]
uint8_t cap_plus_csbk_bits[2][12*8*8]; //CSBK Cap+ FL initial and appended block bit storage, by slot uint8_t cap_plus_csbk_bits[2][12*8*8]; //CSBK Cap+ FL initial and appended block bit storage, by slot
uint8_t cap_plus_block_num; //received block number storage uint8_t cap_plus_block_num[2]; //received block number storage -- per timeslot
uint8_t data_block_crc_valid[2][25]; //flag each individual block as good crc on confirmed data uint8_t data_block_crc_valid[2][25]; //flag each individual block as good crc on confirmed data
char dmr_embedded_signalling[2][7][48]; //embedded signalling 2 slots by 6 vc by 48 bits (replacing TS1SuperFrame.TimeSlotRawVoiceFrame.Sync structure) char dmr_embedded_signalling[2][7][48]; //embedded signalling 2 slots by 6 vc by 48 bits (replacing TS1SuperFrame.TimeSlotRawVoiceFrame.Sync structure)

View File

@ -773,6 +773,7 @@ void dmr_reset_blocks (dsd_opts * opts, dsd_state * state)
memset (state->dmr_lrrp_source, 0, sizeof(state->dmr_lrrp_source)); memset (state->dmr_lrrp_source, 0, sizeof(state->dmr_lrrp_source));
memset (state->dmr_cach_fragment, 1, sizeof (state->dmr_cach_fragment)); memset (state->dmr_cach_fragment, 1, sizeof (state->dmr_cach_fragment));
memset (state->cap_plus_csbk_bits, 0, sizeof(state->cap_plus_csbk_bits)); memset (state->cap_plus_csbk_bits, 0, sizeof(state->cap_plus_csbk_bits));
memset (state->cap_plus_block_num, 0, sizeof(state->cap_plus_block_num));
memset (state->data_header_valid, 0, sizeof(state->data_header_valid)); memset (state->data_header_valid, 0, sizeof(state->data_header_valid));
memset (state->data_header_format, 7, sizeof(state->data_header_format)); memset (state->data_header_format, 7, sizeof(state->data_header_format));
//reset some strings //reset some strings

View File

@ -762,7 +762,7 @@ void dmr_cspdu (dsd_opts * opts, dsd_state * state, uint8_t cs_pdu_bits[], uint8
uint8_t bank_one = 0; uint8_t bank_one = 0;
uint8_t bank_two = 0; uint8_t bank_two = 0;
uint8_t b2_start = 0; uint8_t b2_start = 0;
uint8_t block_num = state->cap_plus_block_num; uint8_t block_num = state->cap_plus_block_num[ts];
uint8_t pdflag = 0; uint8_t pdflag = 0;
uint8_t pdflag2 = 0; uint8_t pdflag2 = 0;
uint16_t private_target = 0; uint16_t private_target = 0;
@ -781,7 +781,7 @@ void dmr_cspdu (dsd_opts * opts, dsd_state * state, uint8_t cs_pdu_bits[], uint8
//sanity check //sanity check
if (block_num > 6) if (block_num > 6)
{ {
state->cap_plus_block_num = 6; state->cap_plus_block_num[ts] = 6;
block_num = 6; block_num = 6;
} }
@ -796,13 +796,13 @@ void dmr_cspdu (dsd_opts * opts, dsd_state * state, uint8_t cs_pdu_bits[], uint8
//NOTE: this has been changed to store per slot //NOTE: this has been changed to store per slot
memset (state->cap_plus_csbk_bits[ts], 0, sizeof(state->cap_plus_csbk_bits[ts])); memset (state->cap_plus_csbk_bits[ts], 0, sizeof(state->cap_plus_csbk_bits[ts]));
for (i = 0; i < 10*8; i++) state->cap_plus_csbk_bits[ts][i] = cs_pdu_bits[i]; for (i = 0; i < 10*8; i++) state->cap_plus_csbk_bits[ts][i] = cs_pdu_bits[i];
state->cap_plus_block_num = 0; state->cap_plus_block_num[ts] = 0;
} }
else //appended block (fl 0) or final block (fl 1) else //appended block (fl 0) or final block (fl 1)
{ {
for (i = 0; i < 7*8; i++) state->cap_plus_csbk_bits[ts][i+80+(7*8*block_num)] = cs_pdu_bits[i+24]; for (i = 0; i < 7*8; i++) state->cap_plus_csbk_bits[ts][i+80+(7*8*block_num)] = cs_pdu_bits[i+24];
block_num++; block_num++;
state->cap_plus_block_num++; state->cap_plus_block_num[ts]++;
} }
if (rest_channel != state->dmr_rest_channel) if (rest_channel != state->dmr_rest_channel)
@ -1087,7 +1087,7 @@ void dmr_cspdu (dsd_opts * opts, dsd_state * state, uint8_t cs_pdu_bits[], uint8
fprintf (stderr, "%s", KNRM); fprintf (stderr, "%s", KNRM);
} }
memset (state->cap_plus_csbk_bits[ts], 0, sizeof(state->cap_plus_csbk_bits[ts])); memset (state->cap_plus_csbk_bits[ts], 0, sizeof(state->cap_plus_csbk_bits[ts]));
state->cap_plus_block_num = 0; state->cap_plus_block_num[ts] = 0;
} //if (fl == 1 || fl == 3) } //if (fl == 1 || fl == 3)
} //opcode == 0x3E } //opcode == 0x3E

View File

@ -370,7 +370,7 @@ noCarrier (dsd_opts * opts, dsd_state * state)
//initialize cap+ bits and block num storage //initialize cap+ bits and block num storage
memset (state->cap_plus_csbk_bits, 0, sizeof(state->cap_plus_csbk_bits)); memset (state->cap_plus_csbk_bits, 0, sizeof(state->cap_plus_csbk_bits));
state->cap_plus_block_num = 0; memset (state->cap_plus_block_num, 0, sizeof(state->cap_plus_block_num));
//init confirmed data individual block crc as invalid //init confirmed data individual block crc as invalid
memset (state->data_block_crc_valid, 0, sizeof(state->data_block_crc_valid)); memset (state->data_block_crc_valid, 0, sizeof(state->data_block_crc_valid));
@ -921,7 +921,7 @@ initState (dsd_state * state)
//initialize cap+ bits and block num storage //initialize cap+ bits and block num storage
memset (state->cap_plus_csbk_bits, 0, sizeof(state->cap_plus_csbk_bits)); memset (state->cap_plus_csbk_bits, 0, sizeof(state->cap_plus_csbk_bits));
state->cap_plus_block_num = 0; memset (state->cap_plus_block_num, 0, sizeof(state->cap_plus_block_num));
//init confirmed data individual block crc as invalid //init confirmed data individual block crc as invalid
memset (state->data_block_crc_valid, 0, sizeof(state->data_block_crc_valid)); memset (state->data_block_crc_valid, 0, sizeof(state->data_block_crc_valid));

View File

@ -1154,7 +1154,7 @@ void NXDN_decode_VCALL(dsd_opts * opts, dsd_state * state, uint8_t * Message)
// limazulu = limazulu & 0xFFFF; //make sure no larger than 16-bits // limazulu = limazulu & 0xFFFF; //make sure no larger than 16-bits
// fprintf (stderr, "%s", KCYN); // fprintf (stderr, "%s", KCYN);
// if (freq) fprintf (stderr, "\n Freq: %ld - Freq Hash: %0ld", freq, limazulu); // if (freq) fprintf (stderr, "\n Freq: %ld - Freq Hash: %d", freq, limazulu);
// if (state->rkey_array[limazulu] != 0) fprintf (stderr, " - Key Loaded: %lld", state->rkey_array[limazulu]); // if (state->rkey_array[limazulu] != 0) fprintf (stderr, " - Key Loaded: %lld", state->rkey_array[limazulu]);
// fprintf (stderr, "%s", KNRM); // fprintf (stderr, "%s", KNRM);

View File

@ -380,7 +380,7 @@ void nxdn_frame (dsd_opts * opts, dsd_state * state)
limazulu = limazulu & 0xFFFF; //make sure no larger than 16-bits limazulu = limazulu & 0xFFFF; //make sure no larger than 16-bits
fprintf (stderr, "%s", KYEL); fprintf (stderr, "%s", KYEL);
if (freq) fprintf (stderr, "\n Freq: %ld - Freq Hash: %0ld", freq, limazulu); if (freq) fprintf (stderr, "\n Freq: %ld - Freq Hash: %d", freq, limazulu);
if (state->rkey_array[limazulu] != 0) fprintf (stderr, " - Key Loaded: %lld", state->rkey_array[limazulu]); if (state->rkey_array[limazulu] != 0) fprintf (stderr, " - Key Loaded: %lld", state->rkey_array[limazulu]);
fprintf (stderr, "%s", KNRM); fprintf (stderr, "%s", KNRM);