| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- from abc import abstractmethod, ABCMeta
- from nbus_types.nbus_data_fomat import *
- from nbus_types.nbus_parameter_type import *
- from nbus_types.nbus_address_type import NBusDeviceAddress
- @beartype
- class NBusSlaveDevice(metaclass=ABCMeta):
- def __init__(self, address: NBusDeviceAddress):
- self.__address = address
- self.__data_format = None
- self.__parameters = None
- @property
- def address(self):
- return self.__address
- @property
- def data_format(self):
- return self.__data_format
- @data_format.setter
- def data_format(self, data_format: NBusDataFormat) -> None:
- self.__data_format = data_format
- @property
- def parameters(self):
- return self.__parameters
- @parameters.setter
- def parameters(self, values):
- self.__parameters = values
- """
- ================================================================================================================
- Device Interface
- ================================================================================================================
- """
- @abstractmethod
- def data_params_loaded(self) -> bool:
- """
- Verify that all necessary parameters are loaded
- before performing data get/set conversion.
- :return: true if ready for conversion, otherwise False
- """
- pass
- @abstractmethod
- def map_param_get(self, param_id: NBusParameterType, param_value: int) -> NBusParameterValue:
- """
- Convert a parameter from cmd_get_param() to its engineering range.
- :param param_id: the ID of the parameter
- :param param_value: the value of the parameter in binary format
- :return: the converted parameter value in engineering units
- """
- pass
- @abstractmethod
- def map_param_set(self, param_id: NBusParameterType, param_value: NBusParameterValue) -> int:
- """
- Convert a parameter to its binary range for cmd_set_data().
- :param param_id: the ID of the parameter
- :param param_value: the value of the parameter in engineering units
- :return: the converted parameter value in binary format
- """
- pass
- @abstractmethod
- def map_data_get(self, values: list[int]) -> list[NBusDataValue]:
- """
- Convert data from cmd_get_data() to its engineering range.
- :param values: a list of values in binary format to be converted
- :return: a list of converted values in engineering units
- """
- pass
- @abstractmethod
- def map_data_set(self, values: list[NBusDataValue]) -> list[int]:
- """
- Convert data to its binary range for cmd_set_data().
- :param values: a list of values in engineering range to be converted
- :return: a list of converted values in binary format
- """
- pass
|