예제 #1
0
class PDUv0Tx(codec.Envelope):
    STRUCT = (
        Header(ver=0),
        codec.Uint32BE('fn'),
        codec.Uint('pwr'),
        codec.Buf('hard-bits'),
    )
예제 #2
0
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'),
    )
예제 #3
0
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
예제 #4
0
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'),
    )
예제 #5
0
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'),
    )
예제 #6
0
 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)