8e78d70f0e
0x61, 0x62 and 0x63 have been mostly decoded. Still don’t know what all of the pieces do, but know what they’re for finally! This will mean big things for log.py as I figure out the details.
98 lines
3.2 KiB
Python
98 lines
3.2 KiB
Python
# Copyright (c) 2013 Cortney T. Buffington, N0MJS and the K0USY Group. n0mjs@me.com
|
|
#
|
|
# 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 = b'\x05' # Confirmation FROM the recipient of a confirmed call.
|
|
CALL_MON_ORIGIN = b'\x61' # |
|
|
CALL_MON_RPT = b'\x62' # | Exact meaning unknown
|
|
CALL_MON_NACK = b'\x63' # |
|
|
XCMP_XNL = b'\x70' # XCMP/XNL control message
|
|
GROUP_VOICE = b'\x80'
|
|
PVT_VOICE = b'\x81'
|
|
GROUP_DATA = b'\x83'
|
|
PVT_DATA = b'\x84'
|
|
RPT_WAKE_UP = b'\x85' # Similar to OTA DMR "wake up"
|
|
MASTER_REG_REQ = b'\x90' # FROM peer TO master
|
|
MASTER_REG_REPLY = b'\x91' # FROM master TO peer
|
|
PEER_LIST_REQ = b'\x92'
|
|
PEER_LIST_REPLY = b'\x93'
|
|
PEER_REG_REQ = b'\x94' # Peer registration request
|
|
PEER_REG_REPLY = b'\x95' # Peer registration reply
|
|
MASTER_ALIVE_REQ = b'\x96' # FROM peer TO master
|
|
MASTER_ALIVE_REPLY = b'\x97' # FROM master TO peer
|
|
PEER_ALIVE_REQ = b'\x98' # Peer keep alive request
|
|
PEER_ALIVE_REPLY = b'\x99' # Peer keep alive reply
|
|
DE_REG_REQ = b'\x9A' # Request de-registration from system
|
|
DE_REG_REPLY = b'\x9B' # De-registration reply
|
|
|
|
# IPSC Version Information
|
|
IPSC_VER_14 = b'\x00'
|
|
IPSC_VER_15 = b'\x00'
|
|
IPSC_VER_15A = b'\x00'
|
|
IPSC_VER_16 = b'\x01'
|
|
IPSC_VER_17 = b'\x02'
|
|
IPSC_VER_18 = b'\x02'
|
|
IPSC_VER_19 = b'\x03'
|
|
IPSC_VER_22 = b'\x04'
|
|
|
|
# Link Type Values - assumed that cap+, etc. are different, this is all I can confirm
|
|
LINK_TYPE_IPSC = b'\x04'
|
|
|
|
# IPSC Version and Link Type are Used for a 4-byte version field in registration packets
|
|
IPSC_VER = LINK_TYPE_IPSC + IPSC_VER_19 + LINK_TYPE_IPSC + IPSC_VER_17
|
|
|
|
# Packets that must originate from a peer (or master peer)
|
|
ANY_PEER_REQUIRED = [GROUP_VOICE, PVT_VOICE, GROUP_DATA, PVT_DATA, CALL_MON_ORIGIN, 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]
|
|
|
|
# Conditions for accepting certain types of messages... the cornerstone of a secure IPSC system :)
|
|
'''
|
|
REQ_VALID_PEER = [
|
|
PEER_REG_REQ,
|
|
PEER_REG_REPLY
|
|
]
|
|
|
|
REQ_VALID_MASTER = [
|
|
MASTER_REG_REQ,
|
|
MASTER_REG_REPLY
|
|
]
|
|
|
|
REQ_MASTER_CONNECTED = [
|
|
CALL_MON_ORIGIN,
|
|
CALL_MON_RPT,
|
|
CALL_MON_NACK,
|
|
XCMP_XNL,
|
|
GROUP_VOICE,
|
|
PVT_VOICE,
|
|
GROUP_DATA,
|
|
GROUP_VOICE,
|
|
PVT_DATA,
|
|
RPT_WAKE_UP,
|
|
MASTER_ALIVE_REQ,
|
|
MASTER_ALIVE_REPLY,
|
|
DE_REG_REQ,
|
|
DE_REG_REPLY
|
|
]
|
|
|
|
REQ_PEER_CONNECTED = [
|
|
PEER_ALIVE_REQ,
|
|
PEER_ALIVE_REPLY
|
|
]
|
|
|
|
REQ_VALID_MASTER_OR_PEER = [
|
|
REQ_VALID_PEER, REQ_VALID_MASTER
|
|
]
|
|
''' |