Update Readme
Update Readme; Minor Bug Fix. Update dmr_so and dmr_soR in the Voice LC Header.
This commit is contained in:
parent
11b353089b
commit
6043b14c13
|
|
@ -13,7 +13,7 @@ To get started with the new menu system, simply launch with:
|
|||
|
||||
Virtually all the examples listed below can now be set up on the fly with the menu system, no need to check the help or refer to this page.
|
||||
|
||||
This release also has provisional support for playing back OP25 capture bin files, and the creation and playback of its own capture bin files as well (most likely not OP25 compatible). Mileage may vary. Be sure to choose the decoder option required when playing a bin file back, do not rely on auto-detect. Capture Bin files can be used to reliably replay P25, DMR, and NXDN decodings, and can replace the need for MBE file saving in the case of DMR Stereo, allowing for a complete replay of all events on a system, rather than just voice only.
|
||||
This release also has provisional support for playing back OP25 capture bin files, and the creation and playback of its own capture bin files as well (most likely not OP25 compatible). Mileage may vary. Be sure to choose the decoder option required when playing a bin file back, do not rely on auto-detect. Capture Bin files can be used to reliably replay P25, DMR BS, and NXDN decodings, and can replace the need for MBE file saving in the case of DMR Stereo, allowing for a complete replay of all events on a system, rather than just voice only.
|
||||
|
||||
Per Call wav file creation has been implemented, currently only for DMR Stereo. Complete audio decode wav is available for all over decoder types. LRRP has been revamped, working more consistently, and an option to dump LRRP data to ~/lrrp.txt in the user home directory now exists, and can be imported into open-source QGIS to provide mapping data for LRRP output. Simply open the newly included map file in QGIS and point it at your geographic region. (Be sure the lrrp.txt file exists, and has data populated in it prior to opening the map file in QGIS, otherwise, the map layer may not want to show back up!)
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ char * getDateL(void) {
|
|||
return curr2;
|
||||
}
|
||||
|
||||
//Trellis Decoding still needs work, so be surprised by bad decodes
|
||||
//Trellis Decoding still needs work, so don't be surprised by bad decodes
|
||||
void Process34Data(dsd_opts * opts, dsd_state * state, unsigned char tdibits[98], uint8_t syncdata[48], uint8_t SlotType[20])
|
||||
{
|
||||
|
||||
|
|
@ -1029,8 +1029,6 @@ void ProcessUnifiedData(dsd_opts * opts, dsd_state * state, uint8_t info[196], u
|
|||
CRCExtracted = CRCExtracted | (uint32_t)(DmrDataBit[i + 80] & 1);
|
||||
}
|
||||
|
||||
//Look into whether or not we need to run these CRC checks for this header information
|
||||
//and see if its applied the same or differently
|
||||
/* Apply the CRC mask (see DMR standard B.3.12 Data Type CRC Mask) */
|
||||
CRCExtracted = CRCExtracted ^ 0x3333;
|
||||
|
||||
|
|
@ -1464,8 +1462,6 @@ void ProcessCSBK(dsd_opts * opts, dsd_state * state, uint8_t info[196], uint8_t
|
|||
CRCExtracted = CRCExtracted | (uint32_t)(DmrDataBit[i + 80] & 1); //80-96 for PI header
|
||||
}
|
||||
|
||||
//Look into whether or not we need to run these CRC checks for this header information
|
||||
//and see if its applied the same or differently
|
||||
/* Apply the CRC mask (see DMR standard B.3.12 Data Type CRC Mask) */
|
||||
//CRCExtracted = CRCExtracted ^ 0x969696; //does this mask get applied here though for PI?
|
||||
CRCExtracted = CRCExtracted ^ 0xA5A5;
|
||||
|
|
@ -1761,8 +1757,6 @@ void ProcessDmrPIHeader(dsd_opts * opts, dsd_state * state, uint8_t info[196], u
|
|||
CRCExtracted = CRCExtracted | (uint32_t)(DmrDataBit[i + 80] & 1); //80-96 for PI header
|
||||
}
|
||||
|
||||
//Look into whether or not we need to run these CRC checks for this header information
|
||||
//and see if its applied the same or differently
|
||||
/* Apply the CRC mask (see DMR standard B.3.12 Data Type CRC Mask) */
|
||||
//CRCExtracted = CRCExtracted ^ 0x969696; //does this mask get applied here though for PI?
|
||||
CRCExtracted = CRCExtracted ^ 0x6969;
|
||||
|
|
@ -1965,6 +1959,26 @@ void ProcessDmrVoiceLcHeader(dsd_opts * opts, dsd_state * state, uint8_t info[19
|
|||
{
|
||||
/* CRC is correct so consider the Full LC data as correct/valid */
|
||||
TSVoiceSupFrame->FullLC.DataValidity = 1;
|
||||
if (state->currentslot == 0)
|
||||
{
|
||||
state->dmr_so = TSVoiceSupFrame->FullLC.ServiceOptions;
|
||||
}
|
||||
if (state->currentslot == 1)
|
||||
{
|
||||
state->dmr_soR = TSVoiceSupFrame->FullLC.ServiceOptions;
|
||||
}
|
||||
}
|
||||
else if(IrrecoverableErrors == 0)
|
||||
{
|
||||
//FEC okay? Set SVCop code anyways
|
||||
if (state->currentslot == 0)
|
||||
{
|
||||
state->dmr_so = TSVoiceSupFrame->FullLC.ServiceOptions;
|
||||
}
|
||||
if (state->currentslot == 1)
|
||||
{
|
||||
state->dmr_soR = TSVoiceSupFrame->FullLC.ServiceOptions;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -180,8 +180,8 @@ noCarrier (dsd_opts * opts, dsd_state * state)
|
|||
state->data_p_head[0] = 0;
|
||||
state->data_p_head[1] = 0;
|
||||
|
||||
state->dmr_so = 0;
|
||||
state->dmr_soR = 0;
|
||||
// state->dmr_so = 0; //let TLC or Voice Burst zero or set this instead?
|
||||
// state->dmr_soR = 0;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue