feat: 添加CM3/4/7的硬件与软件浮点单元构建矩阵,变更api接口为dr_*

This commit is contained in:
2026-07-26 23:34:11 +08:00
parent e8ee92110b
commit 7ba20659b2
16 changed files with 773 additions and 440 deletions
+20 -20
View File
@@ -1,7 +1,7 @@
/**
* @file example.c
*
* 调用 datarouter_send_sensor(data, len) 无需指定端口,
* 调用 dr_send_sensor(data, len) 无需指定端口,
* 库自动广播到所有 send_type=sensor 的端口。
*/
@@ -23,51 +23,51 @@ static void can_send(uint32_t port_id, const void *data, size_t len)
printf("[CAN port %u] %.*s\n", port_id, (int)len, (const char *)data);
}
void datarouter_on_recv_command(uint32_t port_id, const void *data, size_t len)
void dr_on_recv_command(uint32_t port_id, const void *data, size_t len)
{
printf("[RX:cmd port %u] %.*s\n", port_id, (int)len, (const char *)data);
}
int main(void)
{
datarouter_init();
dr_init();
printf("Capabilities:\n");
for (int i = 0; i < datarouter_send_cap_count(); i++)
for (int i = 0; i < dr_send_cap_count(); i++)
printf(" SEND [%d] %s - %s\n", i,
datarouter_send_cap_name(i), datarouter_send_cap_desc(i));
dr_send_cap_name(i), dr_send_cap_desc(i));
/*
* 创建两个端口,都设 send_type=sensor,各绑不同外设。
* 调用 datarouter_send_sensor() 时两个端口同时触发。
* 调用 dr_send_sensor() 时两个端口同时触发。
*/
datarouter_port_t p1 = datarouter_port_create();
datarouter_port_set_send_type(p1, DATAROUTER_SEND_sensor);
datarouter_port_add_handler(p1, uart_send);
datarouter_port_add_handler(p1, tcp_send);
dr_port_t p1 = dr_port_create();
dr_port_set_send_type(p1, DR_SEND_sensor);
dr_port_add_handler(p1, uart_send);
dr_port_add_handler(p1, tcp_send);
datarouter_port_t p2 = datarouter_port_create();
datarouter_port_set_send_type(p2, DATAROUTER_SEND_sensor);
datarouter_port_add_handler(p2, can_send);
dr_port_t p2 = dr_port_create();
dr_port_set_send_type(p2, DR_SEND_sensor);
dr_port_add_handler(p2, can_send);
/* 不指定端口,自动广播到所有 sensor 端口 */
printf("\n--- send_sensor (auto-route to ALL sensor ports) ---\n");
datarouter_send_sensor("temperature:25.3", 16);
dr_send_sensor("temperature:25.3", 16);
/* 运行时移除一个 handler,下次发送不再触发它 */
printf("\n--- remove TCP handler from p1, resend ---\n");
datarouter_port_remove_handler(p1, tcp_send);
datarouter_send_sensor("temperature:26.1", 16);
dr_port_remove_handler(p1, tcp_send);
dr_send_sensor("temperature:26.1", 16);
/* 接收侧:用户自行调用回调 */
printf("\n--- recv command ---\n");
datarouter_on_recv_command(0, "reboot", 6);
dr_on_recv_command(0, "reboot", 6);
/* 删除一个端口,触发时不再走它 */
printf("\n--- delete p2 (CAN), resend ---\n");
datarouter_port_delete(p2);
datarouter_send_sensor("temperature:27.0", 16);
dr_port_delete(p2);
dr_send_sensor("temperature:27.0", 16);
datarouter_port_delete(p1);
dr_port_delete(p1);
return 0;
}