feat: 添加CM3/4/7的硬件与软件浮点单元构建矩阵,变更api接口为dr_*
This commit is contained in:
+46
-46
@@ -4,20 +4,20 @@
|
||||
*
|
||||
* ## 概念
|
||||
*
|
||||
* - **发送能力**:编译期声明的可发送报文类型,生成 datarouter_send_<id>(data, len)
|
||||
* - **接收能力**:编译期声明的可接收报文类型,生成 datarouter_on_recv_<id>(port, data, len)
|
||||
* - **发送能力**:编译期声明的可发送报文类型,生成 dr_send_<id>(data, len)
|
||||
* - **接收能力**:编译期声明的可接收报文类型,生成 dr_on_recv_<id>(port, data, len)
|
||||
* - **端口**:运行期创建的连接点,包含 send_type + handler 列表
|
||||
*
|
||||
* ## 路由
|
||||
*
|
||||
* 调用 datarouter_send_<id>(data, len) 时,库遍历所有端口,
|
||||
* 调用 dr_send_<id>(data, len) 时,库遍历所有端口,
|
||||
* 找到 send_type 匹配的端口,逐一调用其全部 handler。无需指定从哪个端口发送。
|
||||
*
|
||||
* 接收侧由用户自行调用 datarouter_on_recv_<id>(port, data, len) 处理外设收到的数据。
|
||||
* 接收侧由用户自行调用 dr_on_recv_<id>(port, data, len) 处理外设收到的数据。
|
||||
*/
|
||||
|
||||
#ifndef DATAROUTER_H
|
||||
#define DATAROUTER_H
|
||||
#ifndef DR_H
|
||||
#define DR_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
@@ -38,75 +38,75 @@ extern "C" {
|
||||
|
||||
/* ========== 发送能力枚举 ========== */
|
||||
|
||||
enum datarouter_send_cap {
|
||||
#define DATAROUTER_SEND(id, desc) DATAROUTER_SEND_##id,
|
||||
DATAROUTER_SEND_CAPABILITIES
|
||||
#undef DATAROUTER_SEND
|
||||
DATAROUTER_SEND_CAP_COUNT
|
||||
enum dr_send_cap {
|
||||
#define DR_SEND(id, desc) DR_SEND_##id,
|
||||
DR_SEND_CAPABILITIES
|
||||
#undef DR_SEND
|
||||
DR_SEND_CAP_COUNT
|
||||
};
|
||||
|
||||
/* ========== 接收能力枚举 ========== */
|
||||
|
||||
enum datarouter_recv_cap {
|
||||
#define DATAROUTER_RECV(id, desc) DATAROUTER_RECV_##id,
|
||||
DATAROUTER_RECV_CAPABILITIES
|
||||
#undef DATAROUTER_RECV
|
||||
DATAROUTER_RECV_CAP_COUNT
|
||||
enum dr_recv_cap {
|
||||
#define DR_RECV(id, desc) DR_RECV_##id,
|
||||
DR_RECV_CAPABILITIES
|
||||
#undef DR_RECV
|
||||
DR_RECV_CAP_COUNT
|
||||
};
|
||||
|
||||
/* ========== 外设发送 handler ========== */
|
||||
|
||||
typedef void (*datarouter_send_handler_t)(uint32_t port_id, const void *data, size_t len);
|
||||
typedef void (*dr_send_handler_t)(uint32_t port_id, const void *data, size_t len);
|
||||
|
||||
#ifndef DATAROUTER_MAX_HANDLERS_PER_PORT
|
||||
#define DATAROUTER_MAX_HANDLERS_PER_PORT 4
|
||||
#ifndef DR_MAX_HANDLERS_PER_PORT
|
||||
#define DR_MAX_HANDLERS_PER_PORT 4
|
||||
#endif
|
||||
|
||||
/* ========== 发送触发函数 ========== */
|
||||
|
||||
#define DATAROUTER_SEND(id, desc) \
|
||||
int datarouter_send_##id(const void *data, size_t len);
|
||||
DATAROUTER_SEND_CAPABILITIES
|
||||
#undef DATAROUTER_SEND
|
||||
#define DR_SEND(id, desc) \
|
||||
int dr_send_##id(const void *data, size_t len);
|
||||
DR_SEND_CAPABILITIES
|
||||
#undef DR_SEND
|
||||
|
||||
/* ========== 接收回调声明 ========== */
|
||||
|
||||
#define DATAROUTER_RECV(id, desc) \
|
||||
void datarouter_on_recv_##id(uint32_t port_id, const void *data, size_t len);
|
||||
DATAROUTER_RECV_CAPABILITIES
|
||||
#undef DATAROUTER_RECV
|
||||
#define DR_RECV(id, desc) \
|
||||
void dr_on_recv_##id(uint32_t port_id, const void *data, size_t len);
|
||||
DR_RECV_CAPABILITIES
|
||||
#undef DR_RECV
|
||||
|
||||
/* ========== 端口管理 API ========== */
|
||||
|
||||
typedef int32_t datarouter_port_t;
|
||||
#define DATAROUTER_INVALID_PORT ((datarouter_port_t)-1)
|
||||
typedef int32_t dr_port_t;
|
||||
#define DR_INVALID_PORT ((dr_port_t)-1)
|
||||
|
||||
void datarouter_init(void);
|
||||
void datarouter_reset(void);
|
||||
void dr_init(void);
|
||||
void dr_reset(void);
|
||||
|
||||
datarouter_port_t datarouter_port_create(void);
|
||||
void datarouter_port_delete(datarouter_port_t port);
|
||||
dr_port_t dr_port_create(void);
|
||||
void dr_port_delete(dr_port_t port);
|
||||
|
||||
void datarouter_port_set_send_type(datarouter_port_t port, int cap_id);
|
||||
int datarouter_port_get_send_type(datarouter_port_t port);
|
||||
void dr_port_set_send_type(dr_port_t port, int cap_id);
|
||||
int dr_port_get_send_type(dr_port_t port);
|
||||
|
||||
int datarouter_port_add_handler(datarouter_port_t port, datarouter_send_handler_t handler);
|
||||
int datarouter_port_remove_handler(datarouter_port_t port, datarouter_send_handler_t handler);
|
||||
void datarouter_port_clear_handlers(datarouter_port_t port);
|
||||
int datarouter_port_handler_count(datarouter_port_t port);
|
||||
int dr_port_add_handler(dr_port_t port, dr_send_handler_t handler);
|
||||
int dr_port_remove_handler(dr_port_t port, dr_send_handler_t handler);
|
||||
void dr_port_clear_handlers(dr_port_t port);
|
||||
int dr_port_handler_count(dr_port_t port);
|
||||
|
||||
/* ========== 能力元数据查询 ========== */
|
||||
|
||||
int datarouter_send_cap_count(void);
|
||||
const char *datarouter_send_cap_name(int cap_id);
|
||||
const char *datarouter_send_cap_desc(int cap_id);
|
||||
int dr_send_cap_count(void);
|
||||
const char *dr_send_cap_name(int cap_id);
|
||||
const char *dr_send_cap_desc(int cap_id);
|
||||
|
||||
int datarouter_recv_cap_count(void);
|
||||
const char *datarouter_recv_cap_name(int cap_id);
|
||||
const char *datarouter_recv_cap_desc(int cap_id);
|
||||
int dr_recv_cap_count(void);
|
||||
const char *dr_recv_cap_name(int cap_id);
|
||||
const char *dr_recv_cap_desc(int cap_id);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* DATAROUTER_H */
|
||||
#endif /* DR_H */
|
||||
Reference in New Issue
Block a user