From b2ccd3a8786299e9d509c0be3b4d27bda209b7cb Mon Sep 17 00:00:00 2001 From: lwvmobile Date: Mon, 9 Jan 2023 19:35:03 -0500 Subject: [PATCH] DMR Cap+ Rest Channel FLCO/SLCO Fix; --- src/dmr_csbk.c | 2 +- src/dmr_flco.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/dmr_csbk.c b/src/dmr_csbk.c index 2128dd9..9333521 100644 --- a/src/dmr_csbk.c +++ b/src/dmr_csbk.c @@ -655,7 +655,7 @@ void dmr_cspdu (dsd_opts * opts, dsd_state * state, uint8_t cs_pdu_bits[], uint8 fprintf (stderr, "%s", KYEL); uint8_t fl = (uint8_t)ConvertBitIntoBytes(&cs_pdu_bits[16], 2); uint8_t slot = cs_pdu_bits[18]; - uint8_t rest_channel = cs_pdu[2] & 0xF; //0xF, or 0x1F? + uint8_t rest_channel = cs_pdu[2] & 0xF; //0xF, this one was correct, but other two had 8 bits? uint8_t ch[8]; //one bit per channel uint8_t tg = 0; uint32_t tghex = 0; //combined all tgs for debug diff --git a/src/dmr_flco.c b/src/dmr_flco.c index 99e714b..49c44bc 100644 --- a/src/dmr_flco.c +++ b/src/dmr_flco.c @@ -25,6 +25,7 @@ void dmr_flco (dsd_opts * opts, dsd_state * state, uint8_t lc_bits[], uint32_t C uint8_t so = 0; uint32_t target = 0; uint32_t source = 0; + uint8_t capsite = 0; int restchannel = -1; int is_cap_plus = 0; int is_alias = 0; @@ -44,7 +45,8 @@ void dmr_flco (dsd_opts * opts, dsd_state * state, uint8_t lc_bits[], uint32_t C if (type == 1 && fid == 0x10 && flco == 0x04) { is_cap_plus = 1; - restchannel = (int)ConvertBitIntoBytes(&lc_bits[48], 8); + capsite = (uint8_t)ConvertBitIntoBytes(&lc_bits[48], 4); //can't verify, just speculating + restchannel = (int)ConvertBitIntoBytes(&lc_bits[52], 4); //was 48,8 source = (uint32_t)ConvertBitIntoBytes(&lc_bits[56], 16); sprintf (state->dmr_branding, "%s", "Motorola"); sprintf (state->dmr_branding_sub, "%s", "Cap+ "); @@ -553,7 +555,8 @@ void dmr_slco (dsd_opts * opts, dsd_state * state, uint8_t slco_bits[]) uint8_t con_netid = (uint8_t)ConvertBitIntoBytes(&slco_bits[8], 8); uint8_t con_siteid = (uint8_t)ConvertBitIntoBytes(&slco_bits[16], 8); //Cap+ - uint8_t restchannel = (uint8_t)ConvertBitIntoBytes(&slco_bits[12], 8); + uint8_t capsite = (uint8_t)ConvertBitIntoBytes(&slco_bits[12], 4); //can't verify, just speculating + uint8_t restchannel = (uint8_t)ConvertBitIntoBytes(&slco_bits[16], 4); //was 12,8 //initial line break fprintf (stderr, "\n");