mirror of
https://github.com/ShaYmez/hblink3.git
synced 2024-11-22 07:54:50 -05:00
Track subscribers
this is not yet really useable, just getting the mechanics started
This commit is contained in:
parent
d689a876aa
commit
d8bfdc7068
37
bridge.py
37
bridge.py
@ -67,6 +67,13 @@ __email__ = 'n0mjs@me.com'
|
|||||||
|
|
||||||
# Module gobal varaibles
|
# 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
|
# Timed loop used for reporting HBP status
|
||||||
#
|
#
|
||||||
# REPORT BASED ON THE TYPE SELECTED IN THE MAIN CONFIG FILE
|
# 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
|
# Run this every minute for rule timer updates
|
||||||
def rule_timer_loop():
|
def rule_timer_loop():
|
||||||
|
global UNIT_MAP
|
||||||
logger.debug('(ROUTER) routerHBP Rule timer loop started')
|
logger.debug('(ROUTER) routerHBP Rule timer loop started')
|
||||||
_now = time()
|
_now = time()
|
||||||
|
|
||||||
@ -144,6 +152,18 @@ def rule_timer_loop():
|
|||||||
else:
|
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']))
|
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']:
|
if CONFIG['REPORTS']['REPORT']:
|
||||||
report_server.send_clients(b'bridge updated')
|
report_server.send_clients(b'bridge updated')
|
||||||
|
|
||||||
@ -397,6 +417,7 @@ class routerOBP(OPENBRIDGE):
|
|||||||
dmrpkt = _data[20:53]
|
dmrpkt = _data[20:53]
|
||||||
_bits = _data[15]
|
_bits = _data[15]
|
||||||
|
|
||||||
|
|
||||||
def dmrd_received(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _call_type, _frame_type, _dtype_vseq, _stream_id, _data):
|
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':
|
if _call_type == 'group':
|
||||||
@ -413,6 +434,7 @@ class routerHBP(HBSYSTEM):
|
|||||||
|
|
||||||
def __init__(self, _name, _config, _report):
|
def __init__(self, _name, _config, _report):
|
||||||
HBSYSTEM.__init__(self, _name, _config, _report)
|
HBSYSTEM.__init__(self, _name, _config, _report)
|
||||||
|
self.name = _name
|
||||||
|
|
||||||
# Status information for the system, TS1 & TS2
|
# Status information for the system, TS1 & TS2
|
||||||
# 1 & 2 are "timeslot"
|
# 1 & 2 are "timeslot"
|
||||||
@ -472,13 +494,6 @@ 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):
|
def group_received(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _frame_type, _dtype_vseq, _stream_id, _data):
|
||||||
pkt_time = time()
|
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):
|
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()
|
pkt_time = time()
|
||||||
dmrpkt = _data[20:53]
|
dmrpkt = _data[20:53]
|
||||||
_bits = _data[15]
|
_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):
|
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