def test_create_from_response_pdu_raising_exception(error_code, exception_class): """ Test if correct exception is raied when response PDU contains error response. """ resp_pdu = struct.pack('>BB', 81, error_code) with pytest.raises(exception_class): create_function_from_response_pdu(resp_pdu)
def test_create_from_response_pdu_raising_exception(error_code, exception_class): """ Test if correct exception is raied when response PDU contains error response. """ resp_pdu = struct.pack('>BB', 81, error_code) with pytest.raises(exception_class): create_function_from_response_pdu(resp_pdu)
def test_create_function_from_response_pdu(): read_coils = ReadCoils() read_coils.starting_address = 1 read_coils.quantity = 9 req_pdu = read_coils.request_pdu resp_pdu = struct.pack('>BBB', 1, 1, 3) assert isinstance(create_function_from_response_pdu(resp_pdu, req_pdu), ReadCoils)
def test_create_function_from_response_pdu(): read_coils = ReadCoils() read_coils.starting_address = 1 read_coils.quantity = 9 req_pdu = read_coils.request_pdu resp_pdu = struct.pack('>BBB', 1, 1, 3) assert isinstance(create_function_from_response_pdu(resp_pdu, req_pdu), ReadCoils)
def parse_response_adu(resp_adu, req_adu=None): """ Parse response ADU and return response data. Some functions require request ADU to fully understand request ADU. :param resp_adu: Resonse ADU. :param req_adu: Request ADU, default None. :return: Response data. """ resp_pdu = resp_adu[7:] function = create_function_from_response_pdu(resp_pdu, req_adu) return function.data
def parse_response_adu(resp_adu, req_adu=None): """ Parse response ADU and return response data. Some functions require request ADU to fully understand request ADU. :param resp_adu: Resonse ADU. :param req_adu: Request ADU, default None. :return: Response data. """ resp_pdu = resp_adu[7:] function = create_function_from_response_pdu(resp_pdu, req_adu) return function.data
def parse_response_adu(resp_adu, req_adu=None): """ Parse response ADU and return response data. Some functions require request ADU to fully understand request ADU. :param resp_adu: Resonse ADU. :param req_adu: Request ADU, default None. :return: Response data. """ aes = AES.new(key, AES.MODE_CBC, IV) resp_pdu = aes.decrypt(resp_adu[1:-2]) validate_crc(resp_adu) req_pdu = None if req_adu is not None: req_pdu = req_adu[1:-2] aes = AES.new(key, AES.MODE_CBC, IV) req_pdu = aes.decrypt(req_pdu) function = create_function_from_response_pdu(resp_pdu, req_pdu) return function.data