Пример #1
0
 def test_get_setType(self):
     msg = self.message
     with self.assertRaises(MessageError):
         Message(type=-1)
     with self.assertRaises(MessageError):
         Message(type=300)
     msg.type = 0x23
     self.assertEquals(msg.type, 0x23)
Пример #2
0
def ProcessBuffer(buffer_):
    messages = []
    
    while True:
        hf = Message()
        try:
            msg = hf.getHandler(buffer_)
            buffer_ = buffer_[len(msg.getPayload()) + 4:]
            messages.append(msg)
        except MessageError, e:
            if e.internal == "CHECKSUM":
                buffer_ = buffer_[ord(buffer_[1]) + 4:]
            else:
                break
Пример #3
0
def ProcessBuffer(buffer_):
    messages = []

    while True:
        hf = Message()
        try:
            msg = hf.getHandler(buffer_)
            buffer_ = buffer_[len(msg.getPayload()) + 4:]
            messages.append(msg)
        except MessageError, e:
            if e.internal == "CHECKSUM":
                buffer_ = buffer_[ord(buffer_[1]) + 4:]
            else:
                break
Пример #4
0
    def test_decode(self):
        self.assertRaises(MessageError, Message.decode, b'\xA5\x03\x42\x00\x00\x00\xE5')
        self.assertRaises(MessageError, Message.decode,
                          b'\xA4\x14\x42' + (b'\x00' * 20) + b'\xE5')
        self.assertRaises(MessageError, Message.decode, b'\xA4\x03\x42\x01\x02\xF3\xE5')
        msg = Message.decode(b'\xA4\x03\x42\x00\x00\x00\xE5')
        self.assertEqual(len(msg), 7)
        self.assertEqual(msg.type, MESSAGE_CHANNEL_ASSIGN)
        self.assertEqual(msg.payload, b'\x00' * 3)
        self.assertEqual(msg.checksum, 0xE5)

        msg = Message.decode(b'\xA4\x03\x42\x00\x00\x00\xE5')
        self.assertTrue(isinstance(msg, MSG.ChannelAssignMessage))
        self.assertRaises(MessageError, Message.decode, b'\xA4\x03\xFF\x00\x00\x00\xE5')
        self.assertRaises(MessageError, Message.decode, b'\xA4\x03\x42')
        self.assertRaises(MessageError, Message.decode, b'\xA4\x05\x42\x00\x00\x00\x00')
Пример #5
0
def EventPump(evm):
    buffer_ = b''
    while True:
        with evm.runningLock:
            if not evm.running:
                break

        try:
            buffer_ += evm.driver.read(20)
        except USBError as e:
            if e.errno in (60, 110):  # timeout
                continue
            else:
                raise

        messages = []
        while buffer_:
            try:
                msg = Message.decode(buffer_)
                messages.append(msg)
                buffer_ = buffer_[len(msg):]
            except MessageError as err:
                if err.internal is not Message.INCOMPLETE:
                    i, length = 1, len(buffer_)
                    # move to the next SYNC byte
                    while i < length and buffer_[i] != MESSAGE_TX_SYNC:
                        i += 1
                    buffer_ = buffer_[i:]
                else:
                    break

        with evm.evmCallbackLock:
            for message in messages:
                for callback in evm.callbacks:
                    try:
                        callback.process(message)
                    except Exception as err:  # pylint: disable=broad-except
                        print(err)
Пример #6
0
 def respond_with(self, msg: message.Message):
     self.evm.event_pumper.force_buffer(msg.encode())
Пример #7
0
 def test_encode(self):
     msg = self.message = Message(type=MESSAGE_CHANNEL_ASSIGN)
     self.assertEqual(msg.encode(), b'\xA4\x03\x42\x00\x00\x00\xE5')
Пример #8
0
 def test_getChecksum(self):
     msg = self.message = Message(type=MESSAGE_SYSTEM_RESET)
     self.assertEquals(msg.checksum, 0xEF)
     msg = self.message = Message(type=MESSAGE_CHANNEL_ASSIGN)
     self.assertEquals(msg.checksum, 0xE5)
Пример #9
0
 def setUp(self):
     self.message = Message(type=0x00)