Add packet generation for XLX master module selection
This commit is contained in:
		
							parent
							
								
									24c201ffc2
								
							
						
					
					
						commit
						aa7fea86ba
					
				
							
								
								
									
										26
									
								
								hblink.py
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								hblink.py
									
									
									
									
									
								
							@ -290,6 +290,28 @@ class HBSYSTEM(DatagramProtocol):
 | 
			
		||||
        # KEEP THE FOLLOWING COMMENTED OUT UNLESS YOU'RE DEBUGGING DEEPLY!!!!
 | 
			
		||||
        # logger.debug('(%s) TX Packet to %s:%s -- %s', self._system, self._config['MASTER_IP'], self._config['MASTER_PORT'], ahex(_packet))
 | 
			
		||||
 | 
			
		||||
    def send_xlxmaster(self, radio, xlx, mastersock):
 | 
			
		||||
        radio3 = int.from_bytes(radio, 'big').to_bytes(3, 'big')
 | 
			
		||||
        radio4 = int.from_bytes(radio, 'big').to_bytes(4, 'big')
 | 
			
		||||
        xlx3   = xlx.to_bytes(3, 'big')
 | 
			
		||||
        streamid = bytearray.fromhex('6df88f36')
 | 
			
		||||
        for packetnr in range(5):
 | 
			
		||||
            if packetnr < 3:
 | 
			
		||||
                # First 3 packets, voice start, stream type e1
 | 
			
		||||
                strmtype = 225
 | 
			
		||||
                payload = bytearray.fromhex('4f2e00b501ae3a001c40a0c1cc7dff57d75df5d5065026f82880bd616f13f185890000')
 | 
			
		||||
            else:
 | 
			
		||||
                # Last 2 packets, voice end, stream type e2
 | 
			
		||||
                strmtype = 226
 | 
			
		||||
                payload = bytearray.fromhex('4f410061011e3a781c30a061ccbdff57d75df5d2534425c02fe0b1216713e885ba0000')
 | 
			
		||||
            packetnr1 = packetnr.to_bytes(1, 'big')
 | 
			
		||||
            strmtype1 = strmtype.to_bytes(1, 'big')
 | 
			
		||||
            _packet = b''.join([DMRD, packetnr1, radio3, xlx3, radio4, strmtype1, streamid, payload])
 | 
			
		||||
            self.transport.write(_packet, mastersock)
 | 
			
		||||
            # KEEP THE FOLLOWING COMMENTED OUT UNLESS YOU'RE DEBUGGING DEEPLY!!!!
 | 
			
		||||
            #logger.info('(%s) XLX Module Change Packet: %s', self._system, ahex(_packet))
 | 
			
		||||
        return
 | 
			
		||||
 | 
			
		||||
    def dmrd_received(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _call_type, _frame_type, _dtype_vseq, _stream_id, _data):
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
@ -638,6 +660,10 @@ class HBSYSTEM(DatagramProtocol):
 | 
			
		||||
                            self._stats['CONNECTION'] = 'YES'
 | 
			
		||||
                            self._stats['CONNECTED'] = time()
 | 
			
		||||
                            logger.info('(%s) Connection to Master Completed', self._system)
 | 
			
		||||
                            # If we are an XLX, send the XLX module request here.
 | 
			
		||||
                            if self._config['MODE'] == 'XLXPEER':
 | 
			
		||||
                                self.send_xlxmaster(self._config['RADIO_ID'], self._config['XLXMODULE'], self._config['MASTER_SOCKADDR'])
 | 
			
		||||
                                logger.info('(%s) Sending XLX Module request', self._system)
 | 
			
		||||
                    else:
 | 
			
		||||
                        self._stats['CONNECTION'] = 'NO'
 | 
			
		||||
                        logger.error('(%s) Master ACK Contained wrong ID - Connection Reset', self._system)
 | 
			
		||||
 | 
			
		||||
@ -2,3 +2,4 @@ bitstring>=3.1.5
 | 
			
		||||
bitarray>=0.8.1
 | 
			
		||||
Twisted>=16.3.0
 | 
			
		||||
dmr_utils3>=0.1.19
 | 
			
		||||
configparser>=3.0.0
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user