DMR Voice LC Header Fix

DMR Voice LC Header Fix
--Fix Voice LC Header to assign SRC and TGT values, mask if Cap+ system detected to prevent erroneous values
--Optimization for FID and SVC options, don't reset on carrier signal drop or TLC
This commit is contained in:
lwvmobile 2022-08-23 23:31:34 -04:00 committed by GitHub
parent f61c59ccc0
commit 2f05bfacfa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 12 deletions

View File

@ -1942,6 +1942,11 @@ void ProcessDmrVoiceLcHeader(dsd_opts * opts, dsd_state * state, uint8_t info[19
/* Store the Source address */
TSVoiceSupFrame->FullLC.SourceAddress = (unsigned int)ConvertBitIntoBytes(&DmrDataBit[48], 24);
//truncate if Byte 0 isn't 0, 0x04 (or other) may signify a Cap+ System
if (DmrDataByte != 0x0)
{
TSVoiceSupFrame->FullLC.SourceAddress = TSVoiceSupFrame->FullLC.SourceAddress & 0xFFFF;
}
if((IrrecoverableErrors == 0) && CRCCorrect)
{
@ -1951,15 +1956,16 @@ void ProcessDmrVoiceLcHeader(dsd_opts * opts, dsd_state * state, uint8_t info[19
{
state->dmr_fid = TSVoiceSupFrame->FullLC.FeatureSetID;
state->dmr_so = TSVoiceSupFrame->FullLC.ServiceOptions;
//state->lasttg = TSVoiceSupFrame->FullLC.GroupAddress;
//state->lastsrc = TSVoiceSupFrame->FullLC.SourceAddress; //disabled for now, Cap+ and other systems cause issues with these values
state->lasttg = TSVoiceSupFrame->FullLC.GroupAddress;
state->lastsrc = TSVoiceSupFrame->FullLC.SourceAddress; //disabled for now, Cap+ and other systems cause issues with these values
}
if (state->currentslot == 1)
{
state->dmr_fidR = TSVoiceSupFrame->FullLC.FeatureSetID;
state->dmr_soR = TSVoiceSupFrame->FullLC.ServiceOptions;
//state->lasttgR = TSVoiceSupFrame->FullLC.GroupAddress;
//state->lastsrcR = TSVoiceSupFrame->FullLC.SourceAddress;
state->lasttgR = TSVoiceSupFrame->FullLC.GroupAddress;
state->lastsrcR = TSVoiceSupFrame->FullLC.SourceAddress;
}
}
else if(IrrecoverableErrors == 0)
@ -1970,15 +1976,15 @@ void ProcessDmrVoiceLcHeader(dsd_opts * opts, dsd_state * state, uint8_t info[19
{
state->dmr_fid = TSVoiceSupFrame->FullLC.FeatureSetID;
state->dmr_so = TSVoiceSupFrame->FullLC.ServiceOptions;
//state->lasttg = TSVoiceSupFrame->FullLC.GroupAddress;
//state->lastsrc = TSVoiceSupFrame->FullLC.SourceAddress;
state->lasttg = TSVoiceSupFrame->FullLC.GroupAddress;
state->lastsrc = TSVoiceSupFrame->FullLC.SourceAddress;
}
if (state->currentslot == 1)
{
state->dmr_fidR = TSVoiceSupFrame->FullLC.FeatureSetID;
state->dmr_soR = TSVoiceSupFrame->FullLC.ServiceOptions;
//state->lasttgR = TSVoiceSupFrame->FullLC.GroupAddress;
//state->lastsrcR = TSVoiceSupFrame->FullLC.SourceAddress;
state->lasttgR = TSVoiceSupFrame->FullLC.GroupAddress;
state->lastsrcR = TSVoiceSupFrame->FullLC.SourceAddress;
}
}
else

View File

@ -144,10 +144,10 @@ noCarrier (dsd_opts * opts, dsd_state * state)
state->payload_keyid = 0;
state->payload_keyidR = 0;
state->dmr_fid = 0;
state->dmr_so = 0;
state->dmr_fidR = 0;
state->dmr_soR = 0;
// state->dmr_fid = 0;
// state->dmr_so = 0;
// state->dmr_fidR = 0;
// state->dmr_soR = 0;
state->HYTL = 0;
state->HYTR = 0;