Esempio n. 1
0
class CHECK_CONTROL(unittest.TestCase):

    DEBUG = True

    def setUp(self):
        self.phy = Phy()
        self.dut = Datalink(self.phy)
        self.phy.clear()

    def test_write_ack(self):
        self.phy.set_ack(self.dut)
        obt = self.dut.write([
            42,
        ])
        self.assertEqual(obt, True)

    def test_write_nack(self):
        self.phy.set_nack(self.dut)
        obt = self.dut.write([
            42,
        ])
        self.assertEqual(obt, False)

    def test_write_no_answer(self):
        retry_cnt = self.dut.retry_cnt
        obt = self.dut.write([
            42,
        ])
        self.assertIsNone(obt)
        self.assertEqual(self.phy.any_check_cnt, retry_cnt)
Esempio n. 2
0
 def setUp(self):
     self.phy = Phy()
     self.data = [random.randint(0, 255) for i in range(10)]
     self.dut = Datalink(self.phy)
     self.phy.set_ack(self.dut)
     self.dut.write([
         0x1B,
     ])
     self.phy_out = self.phy.get_written()
Esempio n. 3
0
def main():
    ser = dl_com(uart_dev, baudrate=baud, timeout=80.0/baud)
    com = Datalink(ser, debug=False)
    while True:
        data=bytes("Hello world!", "ascii")
        ans=com.write(data)
        if ans:
            ans = com.read()
            print("received answer")
            if ans is not None and len(ans)>0:
                print(ans)
Esempio n. 4
0
def main():
    ser = dl_com(uart_dev, baudrate=baud, timeout=80.0 / baud)
    com = Datalink(ser, debug=False)
    while True:
        data = bytes("Hello world!", "ascii")
        ans = com.write(data)
        if ans:
            ans = com.read()
            print("received answer")
            if ans is not None and len(ans) > 0:
                print(ans)
Esempio n. 5
0
class Test_Remote(unittest.TestCase):

    SER_DEV='/dev/ttyACM0'
    
    def setUp(self):
        self._com=dl_com(self.SER_DEV, baudrate=115200)
        self._dl=Datalink(self._com)
    
    def teardown(self):
        self._com.close()
    
    def test_send_receive(self):
        data = "Hello world"
        self._dl.write(data)
        obt=self._dl.read_str()
        self.assertEqual(data, obt)
Esempio n. 6
0
 def setUp(self):
     self.phy = Phy()
     self.data = [ random.randint(0,255) for i in range(10) ]
     self.dut = Datalink(self.phy)
     self.phy.set_ack(self.dut)
     self.dut.write([0x1B, ])
     self.phy_out = self.phy.get_written()
Esempio n. 7
0
class Test_Remote(unittest.TestCase):

    SER_DEV = '/dev/ttyACM0'

    def setUp(self):
        self._com = dl_com(self.SER_DEV, baudrate=115200)
        self._dl = Datalink(self._com)

    def teardown(self):
        self._com.close()

    def test_send_receive(self):
        data = "Hello world"
        self._dl.write(data)
        obt = self._dl.read_str()
        self.assertEqual(data, obt)
Esempio n. 8
0
class CHECK_CONTROL(unittest.TestCase):

    DEBUG = True

    def setUp(self):
        self.phy = Phy()
        self.dut = Datalink(self.phy)
        self.phy.clear()

    def test_write_ack(self):
        self.phy.set_ack(self.dut)
        obt = self.dut.write([42, ])
        self.assertEqual(obt,  True)

    def test_write_nack(self):
        self.phy.set_nack(self.dut)
        obt = self.dut.write([42, ])
        self.assertEqual(obt,  False)

    def test_write_no_answer(self):
        retry_cnt = self.dut.retry_cnt
        obt = self.dut.write([42, ])
        self.assertIsNone(obt)
        self.assertEqual(self.phy.any_check_cnt, retry_cnt )
Esempio n. 9
0
class CHECK_READ(unittest.TestCase):

    DEBUG = False

    def setUp(self):
        self.phy = Phy()
        self.data = [ random.randint(0,255) for i in range(10) ]
        self.dut = Datalink(self.phy)
        self.phy.set_ack(self.dut)
        self.dut.write([0x1B, ])
        self.phy_out = self.phy.get_written()

    def test_ignore_everything_before_sof(self):
        ignore_data = [41, 42, 43, 44,  0x04]
        self.phy.set_readable(ignore_data)
        self.phy.set_readable(self.phy_out)
        self.phy.set_ack(self.dut)
        #
        # Test
        #
        obt = self.dut.read()
        #
        # Evaluate
        #
        self.assertEqual(1, len(obt))

    def test_read_ack(self):
        for val in range(256):
            self.phy.clear()
            self.phy.set_ack(self.dut)
            self.dut.write([val, ])
            phy_out = self.phy.get_written()
            self.phy.set_readable(phy_out)
            #
            # Test
            #
            obt = self.dut.read()
            #
            # Evaluate
            #
            self.assertEqual(1, len(obt))
            for e,o in zip([val,], obt):
                self.assertEqual(e, o)
            ans_pkt = self.phy.get_written()
            self.assertEqual(ans_pkt[2], self.dut.STATES['ACK'])

    def test_read_corrupted_no_nack_or_ack(self):
        self.phy.clear()
        self.phy.set_ack(self.dut)
        self.dut.write([42, ])
        phy_out = self.phy.get_written()
        self.phy.set_readable(phy_out[0:-3])
        #
        # Test
        #
        obt = self.dut.read()
        #
        # Evaluate
        #
        ans_pkt = self.phy.get_written()
        self.assertIsNone(ans_pkt)
        self.assertIsNone(obt)

    def test_read_wrong_crc_nack(self):
        self.phy.set_ack(self.dut)
        self.dut.write([42, ])
        phy_out = self.phy.get_written()
        phy_out[-2]=0
        self.phy.set_readable(phy_out)
        #
        # Test
        #
        obt = self.dut.read()
        #
        # Evaluate
        #
        ans_pkt = self.phy.get_written()
        self.assertEqual(ans_pkt[2], self.dut.STATES['NACK'])
        self.assertIsNone(obt)

    def test_write_read_long(self):
        data = [i for i in range(256)]
        self.phy.clear()
        self.phy.set_ack(self.dut)
        self.dut.write(data)
        phy_out = self.phy.get_written()
        self.phy.set_readable(phy_out)
        #
        # Test
        #
        obt = self.dut.read()
        #
        # Evaluate
        #
        self.assertEqual(len(data), len(obt))
        for e,o in zip(data, obt):
            self.assertEqual(e, o)

    def test_echo(self):
        self.phy.set_readable(self.phy_out)
        #self.phy.set_ack(self.dut)
        self.dut.echo()
Esempio n. 10
0
class CHECK_WRITE(unittest.TestCase):

    DEBUG = False

    def setUp(self):
        self.phy = Phy()
        self.data = [ random.randint(0,255) for i in range(10) ]
        self.dut = Datalink(self.phy)

    def calc_packet_crc(self, payload):
        packet=[]
        if self.dut.USE_PACKET_TYPE:
            packet.append(self.dut.PACKET_TYPE['DATA'])
        crc = self.dut.crc(packet)
        payload_esc = []
        for val in payload:
            payload_esc.extend(self.dut.ESC_MAP.get(val, [val,]))
        if self.dut.USE_LENGTH_FIELD:
            length = len(payload_esc)
            if self.dut.INCLUDE_HEADER_IN_LENGTH:
                length += self.dut._header_size
            packet.append(length)
            crc.dut.crc([length,], crc)
        crc = self.dut.crc(payload, crc)
        packet.extend(payload_esc)
        return crc

    def test_crc_list(self):
        exp = calc_crc(self.data)
        obt = self.dut.crc(self.data)
        if self.DEBUG:
            print("Exp: 0x%02x Obtained: 0x%02x" % (exp, obt))
        self.assertEqual(obt, exp)

    def test_write_no_escape(self):
        for exp in range(256):
            if exp in self.dut.ESC_MAP.keys():
                continue
            self.phy.set_ack(self.dut)
            self.dut.write([exp, ])
            res = self.phy.get_written()
            exp_len = 5
            packet = [exp,]
            crc = self.calc_packet_crc(packet)
            if crc in self.dut.ESC_MAP.keys():
                exp_len+=1
            self.assertEqual(exp_len, len(res))
            for idx, val in enumerate(self.dut.ESCAPE['SOF']):
                self.assertEqual(res[idx], val)
            for idx, val in enumerate(self.dut.ESCAPE['EOF']):
                ridx = len(self.dut.ESCAPE['EOF'])
                self.assertEqual(res[-(ridx+idx)], val)
            for e,o in zip([self.dut.PACKET_TYPE['DATA'], exp, ], res[1:-1]):
                self.assertEqual(e, o)

    def test_write_escape(self):
        for esc, val in self.dut.ESC_MAP.items():
            self.phy.set_ack(self.dut)
            self.dut.write([esc, ])
            res = self.phy.get_written()
            exp_len = 6
            crc = self.calc_packet_crc([esc,])
            if crc in self.dut.ESC_MAP.keys():
                exp_len+=1
            self.assertEqual(exp_len, len(res))
            for idx,v in enumerate(self.dut.ESCAPE['SOF']):
                self.assertEqual(res[0+idx], self.dut.ESCAPE['SOF'][idx])
            self.assertEqual(res[1], self.dut.PACKET_TYPE['DATA'])
            self.assertEqual(res[2], val[0])
            self.assertEqual(res[3], val[1])
            eof_idx=len(res)-len(self.dut.ESCAPE['EOF'])
            for idx,v in enumerate(self.dut.ESCAPE['EOF']):
                self.assertEqual(res[eof_idx+idx], self.dut.ESCAPE['EOF'][idx])

    def test_write_no_answer(self):
        val = 42
        state = self.dut.write([val, ])
        self.assertIsNone(state)
Esempio n. 11
0
 def setUp(self):
     self._com = dl_com(self.SER_DEV, baudrate=115200)
     self._dl = Datalink(self._com)
Esempio n. 12
0
 def setUp(self):
     self.phy = Phy()
     self.dut = Datalink(self.phy)
     self.phy.clear()
Esempio n. 13
0
class CHECK_READ(unittest.TestCase):

    DEBUG = False

    def setUp(self):
        self.phy = Phy()
        self.data = [random.randint(0, 255) for i in range(10)]
        self.dut = Datalink(self.phy)
        self.phy.set_ack(self.dut)
        self.dut.write([
            0x1B,
        ])
        self.phy_out = self.phy.get_written()

    def test_ignore_everything_before_sof(self):
        ignore_data = [41, 42, 43, 44, 0x04]
        self.phy.set_readable(ignore_data)
        self.phy.set_readable(self.phy_out)
        self.phy.set_ack(self.dut)
        #
        # Test
        #
        obt = self.dut.read()
        #
        # Evaluate
        #
        self.assertEqual(1, len(obt))

    def test_read_ack(self):
        for val in range(256):
            self.phy.clear()
            self.phy.set_ack(self.dut)
            self.dut.write([
                val,
            ])
            phy_out = self.phy.get_written()
            self.phy.set_readable(phy_out)
            #
            # Test
            #
            obt = self.dut.read()
            #
            # Evaluate
            #
            self.assertEqual(1, len(obt))
            for e, o in zip([
                    val,
            ], obt):
                self.assertEqual(e, o)
            ans_pkt = self.phy.get_written()
            self.assertEqual(ans_pkt[2], self.dut.STATES['ACK'])

    def test_read_corrupted_no_nack_or_ack(self):
        self.phy.clear()
        self.phy.set_ack(self.dut)
        self.dut.write([
            42,
        ])
        phy_out = self.phy.get_written()
        self.phy.set_readable(phy_out[0:-3])
        #
        # Test
        #
        obt = self.dut.read()
        #
        # Evaluate
        #
        ans_pkt = self.phy.get_written()
        self.assertIsNone(ans_pkt)
        self.assertIsNone(obt)

    def test_read_wrong_crc_nack(self):
        self.phy.set_ack(self.dut)
        self.dut.write([
            42,
        ])
        phy_out = self.phy.get_written()
        phy_out[-2] = 0
        self.phy.set_readable(phy_out)
        #
        # Test
        #
        obt = self.dut.read()
        #
        # Evaluate
        #
        ans_pkt = self.phy.get_written()
        self.assertEqual(ans_pkt[2], self.dut.STATES['NACK'])
        self.assertIsNone(obt)

    def test_write_read_long(self):
        data = [i for i in range(256)]
        self.phy.clear()
        self.phy.set_ack(self.dut)
        self.dut.write(data)
        phy_out = self.phy.get_written()
        self.phy.set_readable(phy_out)
        #
        # Test
        #
        obt = self.dut.read()
        #
        # Evaluate
        #
        self.assertEqual(len(data), len(obt))
        for e, o in zip(data, obt):
            self.assertEqual(e, o)

    def test_echo(self):
        self.phy.set_readable(self.phy_out)
        #self.phy.set_ack(self.dut)
        self.dut.echo()
Esempio n. 14
0
 def setUp(self):
     self._com=dl_com(self.SER_DEV, baudrate=115200)
     self._dl=Datalink(self._com)
Esempio n. 15
0
class CHECK_WRITE(unittest.TestCase):

    DEBUG = False

    def setUp(self):
        self.phy = Phy()
        self.data = [random.randint(0, 255) for i in range(10)]
        self.dut = Datalink(self.phy)

    def calc_packet_crc(self, payload):
        packet = []
        if self.dut.USE_PACKET_TYPE:
            packet.append(self.dut.PACKET_TYPE['DATA'])
        crc = self.dut.crc(packet)
        payload_esc = []
        for val in payload:
            payload_esc.extend(self.dut.ESC_MAP.get(val, [
                val,
            ]))
        if self.dut.USE_LENGTH_FIELD:
            length = len(payload_esc)
            if self.dut.INCLUDE_HEADER_IN_LENGTH:
                length += self.dut._header_size
            packet.append(length)
            crc.dut.crc([
                length,
            ], crc)
        crc = self.dut.crc(payload, crc)
        packet.extend(payload_esc)
        return crc

    def test_crc_list(self):
        exp = calc_crc(self.data)
        obt = self.dut.crc(self.data)
        if self.DEBUG:
            print("Exp: 0x%02x Obtained: 0x%02x" % (exp, obt))
        self.assertEqual(obt, exp)

    def test_write_no_escape(self):
        for exp in range(256):
            if exp in self.dut.ESC_MAP.keys():
                continue
            self.phy.set_ack(self.dut)
            self.dut.write([
                exp,
            ])
            res = self.phy.get_written()
            exp_len = 5
            packet = [
                exp,
            ]
            crc = self.calc_packet_crc(packet)
            if crc in self.dut.ESC_MAP.keys():
                exp_len += 1
            self.assertEqual(exp_len, len(res))
            for idx, val in enumerate(self.dut.ESCAPE['SOF']):
                self.assertEqual(res[idx], val)
            for idx, val in enumerate(self.dut.ESCAPE['EOF']):
                ridx = len(self.dut.ESCAPE['EOF'])
                self.assertEqual(res[-(ridx + idx)], val)
            for e, o in zip([
                    self.dut.PACKET_TYPE['DATA'],
                    exp,
            ], res[1:-1]):
                self.assertEqual(e, o)

    def test_write_escape(self):
        for esc, val in self.dut.ESC_MAP.items():
            self.phy.set_ack(self.dut)
            self.dut.write([
                esc,
            ])
            res = self.phy.get_written()
            exp_len = 6
            crc = self.calc_packet_crc([
                esc,
            ])
            if crc in self.dut.ESC_MAP.keys():
                exp_len += 1
            self.assertEqual(exp_len, len(res))
            for idx, v in enumerate(self.dut.ESCAPE['SOF']):
                self.assertEqual(res[0 + idx], self.dut.ESCAPE['SOF'][idx])
            self.assertEqual(res[1], self.dut.PACKET_TYPE['DATA'])
            self.assertEqual(res[2], val[0])
            self.assertEqual(res[3], val[1])
            eof_idx = len(res) - len(self.dut.ESCAPE['EOF'])
            for idx, v in enumerate(self.dut.ESCAPE['EOF']):
                self.assertEqual(res[eof_idx + idx],
                                 self.dut.ESCAPE['EOF'][idx])

    def test_write_no_answer(self):
        val = 42
        state = self.dut.write([
            val,
        ])
        self.assertIsNone(state)
Esempio n. 16
0
 def setUp(self):
     self.phy = Phy()
     self.dut = Datalink(self.phy)
     self.phy.clear()
Esempio n. 17
0
 def setUp(self):
     self.phy = Phy()
     self.data = [random.randint(0, 255) for i in range(10)]
     self.dut = Datalink(self.phy)
Esempio n. 18
0
 def setUp(self):
     self.phy = Phy()
     self.data = [ random.randint(0,255) for i in range(10) ]
     self.dut = Datalink(self.phy)
Esempio n. 19
0
def get_datalink(dev_name):
    dev = dl_com(dev_name, timeout=timeout)
    dl = Datalink(dev)
    return dl