def to_bytes(self) -> bytes:
     out = bytearray()
     out.append(self.ACCESS_DESCRIPTOR)
     out.extend(b"\x02\x04")  # structure of 4 elements
     out.extend(self.restricting_object.to_bytes())
     out.extend(
         dlms_data.OctetStringData(
             time.datetime_to_bytes(self.from_value)
         ).to_bytes()
     )
     out.extend(
         dlms_data.OctetStringData(time.datetime_to_bytes(self.to_value)).to_bytes()
     )
     out.extend(b"\x01\x00")  # empty array for selected values means all columns
     # TODO: implement selected values
     return bytes(out)
Example #2
0
 def send_hls_reply(self) -> Optional[bytes]:
     return self.action(
         method=cosem.CosemMethod(
             enumerations.CosemInterface.ASSOCIATION_LN,
             cosem.Obis(0, 0, 40, 0, 0),
             1,
         ),
         data=dlms_data.OctetStringData(
             self.dlms_connection.get_hls_reply()).to_bytes(),
     )
Example #3
0
 def to_bytes(self) -> bytes:
     out = bytearray()
     out.extend(b"\x02\x04")  # A structure of 4 elements
     out.extend(
         dlms_data.UnsignedLongData(
             self.cosem_attribute.interface.value).to_bytes())
     out.extend(
         dlms_data.OctetStringData(
             self.cosem_attribute.instance.to_bytes()).to_bytes())
     out.extend(
         dlms_data.IntegerData(self.cosem_attribute.attribute).to_bytes())
     out.extend(dlms_data.UnsignedLongData(self.data_index).to_bytes())
     return bytes(out)