예제 #1
0
    def test_contruct(self):
        total = bytes.fromhex(
            "7EA0382102233034E7E6E7006129A109060760857405080101A203020100A305A103020100BE10040E0800065F1F0400001E1D04C80007B86A7E"
        )
        information_part = bytes.fromhex(
            "E6E7006129A109060760857405080101A203020100A305A103020100BE10040E0800065F1F0400001E1D04C80007"
        )
        server_address = address.HdlcAddress(logical_address=1,
                                             physical_address=17,
                                             address_type="server")

        # Public client
        client_address = address.HdlcAddress(logical_address=16,
                                             physical_address=None,
                                             address_type="client")
        frame = frames.InformationFrame(
            destination_address=client_address,
            source_address=server_address,
            payload=information_part,
            send_sequence_number=0,
            receive_sequence_number=1,
            segmented=False,
            final=True,
        )

        print(f"length = {frame.frame_length}  :: {len(frame.to_bytes())}")

        print(total.hex())
        print(frame.to_bytes().hex())
        assert frame.to_bytes() == total
예제 #2
0
    def test_construct(self):

        total = bytes.fromhex(
            "7EA02C02232110AF9FE6E600601DA109060760857405080101BE10040E01000000065F1F0400001E1DFFFFC5E47E"
        )
        information_part = bytes.fromhex(
            "E6E600601DA109060760857405080101BE10040E01000000065F1F0400001E1DFFFF"
        )
        server_address = address.HdlcAddress(logical_address=1,
                                             physical_address=17,
                                             address_type="server")

        # Public client
        client_address = address.HdlcAddress(logical_address=16,
                                             physical_address=None,
                                             address_type="client")
        frame = frames.InformationFrame(
            destination_address=server_address,
            source_address=client_address,
            payload=information_part,
            send_sequence_number=0,
            receive_sequence_number=0,
            segmented=False,
            final=True,
        )

        print(total)
        print(frame.to_bytes())
        assert frame.to_bytes() == total
예제 #3
0
    def test_parses_correct(self):
        out_data = bytes.fromhex("7ea00802232193bd647e")
        destination_address = address.HdlcAddress(logical_address=1,
                                                  physical_address=17,
                                                  address_type="server")

        # Public client
        source_address = address.HdlcAddress(logical_address=16,
                                             physical_address=None,
                                             address_type="client")
        snrm = frames.SetNormalResponseModeFrame(destination_address,
                                                 source_address)

        assert snrm.to_bytes() == out_data
예제 #4
0
 def test_client_address_just_logical(self, hdlc_address, resulting_bytes):
     add = address.HdlcAddress(
         logical_address=hdlc_address[0],
         physical_address=hdlc_address[1],
         address_type=hdlc_address[2],
     )
     assert add.to_bytes() == resulting_bytes
예제 #5
0
    def test_parser_correctly(self):
        out_data = bytes.fromhex(
            "7EA01F21022373E6C781801205019A06019A070400000001080400000001CCA27E"
        )
        # from device so public client is destination address.
        source_address = address.HdlcAddress(logical_address=1,
                                             physical_address=17,
                                             address_type="server")

        # Public client
        destination_address = address.HdlcAddress(logical_address=16,
                                                  physical_address=None,
                                                  address_type="client")

        information = out_data[9:-3]
        ua = frames.UnNumberedAcknowledgmentFrame(destination_address,
                                                  source_address, information)
        print(ua.hcs.hex())
        print(ua.to_bytes().hex())
        print(out_data.hex())
        assert ua.to_bytes() == out_data
예제 #6
0
 def client_hdlc_address(self):
     return address.HdlcAddress(
         logical_address=self.client_logical_address,
         physical_address=self.client_physical_address,
         address_type="client",
     )
예제 #7
0
 def server_hdlc_address(self):
     return address.HdlcAddress(
         logical_address=self.server_logical_address,
         physical_address=self.server_physical_address,
         address_type="server",
     )