// // Created by xemon on 07.11.23. // #ifndef MOTOTERMINAL_MAIN_ONAT435_XFCPROTREQUESTER_H #define MOTOTERMINAL_MAIN_ONAT435_XFCPROTREQUESTER_H #include "XfcProtDecoder.h" #include "XfcProtEncoder.h" #include "XfcProtResponseCodes.h" #include "SerialPortIO.h" #include "XfcProtCommon.h" typedef enum { eXfcProtRequesterStatus_OK = 0, eXfcProtRequesterStatus_UNKNOWN_ERROR, eXfcProtRequesterStatus_REQUEST_BUILD_OVERFLOW, eXfcProtRequesterStatus_TRANSMIT_ERROR, eXfcProtRequesterStatus_RECIVE_BUFFER_OVERFLOW, eXfcProtRequesterStatus_PREFIX_MISMATCH, eXfcProtRequesterStatus_CRC_ERROR, eXfcProtRequesterStatus_RECIVE_TIMEOUT, eXfcProtRequesterStatus_RESPONSE_SHORT, eXfcProtRequesterStatus_BUILD_EXECUTION_ERROR, eXfcProtRequesterStatus_PARSING_EXECUTION_ERROR, } eXfcProtRequesterStatus; typedef tXfcTransportProtocolResponseCode (*tXfcRequesterMethod)(void *env, tXfcArray *request); typedef struct { tSerialPortIO *io; tXfcProtDecoder decoder; tXfcProtEncoder encoder; tXfcArray requestBuffer; tXfcArray responseBuffer; int32_t transmitTimeout; } tXfcProtRequester; void XfcProtRequester_init( tXfcProtRequester *env, tSerialPortIO *io, tXfcArray requestBuffer, tXfcArray responseBuffer, tXfcProtMagicNumbers magicNumbers ); eXfcProtRequesterStatus XfcProtRequester_makeRequest( tXfcProtRequester *env, uint16_t id, void *builder, tXfcRequesterMethod buildMethod, void *parser, tXfcRequesterMethod parseMethod, int32_t timeout ); #endif //MOTOTERMINAL_MAIN_ONAT435_XFCPROTREQUESTER_H