diff --git a/src/dmr_bs.c b/src/dmr_bs.c index 2079f24..e3da820 100644 --- a/src/dmr_bs.c +++ b/src/dmr_bs.c @@ -369,6 +369,10 @@ void dmrBS (dsd_opts * opts, dsd_state * state) tact_okay = 0; emb_ok = 0; + //Extra safeguards to break loop + // if ( (vc1 > 7 && vc2 > 7) ) goto END; + if ( (vc1 > 14 || vc2 > 14) ) goto END; + } SKIP: diff --git a/src/dmr_csbk.c b/src/dmr_csbk.c index 1304df2..9c9d274 100644 --- a/src/dmr_csbk.c +++ b/src/dmr_csbk.c @@ -48,6 +48,10 @@ void dmr_cspdu (dsd_opts * opts, dsd_state * state, uint8_t cs_pdu_bits[], uint8 //7.1.1.1.1 Channel Grant CSBK/MBC PDU if (csbk_o > 47 && csbk_o < 53 ) { + + //users will need to import the cc frequency as channel 0 for now + if (state->trunk_chan_map[0] != 0) state->p25_cc_freq = state->trunk_chan_map[0]; + //initial line break fprintf (stderr, "\n"); @@ -66,6 +70,10 @@ void dmr_cspdu (dsd_opts * opts, dsd_state * state, uint8_t cs_pdu_bits[], uint8 else if (lpchannum == 0xFFF) fprintf (stderr, " - Absolute"); //This is from an MBC, signalling an absolute and not a logical else fprintf (stderr, " - Logical"); + //dsdplus channel values + uint16_t pluschannum = (uint16_t)ConvertBitIntoBytes(&cs_pdu_bits[16], 13); //lcn bit included + pluschannum += 1; //add a one for good measure + //LCN conveyed here is the tdma timeslot variety, and not the RF frequency variety uint8_t lcn = cs_pdu_bits[28]; //the next three bits can have different meanings depending on which item above for context @@ -77,7 +85,9 @@ void dmr_cspdu (dsd_opts * opts, dsd_state * state, uint8_t cs_pdu_bits[], uint8 uint32_t source = (uint32_t)ConvertBitIntoBytes(&cs_pdu_bits[56], 24); fprintf (stderr, "\n"); - fprintf (stderr, " CHAN [%03X][%04d] - LCN/TS [%d] - Target [%08d] - Source [%08d]", lpchannum, lpchannum, lcn, target, source); + //added my best guess as to how dsdplus arrives at a dmr channel value (seems pretty consistent) as C+ + fprintf (stderr, " Ch [%03X] Cd [%04d] C+ [%04d] - TS [%d] - Target [%08d] - Source [%08d]", lpchannum, lpchannum, pluschannum, lcn, target, source); + if (st2) fprintf (stderr, " Emergency"); if (lpchannum == 0xFFF) //This is from an MBC, signalling an absolute and not a logical diff --git a/src/dmr_data.c b/src/dmr_data.c index ab24dd2..c0cdba8 100644 --- a/src/dmr_data.c +++ b/src/dmr_data.c @@ -75,7 +75,7 @@ dmr_data_sync (dsd_opts * opts, dsd_state * state) else { cach_okay = -1; - if (opts->aggressive_framesync == 2) + if (opts->aggressive_framesync == 1) { SlotTypeOk = 0; goto END; diff --git a/src/dsd_ncurses.c b/src/dsd_ncurses.c index e0d5b5b..c24d3fc 100644 --- a/src/dsd_ncurses.c +++ b/src/dsd_ncurses.c @@ -1379,7 +1379,7 @@ void ncursesMenu (dsd_opts * opts, dsd_state * state) } if (choice == 14) //reset call history (usually if janky output when switching modes) { - for (short int k = 0; k < 9; k++) + for (short int k = 0; k <= 9; k++) { call_matrix[k][0] = 0; call_matrix[k][1] = 0; @@ -2432,7 +2432,6 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state) if(state->dmrburstL == 16) //only during call { - attron(COLOR_PAIR(5)); //Embedded GPS (not LRRP) printw ("%s ", state->dmr_embedded_gps[0]);