From 37855b817b9c5d956c92479dd4d8a7992ad36a40 Mon Sep 17 00:00:00 2001 From: lwvmobile Date: Fri, 9 Oct 2026 19:42:45 -0400 Subject: [PATCH] DMR: Fix MassReg reg_address value and tweaks; #366 --- src/dmr_csbk.c | 11 +++++++++-- src/ysf.c | 4 ++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/dmr_csbk.c b/src/dmr_csbk.c index 60b7ea6..c03ff73 100644 --- a/src/dmr_csbk.c +++ b/src/dmr_csbk.c @@ -940,14 +940,21 @@ void dmr_cspdu (dsd_opts * opts, dsd_state * state, uint8_t cs_pdu_bits[], uint8 //MassReg if (a_type == 4) { + uint8_t mreg_res = (uint8_t)ConvertBitIntoBytes(&bpbits1[0], 5); uint8_t reg_window = (uint8_t)ConvertBitIntoBytes(&bpbits1[5], 4); //7.2.19.5.1 Table 7.77 convert raw to seconds uint8_t aloha_mask = (uint8_t)ConvertBitIntoBytes(&bpbits1[9], 5); + //ADDRNull or MS Individual Address - uint8_t reg_address = (uint8_t)ConvertBitIntoBytes(&bpbits2[16], 8); //see clause 7.2.41 + uint32_t reg_address = bparms2; //see clause 7.2.41 fprintf (stderr, "\n"); //raw value only on the reg window, see aforementioned table fprintf (stderr, " Reg Window: %X; Aloha Mask: %02X; Target: %d; ", reg_window, aloha_mask, reg_address); - dmr_gateway_identifier(0,reg_address); + + if (mreg_res != 0) + fprintf (stderr, "Res: %02X", mreg_res); + + if (reg_address != 0) + dmr_gateway_identifier(0, reg_address); } //debug diff --git a/src/ysf.c b/src/ysf.c index 5c12bf2..c413c21 100644 --- a/src/ysf.c +++ b/src/ysf.c @@ -595,7 +595,7 @@ void pn95_lfsr() //test to see if this generates the correct bits now } -void ysf_ehr (dsd_opts * opts, dsd_state * state, uint8_t dbuf[180], int start, int stop ) +void ysf_ehr (dsd_opts * opts, dsd_state * state, uint8_t * dbuf, int start, int stop ) { int i; char ambe_fr[4][24]; @@ -850,7 +850,7 @@ void processYSF(dsd_opts * opts, dsd_state * state) } // send VCH to ehr voice handler - ysf_ehr (opts, state, vbuf, 0, 4); + ysf_ehr (opts, state, vbuf, 0, 5); //send DCH to decoder ysf_conv_dch (opts, state, bn, bt, fn, ft, cm, dbuf);