Example #1
0
    def __init__(self):
        super().__init__()

        self.f = Fields()
        self.f.add(U4('iTow'))
        self.f.add(U1_GpsFix('gpsFix'))
        self.f.add(X1_Flags('flags'))
        self.f.add(X1('fixStat'))
        self.f.add(X1('flags2'))

        self.f.add(U4('ttff'))
        self.f.add(U4('msss'))
Example #2
0
    def __init__(self):
        super().__init__()

        self.f = Fields()
        self.f.add(U4('iTow'))
        self.f.add(U1('version'))
        self.f.add(U1_Flags('flags'))
        self.f.add(U1('error'))
        self.f.add(Padding(1, 'res1'))
        self.f.add(U4('yaw'))  # 1e-2, 0..+360
        self.f.add(I2('pitch'))  # 1e-2, -90..+90
        self.f.add(I2('roll'))  # 1e-2, -180..180
Example #3
0
    def __init__(self):
        super().__init__()

        self.f.add(X4('bitfield'))  # u-blox describes as U4, bit is X4
        self.f.add(U4('yaw'))       # 1e-2, 0..360°
        self.f.add(I2('pitch'))     # 1e-2, -90..90°
        self.f.add(I2('roll'))      # 1e-2, -180..180°
Example #4
0
    def __init__(self):
        super().__init__()

        self.f = Fields()
        self.f.add(U4('timeTag'))
        self.f.add(X2('flags'))
        self.f.add(U2('id'))
        self.f.add(X4('data'))
Example #5
0
    def __init__(self):
        super().__init__()

        self.f.add(U1('type'))
        self.f.add(U1('version'))
        self.f.add(X1('ref'))

        self.f.add(I1('leapSecs'))
        self.f.add(U2('year'))
        self.f.add(U1('month'))
        self.f.add(U1('day'))
        self.f.add(U1('hour'))
        self.f.add(U1('minute'))
        self.f.add(U1('second'))
        self.f.add(Padding(1, 'res1'))
        self.f.add(U4('ns'))

        self.f.add(U2('tAccS'))
        self.f.add(Padding(2, 'res2'))
        self.f.add(U4('tAccNs'))
Example #6
0
    def __init__(self):
        super().__init__()

        self.f = Fields()
        self.f.add(U4('iTow'))
        self.f.add(U1('version'))
        self.f.add(X1('bitfield0'))
        self.f.add(Padding(2, 'res1'))
        self.f.add(I4('yaw'))  # 1e-1 -> more likely 1e-2
        self.f.add(I2('pitch'))  # 1e-1
        self.f.add(I2('roll'))  # 1e-1
Example #7
0
    def __init__(self):
        super().__init__()

        self.f.add(U1('PortId'))
        self.f.add(Padding(1, 'res1'))
        self.f.add(X2('txReady'))
        self.f.add(X4_Mode('mode'))
        self.f.add(U4('baudRate'))

        self.f.add(X2_Proto('inProtoMask'))
        self.f.add(X2_Proto('outProtoMask'))
        self.f.add(X2('flags'))
        self.f.add(Padding(2, 'res2'))
Example #8
0
    def test_pack1(self):
        u = Fields()
        u.add(I4('test'))
        u.add(U1('val'))
        u.add(Padding(3, 'res1'))
        u.add(U4('test2'))

        u.test = 0x76543210
        u.val = 0xAF
        u.test2 = 0xcafebabe

        data = u.pack()
        print(data)
        assert data == bytearray.fromhex('10 32 54 76 AF 00 00 00 be ba fe ca')
Example #9
0
    def __init__(self):
        super().__init__()

        self.f.add(X2('mask'))
        self.f.add(U1('dynModel'))
        self.f.add(U1('fixMode'))
        self.f.add(I4('fixedAlt'))
        self.f.add(U4('fixedAltVar'))
        self.f.add(I1('minElev'))
        self.f.add(U1('drLimit'))   # reserved
        self.f.add(U2('pDop'))
        self.f.add(U2('tDop'))
        self.f.add(U2('pAcc'))
        self.f.add(U2('tAcc'))
        self.f.add(U1('staticHoldThresh'))
        self.f.add(U1('dgpsTimeOut'))
        self.f.add(U1('cnoThreshNumSVs'))
        self.f.add(U1('cnoThresh'))
        self.f.add(U2('pAccAdr'))
        self.f.add(U2('staticHoldMaxDist'))
        self.f.add(U1('utcStandard'))
        self.f.add(Padding(5, 'res1'))
Example #10
0
    def unpack(self):
        # Dynamically build fields based on message length
        self.f = Fields()
        self.f.add(U4('iTow'))
        self.f.add(U1('version'))
        self.f.add(X1_InitStatus1('initStatus1'))
        self.f.add(X1_InitStatus2('initStatus2'))
        self.f.add(Padding(5, 'res1'))
        self.f.add(U1_FusionMode('fusionMode'))
        self.f.add(Padding(2, 'res2'))
        self.f.add(U1('numSens'))

        # Extract upto this place to read number of sensors
        super().unpack()

        # Build final list
        for sensor in range(self.f.numSens):
            self.f.add(X1_SensStatus1(f'sensStatus1_{sensor}'))
            self.f.add(X1_SensStatus2(f'sensStatus2_{sensor}'))
            self.f.add(U1(f'freq_{sensor}'))
            self.f.add(X1(f'faults_{sensor}'))

        super().unpack()