50 lines
2.0 KiB
Markdown
50 lines
2.0 KiB
Markdown
# 外部接口模块文档
|
||
|
||
本文档主要描述Voix中的用于与遥测机及上位机进行通讯及相关附加功能的模块。
|
||
这些模块拆分自原host_com.cpp文件。
|
||
|
||
## 1. 构建及测试
|
||
|
||
使用cmake进行构建:
|
||
|
||
```bash
|
||
cmake . -B build
|
||
cmake --build build -j6
|
||
```
|
||
|
||
使用cmake及ctest进行测试:
|
||
|
||
```bash
|
||
cmake . -B build
|
||
cmake --build build -j6 --target test
|
||
```
|
||
|
||
或在构建完成后使用测试脚本:
|
||
|
||
```bash
|
||
./scripts/unittest.py bin/test_*
|
||
```
|
||
|
||
## 2. 模块公开接口
|
||
|
||
以下接口由通讯模块公开,可以在VOIX主程序中使用。
|
||
|
||
1. `void exint_init(const char* config_path, et_callback_t cb)`:模块初始化函数,此函数会读取配置文件,开启串口并启动模块所需的线程
|
||
- `config_path`:配置文件路径
|
||
- `cb`:回调函数,用于进行指令响应和遥测数据请求
|
||
2. `void (*et_callback_t)(uint32_t type, size_t len, void* data)`:回调函数类型,内部数据为指针类型的数据包仅保证在回调函数中有效。
|
||
- `type`:数据包类型
|
||
- `len`:数据包长度,对于字符串类型数据应包含后缀`\0`的长度。
|
||
- `data`:数据包数据
|
||
4. 数据包类型(宏定义):
|
||
- `ET_TYPE_TEXT`:文本,对应`const char*`类型的数据
|
||
- `ET_TYPE_AUDIO`:音频,对应`short*`类型的数据
|
||
- `ET_TYPE_COMMAND`:指令码,对应`uint8_t[6]`类型的数据
|
||
- `ET_TYPE_ALARM`:告警码,对应`AlarmData*`类型的数据
|
||
- `ET_TYPE_TELEMETRY_REQUEST`:遥测请求,对应`TelemetryRequestData*`类型的数据,需要主程序在数据包内的指针中写入对应的变量数据
|
||
5. `void exint_send(uint32_t type, size_t len, void* data)`:发送数据包,此函数是非阻塞的
|
||
- `type`:数据包类型
|
||
- `len`:数据包长度,对于字符串类型数据应包含后缀`\0`的长度。
|
||
- `data`:数据包数据
|
||
6. `void exint_finialize()`:模块销毁函数,调用后模块会终止所有内部线程,释放所有资源。
|