From 7ca8cb421cb9ca28513923e75309ea74be70b1d9 Mon Sep 17 00:00:00 2001 From: lwvmobile Date: Tue, 17 Jan 2023 02:08:25 -0500 Subject: [PATCH] Cap+ FLC/CSBK Tweaks; --- src/dmr_csbk.c | 7 ++++--- src/dmr_flco.c | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/dmr_csbk.c b/src/dmr_csbk.c index a74dab8..8b8ecb3 100644 --- a/src/dmr_csbk.c +++ b/src/dmr_csbk.c @@ -655,8 +655,8 @@ 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 ts = cs_pdu_bits[18]; //accurate? - uint8_t res = cs_pdu_bits[19];//unknown?? + uint8_t ts = cs_pdu_bits[18]; //accurate? + uint8_t res = cs_pdu_bits[19]; //unknown?? uint8_t rest_channel = (uint8_t)ConvertBitIntoBytes(&cs_pdu_bits[20], 4); uint8_t ch[8]; //one bit per channel @@ -695,7 +695,8 @@ void dmr_cspdu (dsd_opts * opts, dsd_state * state, uint8_t cs_pdu_bits[], uint8 if (ch[i] != 0) { tg = (uint8_t)ConvertBitIntoBytes(&cs_pdu_bits[k*8+32], 8); - fprintf (stderr, " %03d ", tg); + if (tg != 0) fprintf (stderr, " %03d ", tg); + else fprintf (stderr, "Priv "); //observed 000s for TG value seem to appear during a Cap+ Private TXI call //add values to trunking tg/channel potentials t_tg[i] = tg; k++; diff --git a/src/dmr_flco.c b/src/dmr_flco.c index e0ef026..c263592 100644 --- a/src/dmr_flco.c +++ b/src/dmr_flco.c @@ -42,7 +42,7 @@ void dmr_flco (dsd_opts * opts, dsd_state * state, uint8_t lc_bits[], uint32_t C source = (uint32_t)ConvertBitIntoBytes(&lc_bits[48], 24); //look for Cap+ on VLC header, then set source and/or rest channel appropriately - if (type == 1 && fid == 0x10 && flco == 0x04) + if (type == 1 && fid == 0x10 && (flco == 0x04 || flco == 0x07) ) //0x07 appears to be a cap+ txi private call { is_cap_plus = 1; capsite = (uint8_t)ConvertBitIntoBytes(&lc_bits[48], 4); //can't verify, just speculating @@ -164,7 +164,7 @@ void dmr_flco (dsd_opts * opts, dsd_state * state, uint8_t lc_bits[], uint32_t C fprintf(stderr, "TGT=%u SRC=%u ", target, source); if (opts->payload == 1) fprintf(stderr, "FLCO=0x%02X FID=0x%02X SVC=0x%02X ", flco, fid, so); - if (flco == 3) //UU_V_Ch_Usr + if (flco == 0x3 || flco == 0x7 || flco == 0x23) //UU_V_Ch_Usr, Cap+ Private TXI call (VLC), or Cap+ Private TXI call (EMB) { sprintf (state->call_string[slot], " Private"); fprintf (stderr, "Private ");