|
|
|
|
@ -200,13 +200,11 @@ class routerOBP(OPENBRIDGE):
|
|
|
|
|
OPENBRIDGE.__init__(self, _name, _config, _report)
|
|
|
|
|
self.STATUS = {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def dmrd_received(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _call_type, _frame_type, _dtype_vseq, _stream_id, _data):
|
|
|
|
|
def group_recieved(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _frame_type, _dtype_vseq, _stream_id, _data):
|
|
|
|
|
pkt_time = time()
|
|
|
|
|
dmrpkt = _data[20:53]
|
|
|
|
|
_bits = _data[15]
|
|
|
|
|
|
|
|
|
|
if _call_type == 'group':
|
|
|
|
|
# Is this a new call stream?
|
|
|
|
|
if (_stream_id not in self.STATUS):
|
|
|
|
|
# This is a new call stream
|
|
|
|
|
@ -393,6 +391,24 @@ class routerOBP(OPENBRIDGE):
|
|
|
|
|
if not removed:
|
|
|
|
|
selflogger.error('(%s) *CALL END* STREAM ID: %s NOT IN LIST -- THIS IS A REAL PROBLEM', self._system, int_id(_stream_id))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def unit_received(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _frame_type, _dtype_vseq, _stream_id, _data):
|
|
|
|
|
pkt_time = time()
|
|
|
|
|
dmrpkt = _data[20:53]
|
|
|
|
|
_bits = _data[15]
|
|
|
|
|
|
|
|
|
|
def dmrd_received(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _call_type, _frame_type, _dtype_vseq, _stream_id, _data):
|
|
|
|
|
|
|
|
|
|
if _call_type == 'group':
|
|
|
|
|
self.group_received(_peer_id, _rf_src, _dst_id, _seq, _slot, _frame_type, _dtype_vseq, _stream_id, _data)
|
|
|
|
|
elif _call_type == 'unit':
|
|
|
|
|
self.unit_received(_peer_id, _rf_src, _dst_id, _seq, _slot, _frame_type, _dtype_vseq, _stream_id, _data)
|
|
|
|
|
elif _call_type == 'vscsbk':
|
|
|
|
|
logger.debug('CSBK recieved, but HBlink does not process them currently')
|
|
|
|
|
else:
|
|
|
|
|
logger.error('Unknown call type recieved -- not processed')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class routerHBP(HBSYSTEM):
|
|
|
|
|
|
|
|
|
|
def __init__(self, _name, _config, _report):
|
|
|
|
|
@ -456,13 +472,19 @@ class routerHBP(HBSYSTEM):
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def dmrd_received(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _call_type, _frame_type, _dtype_vseq, _stream_id, _data):
|
|
|
|
|
# Dictionary for dynamically mapping unit (subscriber) to a system.
|
|
|
|
|
# This is for pruning unit-to-uint calls to not broadcast once the
|
|
|
|
|
# target system for a unit is identified
|
|
|
|
|
# format 'unit_id': ('SYSTEM', time)
|
|
|
|
|
self.UNIT_MAP = {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def group_received(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _frame_type, _dtype_vseq, _stream_id, _data):
|
|
|
|
|
pkt_time = time()
|
|
|
|
|
dmrpkt = _data[20:53]
|
|
|
|
|
_bits = _data[15]
|
|
|
|
|
|
|
|
|
|
if _call_type == 'group':
|
|
|
|
|
|
|
|
|
|
# Is this a new call stream?
|
|
|
|
|
if (_stream_id != self.STATUS[_slot]['RX_STREAM_ID']):
|
|
|
|
|
if (self.STATUS[_slot]['RX_TYPE'] != HBPF_SLT_VTERM) and (pkt_time < (self.STATUS[_slot]['RX_TIME'] + STREAM_TO)) and (_rf_src != self.STATUS[_slot]['RX_RFS']):
|
|
|
|
|
@ -692,8 +714,6 @@ class routerHBP(HBSYSTEM):
|
|
|
|
|
#
|
|
|
|
|
# END IN-BAND SIGNALLING
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Mark status variables for use later
|
|
|
|
|
self.STATUS[_slot]['RX_PEER'] = _peer_id
|
|
|
|
|
self.STATUS[_slot]['RX_SEQ'] = _seq
|
|
|
|
|
@ -703,6 +723,24 @@ class routerHBP(HBSYSTEM):
|
|
|
|
|
self.STATUS[_slot]['RX_TIME'] = pkt_time
|
|
|
|
|
self.STATUS[_slot]['RX_STREAM_ID'] = _stream_id
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def unit_received(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _frame_type, _dtype_vseq, _stream_id, _data):
|
|
|
|
|
pkt_time = time()
|
|
|
|
|
dmrpkt = _data[20:53]
|
|
|
|
|
_bits = _data[15]
|
|
|
|
|
print('UNIT CALL')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def dmrd_received(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _call_type, _frame_type, _dtype_vseq, _stream_id, _data):
|
|
|
|
|
if _call_type == 'group':
|
|
|
|
|
self.group_received(_peer_id, _rf_src, _dst_id, _seq, _slot, _frame_type, _dtype_vseq, _stream_id, _data)
|
|
|
|
|
elif _call_type == 'unit':
|
|
|
|
|
self.unit_received(_peer_id, _rf_src, _dst_id, _seq, _slot, _frame_type, _dtype_vseq, _stream_id, _data)
|
|
|
|
|
elif _call_type == 'vscsbk':
|
|
|
|
|
logger.debug('CSBK recieved, but HBlink does not process them currently')
|
|
|
|
|
else:
|
|
|
|
|
logger.error('Unknown call type recieved -- not processed')
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
# Socket-based reporting section
|
|
|
|
|
#
|
|
|
|
|
|