class PDUv0Tx(codec.Envelope): STRUCT = ( Header(ver=0), codec.Uint32BE('fn'), codec.Uint('pwr'), codec.Buf('hard-bits'), )
class PDUv1Rx(codec.Envelope): STRUCT = ( Header(ver=1), codec.Uint32BE('fn'), codec.Uint('rssi', mult=-1), codec.Int16BE('toa256'), MTS(), codec.Int16BE('cir'), BurstBits('soft-bits'), )
class PDUv0Rx(codec.Envelope): STRUCT = ( Header(ver=0), codec.Uint32BE('fn'), codec.Uint('rssi', mult=-1), codec.Int16BE('toa256'), codec.Buf('soft-bits'), codec.Buf('pad'), # Optional ) def __init__(self, *args, **kw): codec.Envelope.__init__(self, *args, **kw) # Field 'soft-bits' is either 148 (GMSK) or 444 (8-PSK) octets long self.STRUCT[-2].get_len = lambda _, data: 444 if len(data ) > 148 else 148
class PDUv2Tx(codec.Envelope): class BPDU(codec.Envelope): ''' Batched PDU part. ''' STRUCT = ( Header(ver=2, batched=True), MTS(), codec.Uint('pwr'), codec.Int('scpir'), codec.Spare(len=3), BurstBits('hard-bits'), ) STRUCT = ( Header(ver=2), MTS(), codec.Uint('pwr'), codec.Int('scpir'), codec.Spare(len=3), codec.Uint32BE('fn'), BurstBits('hard-bits'), codec.Sequence(item=BPDU()).f('bpdu'), )
class PDUv2Rx(codec.Envelope): class BPDU(codec.Envelope): ''' Batched PDU part. ''' STRUCT = ( Header(ver=2, batched=True), MTS(), codec.Uint('rssi', mult=-1), codec.Int16BE('toa256'), codec.Int16BE('cir'), BurstBits('soft-bits'), ) STRUCT = ( Header(ver=2), MTS(), codec.Uint('rssi', mult=-1), codec.Int16BE('toa256'), codec.Int16BE('cir'), codec.Uint32BE('fn'), BurstBits('soft-bits'), codec.Sequence(item=BPDU()).f('bpdu'), )
def test_uint32(self): vals = (0, 33, 255, 1024, 1337, 4099, 2**32 - 1) self._test_uint(codec.Uint32BE('foo'), '>I', vals) self._test_uint(codec.Uint32LE('foo'), '<I', vals)