XfcTransportProtocol/Inc/XfcProtRequester.h

64 lines
1.6 KiB
C

//
// Created by CFIF 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