// // 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; }