@ -149,7 +149,7 @@ def config_API(_config, _bridges):
application = Application ( [ FD_API ] ,
application = Application ( [ FD_API ] ,
tns = ' freedmr .api' ,
tns = ' adn .api' ,
in_protocol = HttpRpc ( validator = ' soft ' ) ,
in_protocol = HttpRpc ( validator = ' soft ' ) ,
out_protocol = JsonDocument ( )
out_protocol = JsonDocument ( )
)
)
@ -189,7 +189,7 @@ def make_bridges(_rules):
else :
else :
_system [ ' TIMER ' ] = time ( )
_system [ ' TIMER ' ] = time ( )
# if _bridge[0:1] == '#':
# if _bridge[0:1] == '#':
# continue
# continue
for _confsystem in CONFIG [ ' SYSTEMS ' ] :
for _confsystem in CONFIG [ ' SYSTEMS ' ] :
@ -507,7 +507,7 @@ def kaReporting():
if CONFIG [ ' SYSTEMS ' ] [ system ] [ ' MODE ' ] == ' OPENBRIDGE ' :
if CONFIG [ ' SYSTEMS ' ] [ system ] [ ' MODE ' ] == ' OPENBRIDGE ' :
if CONFIG [ ' SYSTEMS ' ] [ system ] [ ' ENHANCED_OBP ' ] :
if CONFIG [ ' SYSTEMS ' ] [ system ] [ ' ENHANCED_OBP ' ] :
if ' _bcka ' not in CONFIG [ ' SYSTEMS ' ] [ system ] :
if ' _bcka ' not in CONFIG [ ' SYSTEMS ' ] [ system ] :
logger . warning ( ' (ROUTER) not sending to system %s as KeepAlive never seen ' , system )
logger . warning ( ' (ROUTER) not sending to system %s as KeepAlive never seen ' , system )
elif CONFIG [ ' SYSTEMS ' ] [ system ] [ ' _bcka ' ] < time ( ) - 60 :
elif CONFIG [ ' SYSTEMS ' ] [ system ] [ ' _bcka ' ] < time ( ) - 60 :
logger . warning ( ' (ROUTER) not sending to system %s as last KeepAlive was %s seconds ago ' , system , int ( time ( ) - CONFIG [ ' SYSTEMS ' ] [ system ] [ ' _bcka ' ] ) )
logger . warning ( ' (ROUTER) not sending to system %s as last KeepAlive was %s seconds ago ' , system , int ( time ( ) - CONFIG [ ' SYSTEMS ' ] [ system ] [ ' _bcka ' ] ) )
@ -1593,8 +1593,8 @@ class routerOBP(OPENBRIDGE):
#LoopControl
#LoopControl
hr_times = { }
hr_times = { }
for system in systems :
for system in systems :
# if system == self._system:
# if system == self._system:
# continue
# continue
if system != self . _system and CONFIG [ ' SYSTEMS ' ] [ system ] [ ' MODE ' ] != ' OPENBRIDGE ' :
if system != self . _system and CONFIG [ ' SYSTEMS ' ] [ system ] [ ' MODE ' ] != ' OPENBRIDGE ' :
for _sysslot in systems [ system ] . STATUS :
for _sysslot in systems [ system ] . STATUS :
if ' RX_STREAM_ID ' in systems [ system ] . STATUS [ _sysslot ] and _stream_id == systems [ system ] . STATUS [ _sysslot ] [ ' RX_STREAM_ID ' ] :
if ' RX_STREAM_ID ' in systems [ system ] . STATUS [ _sysslot ] and _stream_id == systems [ system ] . STATUS [ _sysslot ] [ ' RX_STREAM_ID ' ] :
@ -1606,7 +1606,7 @@ class routerOBP(OPENBRIDGE):
else :
else :
#if _stream_id in systems[system].STATUS and systems[system].STATUS[_stream_id]['START'] <= self.STATUS[_stream_id]['START']:
#if _stream_id in systems[system].STATUS and systems[system].STATUS[_stream_id]['START'] <= self.STATUS[_stream_id]['START']:
if _stream_id in systems [ system ] . STATUS and ' 1ST ' in systems [ system ] . STATUS [ _stream_id ] and systems [ system ] . STATUS [ _stream_id ] [ ' TGID ' ] == _dst_id :
if _stream_id in systems [ system ] . STATUS and ' 1ST ' in systems [ system ] . STATUS [ _stream_id ] and systems [ system ] . STATUS [ _stream_id ] [ ' TGID ' ] == _dst_id :
hr_times [ system ] = systems [ system ] . STATUS [ _stream_id ] [ ' 1ST ' ]
hr_times [ system ] = systems [ system ] . STATUS [ _stream_id ] [ ' 1ST ' ]
#use the minimum perf_counter to ensure
#use the minimum perf_counter to ensure
#We always use only the earliest packet
#We always use only the earliest packet
@ -1704,8 +1704,8 @@ class routerOBP(OPENBRIDGE):
logger . info ( ' ( %s ) *CALL END* STREAM ID: %s SUB: %s ( %s ) PEER: %s ( %s ) TGID %s ( %s ), TS %s , Duration: %.2f , Packet rate: %.2f /s, Loss: %.2f %% ' , \
logger . info ( ' ( %s ) *CALL END* STREAM ID: %s SUB: %s ( %s ) PEER: %s ( %s ) TGID %s ( %s ), TS %s , Duration: %.2f , Packet rate: %.2f /s, Loss: %.2f %% ' , \
self . _system , int_id ( _stream_id ) , get_alias ( _rf_src , subscriber_ids ) , int_id ( _rf_src ) , get_alias ( _peer_id , peer_ids ) , int_id ( _peer_id ) , get_alias ( _dst_id , talkgroup_ids ) , int_id ( _dst_id ) , _slot , call_duration , packet_rate , loss )
self . _system , int_id ( _stream_id ) , get_alias ( _rf_src , subscriber_ids ) , int_id ( _rf_src ) , get_alias ( _peer_id , peer_ids ) , int_id ( _peer_id ) , get_alias ( _dst_id , talkgroup_ids ) , int_id ( _dst_id ) , _slot , call_duration , packet_rate , loss )
if CONFIG [ ' REPORTS ' ] [ ' REPORT ' ] :
if CONFIG [ ' REPORTS ' ] [ ' REPORT ' ] :
self . _report . send_bridgeEvent ( ' GROUP VOICE,END,RX, {} , {} , {} , {} , {} , {} , {:.2f} ' . format ( self . _system , int_id ( _stream_id ) , int_id ( _peer_id ) , int_id ( _rf_src ) , _slot , int_id ( _dst_id ) , call_duration ) . encode ( encoding = ' utf-8 ' , errors = ' ignore ' ) )
self . _report . send_bridgeEvent ( ' GROUP VOICE,END,RX, {} , {} , {} , {} , {} , {} , {:.2f} ' . format ( self . _system , int_id ( _stream_id ) , int_id ( _peer_id ) , int_id ( _rf_src ) , _slot , int_id ( _dst_id ) , call_duration ) . encode ( encoding = ' utf-8 ' , errors = ' ignore ' ) )
self . STATUS [ _stream_id ] [ ' _fin ' ] = True
self . STATUS [ _stream_id ] [ ' _fin ' ] = True
self . STATUS [ _stream_id ] [ ' lastSeq ' ] = False
self . STATUS [ _stream_id ] [ ' lastSeq ' ] = False
@ -1963,7 +1963,7 @@ class routerHBP(HBSYSTEM):
systems [ _d_system ] . _report . send_bridgeEvent ( ' UNIT DATA,DATA,TX, {} , {} , {} , {} , {} , {} ' . format ( _d_system , int_id ( _stream_id ) , int_id ( _peer_id ) , int_id ( _rf_src ) , 1 , _int_dst_id ) . encode ( encoding = ' utf-8 ' , errors = ' ignore ' ) )
systems [ _d_system ] . _report . send_bridgeEvent ( ' UNIT DATA,DATA,TX, {} , {} , {} , {} , {} , {} ' . format ( _d_system , int_id ( _stream_id ) , int_id ( _peer_id ) , int_id ( _rf_src ) , 1 , _int_dst_id ) . encode ( encoding = ' utf-8 ' , errors = ' ignore ' ) )
def sendDataToOBP ( self , _target , _data , dmrpkt , pkt_time , _stream_id , _dst_id , _peer_id , _rf_src , _bits , _slot , _hops = b ' ' , _ber = b ' \x00 ' , _rssi = b ' \x00 ' , _source_server = b ' \x00 \x00 \x00 \x00 ' , _source_rptr = b ' \x00 \x00 \x00 \x00 ' ) :
def sendDataToOBP ( self , _target , _data , dmrpkt , pkt_time , _stream_id , _dst_id , _peer_id , _rf_src , _bits , _slot , _hops = b ' ' , _ber = b ' \x00 ' , _rssi = b ' \x00 ' , _source_server = b ' \x00 \x00 \x00 \x00 ' , _source_rptr = b ' \x00 \x00 \x00 \x00 ' ) :
# _sysIgnore = sysIgnore
# _sysIgnore = sysIgnore
_source_server = self . _CONFIG [ ' GLOBAL ' ] [ ' SERVER_ID ' ]
_source_server = self . _CONFIG [ ' GLOBAL ' ] [ ' SERVER_ID ' ]
_source_rptr = _peer_id
_source_rptr = _peer_id
_int_dst_id = int_id ( _dst_id )
_int_dst_id = int_id ( _dst_id )
@ -2174,7 +2174,7 @@ class routerHBP(HBSYSTEM):
#Handle AMI private calls
#Handle AMI private calls
if _call_type == ' unit ' and not _data_call and self . STATUS [ _slot ] [ ' _allStarMode ' ] and CONFIG [ ' ALLSTAR ' ] [ ' ENABLED ' ] :
if _call_type == ' unit ' and not _data_call and self . STATUS [ _slot ] [ ' _allStarMode ' ] and CONFIG [ ' ALLSTAR ' ] [ ' ENABLED ' ] :
if ( _stream_id != self . STATUS [ _slot ] [ ' RX_STREAM_ID ' ] ) :
if ( _stream_id != self . STATUS [ _slot ] [ ' RX_STREAM_ID ' ] ) :
logger . info ( ' ( %s ) AMI: Private call from %s to %s ' , self . _system , int_id ( _rf_src ) , _int_dst_id )
logger . info ( ' ( %s ) AMI: Private call from %s to %s ' , self . _system , int_id ( _rf_src ) , _int_dst_id )
if ( _frame_type == HBPF_DATA_SYNC ) and ( _dtype_vseq == HBPF_SLT_VTERM ) and ( self . STATUS [ _slot ] [ ' RX_TYPE ' ] != HBPF_SLT_VTERM ) :
if ( _frame_type == HBPF_DATA_SYNC ) and ( _dtype_vseq == HBPF_SLT_VTERM ) and ( self . STATUS [ _slot ] [ ' RX_TYPE ' ] != HBPF_SLT_VTERM ) :
@ -2303,7 +2303,7 @@ class routerHBP(HBSYSTEM):
_say . append ( words [ _lang ] [ ' notlinked ' ] )
_say . append ( words [ _lang ] [ ' notlinked ' ] )
_say . append ( words [ _lang ] [ ' silence ' ] )
_say . append ( words [ _lang ] [ ' silence ' ] )
#If status called
#If status called
elif _int_dst_id == 5000 :
elif _int_dst_id == 5000 :
_active = False
_active = False
for _bridge in BRIDGES :
for _bridge in BRIDGES :
@ -2529,7 +2529,7 @@ class routerHBP(HBSYSTEM):
logger . info ( ' ( %s ) *CALL END* STREAM ID: %s SUB: %s ( %s ) PEER: %s ( %s ) TGID %s ( %s ), TS %s , Duration: %.2f , Packet rate: %.2f /s, LOSS: %.2f %% ' , \
logger . info ( ' ( %s ) *CALL END* STREAM ID: %s SUB: %s ( %s ) PEER: %s ( %s ) TGID %s ( %s ), TS %s , Duration: %.2f , Packet rate: %.2f /s, LOSS: %.2f %% ' , \
self . _system , int_id ( _stream_id ) , get_alias ( _rf_src , subscriber_ids ) , int_id ( _rf_src ) , get_alias ( _peer_id , peer_ids ) , int_id ( _peer_id ) , get_alias ( _dst_id , talkgroup_ids ) , int_id ( _dst_id ) , _slot , call_duration , packet_rate , loss )
self . _system , int_id ( _stream_id ) , get_alias ( _rf_src , subscriber_ids ) , int_id ( _rf_src ) , get_alias ( _peer_id , peer_ids ) , int_id ( _peer_id ) , get_alias ( _dst_id , talkgroup_ids ) , int_id ( _dst_id ) , _slot , call_duration , packet_rate , loss )
if CONFIG [ ' REPORTS ' ] [ ' REPORT ' ] :
if CONFIG [ ' REPORTS ' ] [ ' REPORT ' ] :
self . _report . send_bridgeEvent ( ' GROUP VOICE,END,RX, {} , {} , {} , {} , {} , {} , {:.2f} ' . format ( self . _system , int_id ( _stream_id ) , int_id ( _peer_id ) , int_id ( _rf_src ) , _slot , int_id ( _dst_id ) , call_duration ) . encode ( encoding = ' utf-8 ' , errors = ' ignore ' ) )
self . _report . send_bridgeEvent ( ' GROUP VOICE,END,RX, {} , {} , {} , {} , {} , {} , {:.2f} ' . format ( self . _system , int_id ( _stream_id ) , int_id ( _peer_id ) , int_id ( _rf_src ) , _slot , int_id ( _dst_id ) , call_duration ) . encode ( encoding = ' utf-8 ' , errors = ' ignore ' ) )
#Reset back to False
#Reset back to False
self . STATUS [ _slot ] [ ' lastSeq ' ] = False
self . STATUS [ _slot ] [ ' lastSeq ' ] = False
@ -2904,7 +2904,7 @@ if __name__ == '__main__':
words [ lang ] [ _mapword ] = words [ lang ] [ _map [ _mapword ] ]
words [ lang ] [ _mapword ] = words [ lang ] [ _map [ _mapword ] ]
# HBlink instance creation
# HBlink instance creation
logger . info ( ' (GLOBAL) FreeDMR \' bridge_master.py \' -- SYSTEM STARTING... ' )
logger . info ( ' (GLOBAL) ADN \' bridge_master.py \' -- SYSTEM STARTING... ' )
listeningPorts = { }
listeningPorts = { }