From bd0b3f285656d3d9f2d5b7e506e8393ed5d53e8a Mon Sep 17 00:00:00 2001 From: lwvmobile Date: Mon, 20 Nov 2023 21:49:58 -0500 Subject: [PATCH] P25 - MFID90 Moto Talker EOT ; Misc; --- src/p25_lcw.c | 11 +++++------ src/p25p1_tsbk.c | 20 ++++++++++++++++++-- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/p25_lcw.c b/src/p25_lcw.c index ef5342a..4c58587 100644 --- a/src/p25_lcw.c +++ b/src/p25_lcw.c @@ -364,8 +364,7 @@ void p25_lcw (dsd_opts * opts, dsd_state * state, uint8_t LCW_bits[], uint8_t ir else fprintf (stderr, " Unknown Format %02X MFID %02X SVC %02X", lc_format, lc_mfid, lc_svcopt); } - //MFID 90 Embedded GPS -- SDRTrunk shows this is a LCW with the same format as - //DMR Embedded GPS FLC (I have not observed this opcode for accuracy) + //MFID 90 Embedded GPS else if (lc_mfid == 0x90 && lc_opcode == 0x6) { fprintf (stderr, " MFID90 (Moto)"); @@ -384,11 +383,11 @@ void p25_lcw (dsd_opts * opts, dsd_state * state, uint8_t LCW_bits[], uint8_t ir else if (lc_mfid == 0x90 && lc_opcode == 0x4) fprintf (stderr, " MFID90 (Moto) Group Regroup Delete"); - //Still unclear whether or not this signals the end of a call grant, - //or just the end of the current talker talking, so we won't tune away here - //MFID90 still uses the standard Call Termination as well at teardown else if (lc_mfid == 0x90 && lc_opcode == 0xF) - fprintf (stderr, " MFID90 (Moto) Call Termination"); + { + uint32_t src = (uint32_t)ConvertBitIntoBytes(&LCW_bits[48], 24); + fprintf (stderr, " MFID90 (Moto) Talker EOT; SRC: %d", src); + } //not a duplicate, this one will print if not MFID 0 or 1 else diff --git a/src/p25p1_tsbk.c b/src/p25p1_tsbk.c index a9da5d0..e8965bb 100644 --- a/src/p25p1_tsbk.c +++ b/src/p25p1_tsbk.c @@ -443,7 +443,7 @@ void processTSBK(dsd_opts * opts, dsd_state * state) } - //Some of these Opcodes that aren't found in any TIA manual come from SDRTrunk, + //Some of these Opcodes that aren't found in any TIA manual come from SDRTrunk (or other sources), //but can't verify the accuracy of their meaning/context // else if ( (tsbk_byte[0] & 0x3F) == 0x05 ) // { @@ -485,6 +485,22 @@ void processTSBK(dsd_opts * opts, dsd_state * state) // fprintf (stderr, "%02X", tsbk_byte[i]); // } + // else if ( (tsbk_byte[0] & 0x3F) == 0x15 ) //noted on RR, but not observed as of yet, this may actualy be a LCW and not a TSBK? + // { + // fprintf (stderr, "\n"); + // fprintf (stderr, " MFID 90 (Moto) Talker Alias: "); + // for (i = 2; i < 10; i++) + // fprintf (stderr, "%02X", tsbk_byte[i]); + // } + + // else if ( (tsbk_byte[0] & 0x3F) == 0x16 ) + // { + // fprintf (stderr, "\n"); + // fprintf (stderr, " MFID 90 (Moto) Something: "); //observed, but no idea + // for (i = 2; i < 10; i++) + // fprintf (stderr, "%02X", tsbk_byte[i]); + // } + else { fprintf (stderr, "%s",KCYN); @@ -527,7 +543,7 @@ void processTSBK(dsd_opts * opts, dsd_state * state) if (opts->payload == 1) { fprintf (stderr, "%s",KCYN); - fprintf (stderr, "\n P25 PDU Payload #%d ", j); + fprintf (stderr, "\n P25 PDU Payload #%d ", j+1); for (i = 0; i < 12; i++) { fprintf (stderr, "[%02X]", tsbk_byte[i]);