DMR Cap+ Block Counter Fix; #126
This commit is contained in:
parent
fc01712132
commit
f5e3c6eddd
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue