Skip to content

Commit

Permalink
feat(plc4py): Write Buffer now accepts only python native data types
Browse files Browse the repository at this point in the history
  • Loading branch information
hutcheb committed May 28, 2023
1 parent a07ad26 commit 70f8f3b
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 77 deletions.
72 changes: 36 additions & 36 deletions sandbox/plc4py/plc4py/spi/generation/WriteBuffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,24 +58,24 @@ def push_context(self, logical_name: str, **kwargs) -> None:
def pop_context(self, logical_name: str, **kwargs) -> None:
raise NotImplementedError

def write_bit(self, value: c_bool, logical_name: str = "", **kwargs) -> None:
def write_bit(self, value: bool, logical_name: str = "", **kwargs) -> None:
raise NotImplementedError

def write_byte(self, value: c_byte, logical_name: str = "", **kwargs) -> None:
def write_byte(self, value: int, logical_name: str = "", **kwargs) -> None:
self.write_signed_byte(value, 8, logical_name, **kwargs)

def write_byte_array(
self, value: List[c_byte], logical_name: str = "", **kwargs
self, value: List[int], logical_name: str = "", **kwargs
) -> None:
raise NotImplementedError

def write_unsigned_byte(
self, value: c_uint8, bit_length: int = 8, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 8, logical_name: str = "", **kwargs
) -> None:
raise NotImplementedError

def write_unsigned_short(
self, value: c_uint16, bit_length: int = 16, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 16, logical_name: str = "", **kwargs
) -> None:
raise NotImplementedError

Expand All @@ -85,37 +85,37 @@ def write_unsigned_int(
raise NotImplementedError

def write_unsigned_long(
self, value: c_uint64, bit_length: int = 64, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 64, logical_name: str = "", **kwargs
) -> None:
raise NotImplementedError

def write_signed_byte(
self, value: c_int8, bit_length: int = 8, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 8, logical_name: str = "", **kwargs
) -> None:
raise NotImplementedError

def write_short(
self, value: c_int16, bit_length: int = 16, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 16, logical_name: str = "", **kwargs
) -> None:
raise NotImplementedError

def write_int(
self, value: c_int32, bit_length: int = 32, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 32, logical_name: str = "", **kwargs
) -> None:
raise NotImplementedError

def write_long(
self, value: c_int64, bit_length: int = 64, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 64, logical_name: str = "", **kwargs
) -> None:
raise NotImplementedError

def write_float(
self, value: c_float, bit_length: int = 32, logical_name: str = "", **kwargs
self, value: float, bit_length: int = 32, logical_name: str = "", **kwargs
) -> None:
raise NotImplementedError

def write_double(
self, value: c_double, bit_length: int = 64, logical_name: str = "", **kwargs
self, value: float, bit_length: int = 64, logical_name: str = "", **kwargs
) -> None:
raise NotImplementedError

Expand Down Expand Up @@ -175,112 +175,112 @@ def push_context(self, logical_name: str, **kwargs) -> None:
# byte buffer need no context handling
pass

def write_bit(self, value: c_bool, logical_name: str = "", **kwargs) -> None:
self.bb[self.position] = bool(value)
def write_bit(self, value: bool, logical_name: str = "", **kwargs) -> None:
self.bb[self.position] = value
self.position += 1

def write_byte(self, value: c_byte, logical_name: str = "", **kwargs) -> None:
def write_byte(self, value: int, logical_name: str = "", **kwargs) -> None:
self.write_signed_byte(value, 8, logical_name, **kwargs)

def write_byte_array(
self, value: List[c_byte], logical_name: str = "", **kwargs
self, value: List[int], logical_name: str = "", **kwargs
) -> None:
for a_byte in value:
self.write_signed_byte(a_byte, 8, logical_name, **kwargs)

def write_unsigned_byte(
self, value: c_uint8, bit_length: int = 8, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 8, logical_name: str = "", **kwargs
) -> None:
if bit_length <= 0:
raise SerializationException("unsigned byte must contain at least 1 bit")
elif bit_length > 8:
raise SerializationException("unsigned byte can only contain max 8 bits")
else:
self._handle_numeric_encoding(c_byte(value.value), bit_length, **kwargs)
self._handle_numeric_encoding(c_byte(value), bit_length, **kwargs)

def write_unsigned_short(
self, value: c_uint16, bit_length: int = 16, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 16, logical_name: str = "", **kwargs
) -> None:
if bit_length <= 0:
raise SerializationException("unsigned short must contain at least 1 bit")
elif bit_length > 16:
raise SerializationException("unsigned short can only contain max 16 bits")
else:
self._handle_numeric_encoding(c_uint16(value.value), bit_length, **kwargs)
self._handle_numeric_encoding(c_uint16(value), bit_length, **kwargs)

def write_unsigned_int(
self, value: c_uint32, bit_length: int = 32, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 32, logical_name: str = "", **kwargs
) -> None:
if bit_length <= 0:
raise SerializationException("unsigned int must contain at least 1 bit")
elif bit_length > 32:
raise SerializationException("unsigned int can only contain max 32 bits")
else:
self._handle_numeric_encoding(c_uint32(value.value), bit_length, **kwargs)
self._handle_numeric_encoding(c_uint32(value), bit_length, **kwargs)

def write_unsigned_long(
self, value: c_uint64, bit_length: int = 64, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 64, logical_name: str = "", **kwargs
) -> None:
if bit_length <= 0:
raise SerializationException("unsigned long must contain at least 1 bit")
elif bit_length > 64:
raise SerializationException("unsigned long can only contain max 16 bits")
else:
self._handle_numeric_encoding(c_uint64(value.value), bit_length, **kwargs)
self._handle_numeric_encoding(c_uint64(value), bit_length, **kwargs)

def write_signed_byte(
self, value: c_int8, bit_length: int = 8, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 8, logical_name: str = "", **kwargs
) -> None:
if bit_length <= 0:
raise SerializationException("Signed byte must contain at least 1 bit")
elif bit_length > 8:
raise SerializationException("Signed byte can only contain max 8 bits")
self._handle_numeric_encoding(c_int8(value.value), bit_length, **kwargs)
self._handle_numeric_encoding(c_int8(value), bit_length, **kwargs)

def write_short(
self, value: c_int16, bit_length: int = 16, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 16, logical_name: str = "", **kwargs
) -> None:
if bit_length <= 0:
raise SerializationException("Signed short must contain at least 1 bit")
elif bit_length > 16:
raise SerializationException("Signed short can only contain max 16 bits")
self._handle_numeric_encoding(c_int16(value.value), bit_length, **kwargs)
self._handle_numeric_encoding(c_int16(value), bit_length, **kwargs)

def write_int(
self, value: c_int32, bit_length: int = 32, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 32, logical_name: str = "", **kwargs
) -> None:
if bit_length <= 0:
raise SerializationException("Signed int must contain at least 1 bit")
elif bit_length > 32:
raise SerializationException("Signed int can only contain max 32 bits")
self._handle_numeric_encoding(c_int32(value.value), bit_length, **kwargs)
self._handle_numeric_encoding(c_int32(value), bit_length, **kwargs)

def write_long(
self, value: c_int64, bit_length: int = 64, logical_name: str = "", **kwargs
self, value: int, bit_length: int = 64, logical_name: str = "", **kwargs
) -> None:
if bit_length <= 0:
raise SerializationException("Signed long must contain at least 1 bit")
elif bit_length > 64:
raise SerializationException("Signed long can only contain max 64 bits")
self._handle_numeric_encoding(c_int64(value.value), bit_length, **kwargs)
self._handle_numeric_encoding(c_int64(value), bit_length, **kwargs)

def write_float(
self, value: c_float, bit_length: int = 32, logical_name: str = "", **kwargs
self, value: float, bit_length: int = 32, logical_name: str = "", **kwargs
) -> None:
if bit_length <= 0:
raise SerializationException("Float must contain at least 1 bit")
elif bit_length > 32:
raise SerializationException("Float can only contain max 32 bits")
self._handle_numeric_encoding(c_float(value.value), bit_length, **kwargs)
self._handle_numeric_encoding(c_float(value), bit_length, **kwargs)

def write_double(
self, value: c_double, bit_length: int = 64, logical_name: str = "", **kwargs
self, value: float, bit_length: int = 64, logical_name: str = "", **kwargs
) -> None:
if bit_length <= 0:
raise SerializationException("Double must contain at least 1 bit")
elif bit_length > 64:
raise SerializationException("Double can only contain max 64 bits")
self._handle_numeric_encoding(c_double(value.value), bit_length, **kwargs)
self._handle_numeric_encoding(c_double(value), bit_length, **kwargs)

def write_complex_array(
self, value: List[PlcMessage], logical_name: str = "", **kwargs
Expand Down

0 comments on commit 70f8f3b

Please sign in to comment.