Ejemplo n.º 1
0
    def test_not_equal(self):
        c1 = UbxCID(0x05, 0x00)
        c2 = UbxCID(0x05, 0x01)
        assert c1 != c2

        c1 = UbxCID(0x05, 0x01)
        c2 = UbxCID(0x06, 0x01)
        assert c1 != c2
Ejemplo n.º 2
0
    def test_immutable(self):
        c1 = UbxCID(0x05, 0x01)
        with pytest.raises(AttributeError):
            c1.cls = 0x06

        with pytest.raises(AttributeError):
            c1.id = 0x44

        res = str(c1)
        assert res == 'cls:05 id:01'
Ejemplo n.º 3
0
    def process(self, data):
        for d in data:
            if self.state == __class__.State.INIT:
                if d == UbxFrame.SYNC_1:
                    self.state = __class__.State.SYNC

            elif self.state == __class__.State.SYNC:
                if d == UbxFrame.SYNC_2:
                    self._reset()
                    self.state = __class__.State.CLASS
                else:
                    self.state = __class__.State.INIT

            elif self.state == __class__.State.CLASS:
                self.msg_class = d
                self.checksum.add(d)
                self.state = __class__.State.ID

            elif self.state == __class__.State.ID:
                self.msg_id = d
                self.checksum.add(d)
                self.state = __class__.State.LEN1

            elif self.state == __class__.State.LEN1:
                self.msg_len = d
                self.checksum.add(d)
                self.state = __class__.State.LEN2

            elif self.state == __class__.State.LEN2:
                self.msg_len = self.msg_len + (d * 256)
                self.checksum.add(d)
                # TODO: Handle case with len = 0 -> goto CRC directly
                # TODO: Handle case with unreasonable size
                self.ofs = 0
                self.state = __class__.State.DATA

            elif self.state == __class__.State.DATA:
                self.msg_data.append(d)
                self.checksum.add(d)
                self.ofs += 1
                if self.ofs == self.msg_len:
                    self.state = __class__.State.CRC1

            elif self.state == __class__.State.CRC1:
                self.cka = d
                self.state = __class__.State.CRC2

            elif self.state == __class__.State.CRC2:
                self.ckb = d

                # if checksum matches received checksum put frame in receive queue
                if self.checksum.matches(self.cka, self.ckb):
                    # Send CID and data as tuple to server
                    self.rx_queue.put((UbxCID(self.msg_class,
                                              self.msg_id), self.msg_data))
                else:
                    logger.warning(f'checksum error in frame, discarding')

                self._reset()
                self.state = __class__.State.INIT
Ejemplo n.º 4
0
    def test_frame_construct(self, frame_factory):
        frame_factory.register(UbxAckAck)

        data = bytearray.fromhex('11 22')
        f = frame_factory.build_with_data(UbxAckAck.CID, data)
        assert f.CID == UbxCID(0x05, 0x01)
        assert f.f.clsId == 0x11
        assert f.f.msgId == 0x22
Ejemplo n.º 5
0
    def __init__(self, device_name=None):
        super().__init__()

        self.device_name = device_name
        self.selected_device = None
        self.cmd_header = None
        self.connect_msg = f'?WATCH={{"enable":true,"raw":2}}'.encode()
        self.enabled = False

        self.listen_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.response_queue = queue.Queue()
        self.parser = UbxParser(self.response_queue)
        self.thread_ready_event = threading.Event()
        self.thread_stop_event = threading.Event()

        self.frame_factory = FrameFactory.getInstance()
        self.wait_cid = None
        self.gpsd_errors = 0
        self.cid_error = UbxCID(0x00, 0x01)
Ejemplo n.º 6
0
class UbxEsfMeas_(UbxFrame):
    CID = UbxCID(0x10, 0x02)
    NAME = 'UBX-ESF-MEAS'
Ejemplo n.º 7
0
class UbxEsfStatus_(UbxFrame):
    CID = UbxCID(0x10, 0x10)
    NAME = 'UBX-ESF-STATUS'
Ejemplo n.º 8
0
class UbxCfgTp5_(UbxFrame):
    CID = UbxCID(0x06, 0x31)
    NAME = 'UBX-CFG-TP5'
Ejemplo n.º 9
0
class UbxCfgRst_(UbxFrame):
    NAME = 'UBX-CFG-RST'
    CID = UbxCID(0x06, 0x04)
Ejemplo n.º 10
0
class UbxCfgNav5_(UbxFrame):
    CID = UbxCID(0x06, 0x24)
    NAME = 'UBX-CFG-NAV5'
Ejemplo n.º 11
0
class UbxEsfAlg_(UbxFrame):
    CID = UbxCID(0x10, 0x14)
    NAME = 'UBX-ESF-ALG'
Ejemplo n.º 12
0
 def test_equal(self):
     c1 = UbxCID(0x05, 0x01)
     c2 = UbxCID(0x05, 0x01)
     assert c1 == c2
Ejemplo n.º 13
0
 def test_print(self):
     c = UbxCID(0x05, 0x01)
     res = str(c)
     assert res == 'cls:05 id:01'
Ejemplo n.º 14
0
class UbxCfgEsfAlg_(UbxFrame):
    CID = UbxCID(0x06, 0x56)
    NAME = 'UBX-CFG-ESFALG'
Ejemplo n.º 15
0
class UbxMonVer_(UbxFrame):
    CID = UbxCID(0x0A, 0x04)
    NAME = 'UBX-MON-VER'
Ejemplo n.º 16
0
    def test_unkown_frame(self, frame_factory):
        frame_factory.register(UbxAckAck)

        with pytest.raises(KeyError):
            m = frame_factory.build(UbxCID(99, 99))
Ejemplo n.º 17
0
 def test_registration(self, frame_factory):
     frame_factory.register(UbxAckAck)
     f1 = frame_factory.build(UbxCID(5, 1))
     assert type(f1) == UbxAckAck
Ejemplo n.º 18
0
class UbxCfgPrt_(UbxFrame):
    CID = UbxCID(0x06, 0x00)
    NAME = 'UBX-CFG-PRT'

    PORTID_Uart = 1
Ejemplo n.º 19
0
class UbxEsfResetAlgAction(UbxFrame):
    CID = UbxCID(0x10, 0x13)
    NAME = 'UBX-ESF-RESETALG'

    def __init__(self):
        super().__init__()
Ejemplo n.º 20
0
class UbxCfgGnss_(UbxFrame):
    CID = UbxCID(0x06, 0x3E)
    NAME = 'UBX-CFG-GNSS'
Ejemplo n.º 21
0
class UbxNavStatus_(UbxFrame):
    CID = UbxCID(0x01, 0x03)
    NAME = 'UBX-NAV-STATUS'
Ejemplo n.º 22
0
class UbxUpdSos_(UbxFrame):
    NAME = 'UBX-UPD-SOS'
    CID = UbxCID(0x09, 0x14)
Ejemplo n.º 23
0
class UbxMgaIniTimeUtc_(UbxFrame):
    CID = UbxCID(0x13, 0x40)
    NAME = 'UBX-MGA-INI-TIME_UTC'
Ejemplo n.º 24
0
 def test_creation(self):
     c = UbxCID(0x05, 0x01)
     assert c.cls == 0x05
     assert c.id == 0x01
Ejemplo n.º 25
0
class UbxCfgNmea_(UbxFrame):
    CID = UbxCID(0x06, 0x17)
    NAME = 'UBX-CFG-NMEA'
Ejemplo n.º 26
0
class UbxCfgCfg_(UbxFrame):
    NAME = 'UBX-CFG-CFG'
    CID = UbxCID(0x06, 0x09)