MDC-1200
MDC-1200
MDC-1200 support has been avialble as a compile time option since app_rpt 0.225 and is now enabled by default.
MDC-1200 decoding display
On the CLI when MDC-1200 is received the following will be displayed:
For a radio ID:
Got MDC-1200 (single-length) packet on node 41618: op: 01, arg: 00, UnitID: 1701 Got MDC-1200 data I1701 from local system (41618)
For a radio check of unit 1400:
Got MDC-1200 (single-length) packet on node 41618: op: 63, arg: 85, UnitID: 1400 Node Variable dump for node 42032:
For a call-alert of Unit 1400 from unit 1701:
Got MDC-1200 (double-length) packet on node 41618: op: 35, arg: 89, UnitID: 1400 ex1: 83, ex2: 0d, ex3: 17, ex4: 01 Got MDC-1200 data A1701-1400 from local system (41618)
For a selective call from unit 1701 to unit 1600:
Got MDC-1200 (double-length) packet on node 41618: op: 35, arg: 89, UnitID: 1600 ex1: 80, ex2: 15, ex3: 17, ex4: 01
Note the sender isn't parsed properly.
For a Remote Monitor of unit 1600:
Got MDC-1200 (single-length) packet on node 41618: op: 71, arg: 85, UnitID: 1600
Sending MDC Message 01 from unit 1701:
Got MDC-1200 (single-length) packet on node 41618: op: 47, arg: 01, UnitID: 1701
There are others unlisted here, emergency being the most obvious example, but they are quite simple to decode.
If logging is enabled this will be logged to the daily logs as follows:
20180330111954,Got MDC-1200 data I1701 from local system (41618)
The format is I, E, S, C based on the type of call received. Note this is a subset of the MDC-1200 protocol, but it would be quite easy to extend the code to support other codes. Inhibit and un-inhibit have been tried and do work well, but would need more work to be supported in app_rpt.
MDC1200 is a very insecure protocol and enabling decode on any radio does open it to an attack over the air if inhibit is enabled. Some radios, such as the Motorola waris professional series cannot disable remote inhibit if MDC decode is enabled.
MDC-1200 Decoding Macro
Put an [mdcmacro] clause in rpt.conf
IXXXX=*something ; will match PTTID XXXX EXXXX=*something ; will match Emergency from XXXX SXXXX-Y=*something ; will match unit XXXX status Y CXXXX-YYYY=*something ; will match unit XXXX calling unit YYYY
The character '%' may be used to match any single character and '*' may be used to match any number of characters.
For example:
E*=*something ; would match ANY ID with an emergency
Note that if you have a macro setup to do something based on ID it will execute once if it hears the ID multiple times in a row (ie during testing). If you are testing a macro based on unit ID such as:
[mdcmacro] I1701=*81#
This will announce the time only once if there are no other MDC ID's received between hearing ID 1701.
MDC-1200 Encoding
MDC-1200 bursts maybe sent from macros or the commpand line via cop,60:
function_code=cop,60,type,UnitID[,DestID,SubCode]
Type is 'I' for PttID, 'E' for Emergency, and 'C' for Call
(SelCall or Alert), or 'SX' for STS (ststus), where X is 0-F.
DestID and subcode are only specified for the 'C' type message.
UnitID is the local systems UnitID.
DestID is the MDC1200 ID ofthe radio being called, and the subcodes are as follows:
Subcode '8205' is Voice Selective Call for Spectra ('Call')
Subcode '8015' is Voice Selective Call for Maxtrac ('SC') or Astro-Saber('Call')
Subcode '810D' is Call Alert (like Maxtrac 'CA')
For example in a macro:
8765=cop,60,I,1234 ; send MDC PTTID 1234 8766=cop,60,C,1600,1701,8015 ; Send MDC1200 call burst using unitID 1600, DestID 1701, and Maxtrac Selective call Subcode
From the command line sending a unit call to a CDM1550 unit 1701 from unit 1600:
rpt cmd 41618 cop 60 C,1600,1701,8205