Track subscribers
this is not yet really useable, just getting the mechanics started
This commit is contained in:
parent
7bf0a77e16
commit
887657aa16
39
bridge.py
39
bridge.py
@ -67,6 +67,13 @@ __email__ = 'n0mjs@me.com'
|
||||
|
||||
# Module gobal varaibles
|
||||
|
||||
# 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)
|
||||
UNIT_MAP = {}
|
||||
|
||||
|
||||
# Timed loop used for reporting HBP status
|
||||
#
|
||||
# REPORT BASED ON THE TYPE SELECTED IN THE MAIN CONFIG FILE
|
||||
@ -116,6 +123,7 @@ def make_bridges(_rules):
|
||||
|
||||
# Run this every minute for rule timer updates
|
||||
def rule_timer_loop():
|
||||
global UNIT_MAP
|
||||
logger.debug('(ROUTER) routerHBP Rule timer loop started')
|
||||
_now = time()
|
||||
|
||||
@ -143,6 +151,18 @@ def rule_timer_loop():
|
||||
logger.debug('(ROUTER) Conference Bridge ACTIVE (no change): System: %s Bridge: %s, TS: %s, TGID: %s', _system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID']))
|
||||
else:
|
||||
logger.debug('(ROUTER) Conference Bridge NO ACTION: System: %s, Bridge: %s, TS: %s, TGID: %s', _system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID']))
|
||||
|
||||
_then = _now - 60
|
||||
remove_list = []
|
||||
for unit in UNIT_MAP:
|
||||
if UNIT_MAP[unit][1] < (_then):
|
||||
remove_list.append(unit)
|
||||
|
||||
for unit in remove_list:
|
||||
del UNIT_MAP[unit]
|
||||
|
||||
logger.debug('Removed unit(s) %s from UNIT_MAP', remove_list)
|
||||
|
||||
|
||||
if CONFIG['REPORTS']['REPORT']:
|
||||
report_server.send_clients(b'bridge updated')
|
||||
@ -396,6 +416,7 @@ class routerOBP(OPENBRIDGE):
|
||||
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):
|
||||
|
||||
@ -413,6 +434,7 @@ class routerHBP(HBSYSTEM):
|
||||
|
||||
def __init__(self, _name, _config, _report):
|
||||
HBSYSTEM.__init__(self, _name, _config, _report)
|
||||
self.name = _name
|
||||
|
||||
# Status information for the system, TS1 & TS2
|
||||
# 1 & 2 are "timeslot"
|
||||
@ -471,14 +493,7 @@ class routerHBP(HBSYSTEM):
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# 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()
|
||||
@ -725,10 +740,16 @@ class routerHBP(HBSYSTEM):
|
||||
|
||||
|
||||
def unit_received(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _frame_type, _dtype_vseq, _stream_id, _data):
|
||||
global UNIT_MAP
|
||||
pkt_time = time()
|
||||
dmrpkt = _data[20:53]
|
||||
_bits = _data[15]
|
||||
print('UNIT CALL')
|
||||
print(UNIT_MAP)
|
||||
if _rf_src not in UNIT_MAP:
|
||||
UNIT_MAP[_rf_src] = [self.name, pkt_time]
|
||||
else:
|
||||
UNIT_MAP[_rf_src][1] = pkt_time
|
||||
|
||||
|
||||
|
||||
def dmrd_received(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _call_type, _frame_type, _dtype_vseq, _stream_id, _data):
|
||||
|
Loading…
Reference in New Issue
Block a user