35 lines
937 B
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;
|
|
} |