-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathipsc_const.py
executable file
·140 lines (121 loc) · 4.52 KB
/
ipsc_const.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# Copyright (c) 2013 - 2015 Cortney T. Buffington, N0MJS and the K0USY Group. [email protected]
#
# This work is licensed under the Creative Commons Attribution-ShareAlike
# 3.0 Unported License.To view a copy of this license, visit
# http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to
# Creative Commons, 444 Castro Street, Suite 900, Mountain View,
# California, 94041, USA.
# Known IPSC Message Types
CALL_CONFIRMATION = '\x05' # Confirmation FROM the recipient of a confirmed call.
TXT_MESSAGE_ACK = '\x54' # Doesn't seem to mean success, though. This code is sent success or failure
CALL_MON_STATUS = '\x61' # |
CALL_MON_RPT = '\x62' # | Exact meaning unknown
CALL_MON_NACK = '\x63' # |
XCMP_XNL = '\x70' # XCMP/XNL control message
GROUP_VOICE = '\x80'
PVT_VOICE = '\x81'
GROUP_DATA = '\x83'
PVT_DATA = '\x84'
RPT_WAKE_UP = '\x85' # Similar to OTA DMR "wake up"
UNKNOWN_COLLISION = '\x86' # Seen when two dmrlinks try to transmit at once
MASTER_REG_REQ = '\x90' # FROM peer TO master
MASTER_REG_REPLY = '\x91' # FROM master TO peer
PEER_LIST_REQ = '\x92' # From peer TO master
PEER_LIST_REPLY = '\x93' # From master TO peer
PEER_REG_REQ = '\x94' # Peer registration request
PEER_REG_REPLY = '\x95' # Peer registration reply
MASTER_ALIVE_REQ = '\x96' # FROM peer TO master
MASTER_ALIVE_REPLY = '\x97' # FROM master TO peer
PEER_ALIVE_REQ = '\x98' # Peer keep alive request
PEER_ALIVE_REPLY = '\x99' # Peer keep alive reply
DE_REG_REQ = '\x9A' # Request de-registration from system
DE_REG_REPLY = '\x9B' # De-registration reply
# IPSC Version Information
IPSC_VER_14 = '\x00'
IPSC_VER_15 = '\x00'
IPSC_VER_15A = '\x00'
IPSC_VER_16 = '\x01'
IPSC_VER_17 = '\x02'
IPSC_VER_18 = '\x02'
IPSC_VER_19 = '\x03'
IPSC_VER_22 = '\x04'
# Link Type Values - assumed that cap+, etc. are different, this is all I can confirm
LINK_TYPE_IPSC = '\x04'
# Burst Data Types
BURST_DATA_TYPE = {
'VOICE_HEAD': '\x01',
'VOICE_TERM': '\x02',
'SLOT1_VOICE': '\x0A',
'SLOT2_VOICE': '\x8A'
}
# IPSC Version and Link Type are Used for a 4-byte version field in registration packets
IPSC_VER = LINK_TYPE_IPSC + IPSC_VER_17 + LINK_TYPE_IPSC + IPSC_VER_16
# Packets that must originate from a peer (or master peer)
ANY_PEER_REQUIRED = [GROUP_VOICE, PVT_VOICE, GROUP_DATA, PVT_DATA, CALL_MON_STATUS, CALL_MON_RPT, CALL_MON_NACK, XCMP_XNL, RPT_WAKE_UP, DE_REG_REQ]
# Packets that must originate from a non-master peer
PEER_REQUIRED = [PEER_ALIVE_REQ, PEER_ALIVE_REPLY, PEER_REG_REQ, PEER_REG_REPLY]
# Packets that must originate from a master peer
MASTER_REQUIRED = [PEER_LIST_REPLY, MASTER_ALIVE_REPLY]
# User-Generated Packet Types
USER_PACKETS = [GROUP_VOICE, PVT_VOICE, GROUP_DATA, PVT_DATA]
# RCM (Repeater Call Monitor) Constants
TS = {
'\x00': '1',
'\x01': '2'
}
NACK = {
'\x05': 'BSID Start',
'\x06': 'BSID End'
}
TYPE = {
'\x00': '',
'\x30': 'Private Data Set-Up',
'\x31': 'Group Data Set-Up',
'\x32': 'Private CSBK Set-Up',
'\x45': 'Call Alert',
'\x47': 'Radio Check Request',
'\x48': 'Radio Check Success',
'\x49': 'Radio Disable Request',
'\x4A': 'Radio Disable Received',
'\x4B': 'Radio Enable Request',
'\x4C': 'Radio Enable Received',
'\x4D': 'Remote Monitor Request',
'\x4E': 'Remote Monitor Request Received', #(doesn't mean it was successful)
'\x4D': 'Remote Monitor Request',
'\x4F': 'Group Voice',
'\x50': 'Private Voice',
'\x51': 'Group Data',
'\x52': 'Private Data',
'\x53': 'All Call',
'\x54': 'Message ACK/Failure', #text message acknowledgement, but doesn't mean it was successful - it gives the same code if it worked or failed...
'\x84': 'ARS/GPS?' # Not yet clear, seen by a user running ARS & GPS
}
SEC = {
'\x00': 'None',
'\x01': 'Basic',
'\x02': 'Enhanced'
}
STATUS = {
'\x01': 'Active',
'\x02': 'End',
'\x03': 'unknown',
'\x05': 'TS In Use',
'\x08': 'RPT Disabled',
'\x09': 'RF Interference',
'\x0A': 'BSID ON',
'\x0B': 'Timeout',
'\x0C': 'TX Interrupt'
}
REPEAT = {
'\x01': 'Repeating',
'\x02': 'Idle',
'\x03': 'TS Disabled',
'\x04': 'TS Enabled'
}
# DMR IPSC Contants (in the RTP Payload)
BURST_DATA_TYPE = {
'VOICE_HEAD': '\x01',
'VOICE_TERM': '\x02',
'SLOT1_VOICE': '\x0A',
'SLOT2_VOICE': '\x8A'
}