64 lines
1.6 KiB
C
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
|