fix(set-protocol): убери libc из порта DevBoard F407

This commit is contained in:
2026-09-07 08:41:26 +03:00
parent daa3466a41
commit e95338d781
2 changed files with 9 additions and 8 deletions

View File

@@ -11,7 +11,7 @@ CubeMX-проектом. Необработанные кадры передаю
Слой приложения предоставляет callback-и чтения и записи. Нулевой DLC означает Слой приложения предоставляет callback-и чтения и записи. Нулевой DLC означает
чтение; данные в кадре `HOLDING`/`COIL` — запись. За кадр передаются до четырёх чтение; данные в кадре `HOLDING`/`COIL` — запись. За кадр передаются до четырёх
16-битных регистров или до шестнадцати coils. 16-битных регистров или до пятнадцати coils (предел 4-битного `RegCount`).
```c ```c
static set_devboard_v1_stm32f407_t gui_can; static set_devboard_v1_stm32f407_t gui_can;

View File

@@ -1,22 +1,21 @@
#include "set_devboard_v1_stm32f407.h" #include "set_devboard_v1_stm32f407.h"
#include <string.h>
static bool transmit(set_devboard_v1_stm32f407_t *port, static bool transmit(set_devboard_v1_stm32f407_t *port,
const pcan_frame_t *frame) const pcan_frame_t *frame)
{ {
CAN_TxHeaderTypeDef header; CAN_TxHeaderTypeDef header = {0};
uint32_t mailbox = 0U; uint32_t mailbox = 0U;
uint8_t data[8] = {0U}; uint8_t data[8] = {0U};
memset(&header, 0, sizeof(header));
header.ExtId = frame->id & 0x1FFFFFFFUL; header.ExtId = frame->id & 0x1FFFFFFFUL;
header.IDE = CAN_ID_EXT; header.IDE = CAN_ID_EXT;
header.RTR = ((frame->flags & PCAN_FLAG_RTR) != 0U) ? header.RTR = ((frame->flags & PCAN_FLAG_RTR) != 0U) ?
CAN_RTR_REMOTE : CAN_RTR_DATA; CAN_RTR_REMOTE : CAN_RTR_DATA;
header.DLC = frame->dlc; header.DLC = frame->dlc;
header.TransmitGlobalTime = DISABLE; header.TransmitGlobalTime = DISABLE;
memcpy(data, frame->data, frame->dlc); for (uint8_t index = 0U; index < frame->dlc; ++index) {
data[index] = frame->data[index];
}
if (HAL_CAN_AddTxMessage(port->can, &header, data, &mailbox) != HAL_OK) { if (HAL_CAN_AddTxMessage(port->can, &header, data, &mailbox) != HAL_OK) {
port->tx_errors++; port->tx_errors++;
return false; return false;
@@ -34,7 +33,7 @@ bool set_devboard_v1_stm32f407_init(
if ((port == NULL) || (can == NULL)) { if ((port == NULL) || (can == NULL)) {
return false; return false;
} }
memset(port, 0, sizeof(*port)); *port = (set_devboard_v1_stm32f407_t){0};
port->can = can; port->can = can;
port->unhandled = unhandled; port->unhandled = unhandled;
port->unhandled_user = unhandled_user; port->unhandled_user = unhandled_user;
@@ -65,7 +64,9 @@ size_t set_devboard_v1_stm32f407_poll(set_devboard_v1_stm32f407_t *port)
request.flags |= PCAN_FLAG_RTR; request.flags |= PCAN_FLAG_RTR;
} }
request.dlc = (header.DLC > 8U) ? 8U : (uint8_t)header.DLC; request.dlc = (header.DLC > 8U) ? 8U : (uint8_t)header.DLC;
memcpy(request.data, data, request.dlc); for (uint8_t index = 0U; index < request.dlc; ++index) {
request.data[index] = data[index];
}
result = pcan_modbus_server_handle(&port->server, &request, &response); result = pcan_modbus_server_handle(&port->server, &request, &response);
if (result == PCAN_MODBUS_RESPONSE) { if (result == PCAN_MODBUS_RESPONSE) {