def private_data(self, _network, _src_sub, _dst_sub, _ts, _end, _peerid, _data): _dst_sub = get_info(int_id(_dst_sub), subscriber_ids) _peerid = get_info(int_id(_peerid), peer_ids) _src_sub = get_info(int_id(_src_sub), subscriber_ids) print('({}) Private Data Packet Received From: {} To: {}'.format( _network, _src_sub, _dst_sub))
def group_data(self, _network, _src_sub, _dst_sub, _ts, _end, _peerid, _data): _dst_sub = get_info(int_id(_dst_sub), talkgroup_ids) _peerid = get_info(int_id(_peerid), peer_ids) _src_sub = get_info(int_id(_src_sub), subscriber_ids) print('({}) Group Data Packet Received From: {}'.format( _network, _src_sub))
def call_mon_origin(self, _network, _data): _source = _data[1:5] _ipsc_src = _data[5:9] _rf_src = _data[16:19] _rf_tgt = _data[19:22] _ts = _data[13] _status = _data[15] _type = _data[22] _sec = _data[24] _ipsc_src = get_info(int_id(_ipsc_src), peer_ids) _rf_src = get_info(int_id(_rf_src), subscriber_ids) if _type == '\x4F' or '\x51': _rf_tgt = get_info(int_id(_rf_tgt), talkgroup_ids) else: _rf_tgt = get_info(int_id(_rf_tgt), subscriber_ids) print('IPSC: ', _network) print('IPSC Source: ', _ipsc_src) print('Timeslot: ', TS[_ts]) print('Status: ', STATUS[_status]) print('Type: ', TYPE[_type]) print('Source Sub: ', _rf_src) print('Target Sub: ', _rf_tgt) print()
def group_voice(self, _network, _src_sub, _dst_sub, _ts, _end, _peerid, _data): # THIS FUNCTION IS NOT COMPLETE!!!! _payload_type = _data[30:31] # _ambe_frames = _data[33:52] _ambe_frames = BitArray('0x' + h(_data[33:52])) _ambe_frame1 = _ambe_frames[0:49] _ambe_frame2 = _ambe_frames[50:99] _ambe_frame3 = _ambe_frames[100:149] _tg_id = int_id(_dst_sub) if _tg_id in self._tg_filter: #All TGs _dst_sub = get_info(int_id(_dst_sub), talkgroup_ids) if _payload_type == BURST_DATA_TYPE['VOICE_HEAD']: if self._currentTG == self._no_tg: _src_sub = get_info(int_id(_src_sub), subscriber_ids) print( 'Voice Transmission Start on TS {} and TG {} ({}) from {}' .format("2" if _ts else "1", _dst_sub, _tg_id, _src_sub)) self._currentTG = _tg_id self._transmitStartTime = time() else: if self._currentTG != _tg_id: if time() > self.lastPacketTimeout: self._currentTG = self._no_tg #looks like we never saw an EOT from the last stream print('EOT timeout') else: print( 'Transmission in progress, will not decode stream on TG {}' .format(_tg_id)) if self._currentTG == _tg_id: if _payload_type == BURST_DATA_TYPE['VOICE_TERM']: print('Voice Transmission End %.2f seconds' % (time() - self._transmitStartTime)) self._currentTG = self._no_tg if _payload_type == BURST_DATA_TYPE['SLOT1_VOICE']: self.outputFrames(_ambe_frames, _ambe_frame1, _ambe_frame2, _ambe_frame3) if _payload_type == BURST_DATA_TYPE['SLOT2_VOICE']: self.outputFrames(_ambe_frames, _ambe_frame1, _ambe_frame2, _ambe_frame3) self.lastPacketTimeout = time() + 10 else: if _payload_type == BURST_DATA_TYPE['VOICE_HEAD']: _dst_sub = get_info(int_id(_dst_sub), talkgroup_ids) print('Ignored Voice Transmission Start on TS {} and TG {}'. format("2" if _ts else "1", _dst_sub))
def private_voice(self, _network, _src_sub, _dst_sub, _ts, _end, _peerid, _data): # _log = logger.debug if (_ts not in self.ACTIVE_CALLS) or _end: _time = time.strftime('%m/%d/%y %H:%M:%S') _dst_sub = get_info(int_id(_dst_sub), subscriber_ids) _peerid = get_info(int_id(_peerid), peer_ids) _src_sub = get_info(int_id(_src_sub), subscriber_ids) if not _end: self.ACTIVE_CALLS.append(_ts) if _end: self.ACTIVE_CALLS.remove(_ts) if _ts: _ts = 2 else: _ts = 1 if _end: _end = 'END' else: _end = 'START' print('{} ({}) Call {} Private Voice: \n\tIPSC Source:\t{}\n\tSubscriber:\t{}\n\tDestination:\t{}\n\tTimeslot\t{}' .format(_time, _network, _end, _peerid, _src_sub, _dst_sub, _ts))
def call_mon_status(self, _network, _data): if not status: return _source = _data[1:5] _ipsc_src = _data[5:9] _seq_num = _data[9:13] _ts = _data[13] _status = _data[15] # suspect [14:16] but nothing in leading byte? _rf_src = _data[16:19] _rf_tgt = _data[19:22] _type = _data[22] _prio = _data[23] _sec = _data[24] _source = str(int_id(_source)) + ', ' + str( get_info(int_id(_source), peer_ids)) _ipsc_src = str(int_id(_ipsc_src)) + ', ' + str( get_info(int_id(_ipsc_src), peer_ids)) _rf_src = str(int_id(_rf_src)) + ', ' + str( get_info(int_id(_rf_src), subscriber_ids)) if _type == '\x4F' or '\x51': _rf_tgt = 'TGID: ' + str(int_id(_rf_tgt)) + ', ' + str( get_info(int_id(_rf_tgt), talkgroup_ids)) else: _rf_tgt = 'SID: ' + str(int_id(_rf_tgt)) + ', ' + str( get_info(int_id(_rf_tgt), subscriber_ids)) print('Call Monitor - Call Status') print('TIME: ', datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) print('DATA SOURCE: ', _source) print('IPSC: ', _network) print('IPSC Source: ', _ipsc_src) print('Timeslot: ', TS[_ts]) try: print('Status: ', STATUS[_status]) except KeyError: print('Status (unknown): ', h(_status)) try: print('Type: ', TYPE[_type]) except KeyError: print('Type (unknown): ', h(_type)) print('Source Sub: ', _rf_src) print('Target Sub: ', _rf_tgt) print()
def group_voice(self, _network, _src_sub, _dst_sub, _ts, _end, _peerid, _data): # THIS FUNCTION IS NOT COMPLETE!!!! _payload_type = _data[30:31] # _ambe_frames = _data[33:52] _ambe_frames = BitArray("0x" + h(_data[33:52])) _ambe_frame1 = _ambe_frames[0:49] _ambe_frame2 = _ambe_frames[50:99] _ambe_frame3 = _ambe_frames[100:149] _tg_id = int_id(_dst_sub) if _tg_id in self._tg_filter: # All TGs _dst_sub = get_info(int_id(_dst_sub), talkgroup_ids) if _payload_type == BURST_DATA_TYPE["VOICE_HEAD"]: if self._currentTG == self._no_tg: _src_sub = get_info(int_id(_src_sub), subscriber_ids) print( "Voice Transmission Start on TS {} and TG {} ({}) from {}".format( "2" if _ts else "1", _dst_sub, _tg_id, _src_sub ) ) self._currentTG = _tg_id self._transmitStartTime = time() else: if self._currentTG != _tg_id: if time() > self.lastPacketTimeout: self._currentTG = self._no_tg # looks like we never saw an EOT from the last stream print("EOT timeout") else: print("Transmission in progress, will not decode stream on TG {}".format(_tg_id)) if self._currentTG == _tg_id: if _payload_type == BURST_DATA_TYPE["VOICE_TERM"]: print("Voice Transmission End %.2f seconds" % (time() - self._transmitStartTime)) self._currentTG = self._no_tg if _payload_type == BURST_DATA_TYPE["SLOT1_VOICE"]: self.outputFrames(_ambe_frames, _ambe_frame1, _ambe_frame2, _ambe_frame3) if _payload_type == BURST_DATA_TYPE["SLOT2_VOICE"]: self.outputFrames(_ambe_frames, _ambe_frame1, _ambe_frame2, _ambe_frame3) self.lastPacketTimeout = time() + 10 else: if _payload_type == BURST_DATA_TYPE["VOICE_HEAD"]: _dst_sub = get_info(int_id(_dst_sub), talkgroup_ids) print("Ignored Voice Transmission Start on TS {} and TG {}".format("2" if _ts else "1", _dst_sub))
def private_voice(self, _network, _src_sub, _dst_sub, _ts, _end, _peerid, _data): # _log = logger.debug if (_ts not in self.ACTIVE_CALLS) or _end: _time = time.strftime('%m/%d/%y %H:%M:%S') _dst_sub = get_info(int_id(_dst_sub), subscriber_ids) _peerid = get_info(int_id(_peerid), peer_ids) _src_sub = get_info(int_id(_src_sub), subscriber_ids) if not _end: self.ACTIVE_CALLS.append(_ts) if _end: self.ACTIVE_CALLS.remove(_ts) if _ts: _ts = 2 else: _ts = 1 if _end: _end = 'END' else: _end = 'START' print( '{} ({}) Call {} Private Voice: \n\tIPSC Source:\t{}\n\tSubscriber:\t{}\n\tDestination:\t{}\n\tTimeslot\t{}' .format(_time, _network, _end, _peerid, _src_sub, _dst_sub, _ts))
def call_mon_status(self, _network, _data): if not status: return _source = _data[1:5] _ipsc_src = _data[5:9] _seq_num = _data[9:13] _ts = _data[13] _status = _data[15] # suspect [14:16] but nothing in leading byte? _rf_src = _data[16:19] _rf_tgt = _data[19:22] _type = _data[22] _prio = _data[23] _sec = _data[24] _source = get_info(int_id(_source), peer_ids) _ipsc_src = get_info(int_id(_ipsc_src), peer_ids) _rf_src = get_info(int_id(_rf_src), subscriber_ids) if _type == '\x4F' or '\x51': _rf_tgt = get_info(int_id(_rf_tgt), talkgroup_ids) else: _rf_tgt = get_info(int_id(_rf_tgt), subscriber_ids) print('Call Monitor - Call Status') print('TIME: ', datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) print('DATA SOURCE: ', _source) print('IPSC: ', _network) print('IPSC Source: ', _ipsc_src) print('Timeslot: ', TS[_ts]) try: print('Status: ', STATUS[_status]) except KeyError: print('Status (unknown): ', h(status)) try: print('Type: ', TYPE[_type]) except KeyError: print('Type (unknown): ', h(_type)) print('Source Sub: ', _rf_src) print('Target Sub: ', _rf_tgt) print()
def call_mon_nack(self, _network, _data): if not nack: return _source = _data[1:5] _nack = _data[5] _source = get_info(int_id(_source), peer_ids) print('Call Monitor - Transmission NACK') print('TIME: ', datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) print('DATA SOURCE: ', _source) try: print('NACK Cause: ', NACK[_nack]) except KeyError: print('NACK Cause (unknown): ', h(_nack)) print()
def call_mon_rpt(self, _network, _data): if not rpt: return _source = _data[1:5] _ts1_state = _data[5] _ts2_state = _data[6] _source = get_info(int_id(_source), peer_ids) print('Call Monitor - Repeater State') print('TIME: ', datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) print('DATA SOURCE: ', _source) try: print('TS1 State: ', REPEAT[_ts1_state]) except KeyError: print('TS1 State (unknown): ', h(_ts1_state)) try: print('TS2 State: ', REPEAT[_ts2_state]) except KeyError: print('TS2 State (unknown): ', h(_ts2_state)) print()
def group_data(self, _network, _src_sub, _dst_sub, _ts, _end, _peerid, _data): _dst_sub = get_info(int_id(_dst_sub), talkgroup_ids) _peerid = get_info(int_id(_peerid), peer_ids) _src_sub = get_info(int_id(_src_sub), subscriber_ids) print('({}) Group Data Packet Received From: {}' .format(_network, _src_sub))
def repeater_wake_up(self, _network, _data): _source = _data[1:5] _source_dec = int_id(_source) _source_name = get_info(_source_dec, peer_ids)
def repeater_wake_up(self, _network, _data): _source = _data[1:5] _source_dec = int_id(_source) _source_name = get_info(_source_dec, peer_ids) print('({}) Repeater Wake-Up Packet Received: {} ({})' .format(_network, _source_name, _source_dec))
def private_data(self, _network, _src_sub, _dst_sub, _ts, _end, _peerid, _data): _dst_sub = get_info(int_id(_dst_sub), subscriber_ids) _peerid = get_info(int_id(_peerid), peer_ids) _src_sub = get_info(int_id(_src_sub), subscriber_ids) print('({}) Private Data Packet Received From: {} To: {}' .format(_network, _src_sub, _dst_sub))