ComIntCmd_SerialBridge/Src/ComIntCmd/SerialBridgeRead.c

35 lines
937 B
C

//
// Created by xemon on 09.11.22.
//
#include "ComIntCmd/SerialBridge.h"
uint8_t XfcProtMethod_SerialBridgeReed(tXfcArray *request, tXfcArray *response, tSerialBridges *env) {
char name[64];
uint8_t nameLength;
uint16_t blockLimit;
XFC_CMD_RX_GET_RAW(nameLength);
XFC_CMD_RX_GET_ARR(name, nameLength);
XFC_CMD_RX_GET_RAW(blockLimit);
name[nameLength] = '\0';
tSerialBridge *bridge = SerialBridges_GetForName(env, name, nameLength);
if (blockLimit > XfcArrayGetSpace(response)) {
return XFC_TRANSPORT_PROTOCOL_RESPONSE_RESULT_EXECUTION_ERROR;
}
if (bridge) {
uint16_t reedBytes = SerialPortReceive(bridge->serialIo, response->data, blockLimit, 10);
if(reedBytes){
XfcArrayAddLength(response, reedBytes);
}
return XFC_TRANSPORT_PROTOCOL_RESPONSE_RESULT_OK;
}
return XFC_TRANSPORT_PROTOCOL_RESPONSE_RESULT_EXECUTION_ERROR;
}