Ejemplo n.º 1
0
def set_response() -> xdlms.SetResponseNormal:
    return xdlms.SetResponseNormal(
        result=enumerations.DataAccessResult.SUCCESS,
        invoke_id_and_priority=xdlms.InvokeIdAndPriority(invoke_id=1,
                                                         confirmed=True,
                                                         high_priority=True),
    )
Ejemplo n.º 2
0
 def test_transform_bytes(self):
     data = b"\xc7\x01\xc0\x00\x00"
     action = xdlms.ActionResponseNormal(
         enumerations.ActionResultStatus.SUCCESS,
         invoke_id_and_priority=xdlms.InvokeIdAndPriority(
             invoke_id=0, confirmed=True, high_priority=True),
     )
     assert data == action.to_bytes()
     assert action == xdlms.ActionResponseNormal.from_bytes(data)
Ejemplo n.º 3
0
 def test_transform_bytes(self):
     data = b"\xc5\x01\xc1\x00"
     response = xdlms.SetResponseNormal(
         result=enumerations.DataAccessResult.SUCCESS,
         invoke_id_and_priority=xdlms.InvokeIdAndPriority(
             invoke_id=1, confirmed=True, high_priority=True
         ),
     )
     assert data == response.to_bytes()
     assert response == xdlms.SetResponseNormal.from_bytes(data)
Ejemplo n.º 4
0
 def test_transform_bytes(self):
     data = b"\xc7\x01\xc0\x00\x01\x01\xfa"
     action = xdlms.ActionResponseNormalWithError(
         enumerations.ActionResultStatus.SUCCESS,
         error=enumerations.DataAccessResult.OTHER_REASON,
         invoke_id_and_priority=xdlms.InvokeIdAndPriority(
             invoke_id=0, confirmed=True, high_priority=True),
     )
     assert data == action.to_bytes()
     assert action == xdlms.ActionResponseNormalWithError.from_bytes(data)
Ejemplo n.º 5
0
def action_request() -> xdlms.ActionRequestNormal:
    return xdlms.ActionRequestNormal(
        cosem_method=cosem.CosemMethod(
            interface=enumerations.CosemInterface.DISCONNECT_CONTROL,
            instance=cosem.Obis.from_dotted("0.0.96.3.10.255"),
            method=1,
        ),
        data=dlms_data.UnsignedLongData(0).to_bytes(),
        invoke_id_and_priority=xdlms.InvokeIdAndPriority(invoke_id=1,
                                                         confirmed=True,
                                                         high_priority=True),
    )
Ejemplo n.º 6
0
 def test_transform_bytes(self):
     data = b"\xc7\x01\xc0\x00\x01\x00\t\x11\x10\x00\x00\x1a\xfd\xe8\x85{r\x8a4\x99\x10j\xa6e\xd1"
     action = xdlms.ActionResponseNormalWithData(
         enumerations.ActionResultStatus.SUCCESS,
         data=bytearray(
             b"\t\x11\x10\x00\x00\x1a\xfd\xe8\x85{r\x8a4\x99\x10j\xa6e\xd1"
         ),
         invoke_id_and_priority=xdlms.InvokeIdAndPriority(
             invoke_id=0, confirmed=True, high_priority=True),
     )
     assert data == action.to_bytes()
     assert action == xdlms.ActionResponseNormalWithData.from_bytes(data)
Ejemplo n.º 7
0
def set_request() -> xdlms.SetRequestNormal:

    # invocation counter
    return xdlms.SetRequestNormal(
        cosem_attribute=cosem.CosemAttribute(
            interface=enumerations.CosemInterface.CLOCK,
            instance=cosem.Obis(a=0, b=0, c=1, d=0, e=0, f=255),
            attribute=2,
        ),
        data=b"\t\x0c\x07\xe5\x01\x18\xff\x0e09P\xff\xc4\x00",
        access_selection=None,
        invoke_id_and_priority=xdlms.InvokeIdAndPriority(invoke_id=1,
                                                         confirmed=True,
                                                         high_priority=True),
    )
Ejemplo n.º 8
0
    def test_transform_bytes_without_data(self):
        data = b"\xc3\x01\xc0\x00\x0f\x00\x00(\x00\x00\xff\x01\x00"
        action = xdlms.ActionRequestNormal(
            cosem_method=cosem.CosemMethod(
                interface=enumerations.CosemInterface.ASSOCIATION_LN,
                instance=cosem.Obis(a=0, b=0, c=40, d=0, e=0, f=255),
                method=1,
            ),
            data=None,
            invoke_id_and_priority=xdlms.InvokeIdAndPriority(
                invoke_id=0, confirmed=True, high_priority=True),
        )

        assert data == action.to_bytes()
        assert action == xdlms.ActionRequestNormal.from_bytes(data)
Ejemplo n.º 9
0
 def test_transform_bytes(self):
     data = b"\xc1\x01\xc1\x00\x08\x00\x00\x01\x00\x00\xff\x02\x00\t\x0c\x07\xe5\x01\x18\xff\x0e09P\xff\xc4\x00"
     request = xdlms.SetRequestNormal(
         cosem_attribute=cosem.CosemAttribute(
             interface=enumerations.CosemInterface.CLOCK,
             instance=cosem.Obis(a=0, b=0, c=1, d=0, e=0, f=255),
             attribute=2,
         ),
         data=b"\t\x0c\x07\xe5\x01\x18\xff\x0e09P\xff\xc4\x00",
         access_selection=None,
         invoke_id_and_priority=xdlms.InvokeIdAndPriority(
             invoke_id=1, confirmed=True, high_priority=True
         ),
     )
     assert data == request.to_bytes()
     assert request == xdlms.SetRequestNormal.from_bytes(data)
Ejemplo n.º 10
0
    def test_transform_bytes(self):
        data = b'\xc3\x01\xc0\x00\x0f\x00\x00(\x00\x00\xff\x01\x01\t\x11\x10\x00\x00\x1a\x90\xe6\xd2"\x1f\xa2\xfd\x85\xee\xd6\x1a\xcc"'
        action = xdlms.ActionRequestNormal(
            cosem_method=cosem.CosemMethod(
                interface=enumerations.CosemInterface.ASSOCIATION_LN,
                instance=cosem.Obis(a=0, b=0, c=40, d=0, e=0, f=255),
                method=1,
            ),
            data=
            b'\t\x11\x10\x00\x00\x1a\x90\xe6\xd2"\x1f\xa2\xfd\x85\xee\xd6\x1a\xcc"',
            invoke_id_and_priority=xdlms.InvokeIdAndPriority(
                invoke_id=0, confirmed=True, high_priority=True),
        )

        assert data == action.to_bytes()
        assert action == xdlms.ActionRequestNormal.from_bytes(data)
Ejemplo n.º 11
0
def test_action_response_normal_sets_ready_when_awaiting_action_resoponse():

    c = DlmsConnection(
        state=state.DlmsConnectionState(
            current_state=state.AWAITING_ACTION_RESPONSE),
        client_system_title=b"12345678",
    )

    c.receive_data(
        xdlms.ActionResponseNormal(
            status=enumerations.ActionResultStatus.SUCCESS,
            invoke_id_and_priority=xdlms.InvokeIdAndPriority(
                invoke_id=1, confirmed=True, high_priority=True),
        ).to_bytes())
    c.next_event()
    assert c.state.current_state == state.READY