Example #1
0
 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))
Example #2
0
 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))
Example #3
0
File: rcm.py Project: ebook/DMRlink
 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()
Example #4
0
    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))
Example #5
0
 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))
Example #6
0
    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()
Example #7
0
    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))
Example #8
0
    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))
Example #9
0
 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()
Example #10
0
 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()
Example #11
0
    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()
Example #12
0
 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()
Example #13
0
    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()
Example #14
0
 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))
Example #15
0
 def repeater_wake_up(self, _network, _data):
     _source = _data[1:5]
     _source_dec = int_id(_source)
     _source_name = get_info(_source_dec, peer_ids)
Example #16
0
 def repeater_wake_up(self, _network, _data):
     _source = _data[1:5]
     _source_dec = int_id(_source)
     _source_name = get_info(_source_dec, peer_ids)
Example #17
0
File: rcm.py Project: ebook/DMRlink
 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))
Example #18
0
 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))