extern_interface/README.md

50 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 外部接口模块文档
本文档主要描述Voix中的用于与遥测机及上位机进行通讯及相关附加功能的模块。
这些模块拆分自原host_com.cpp文件。
## 1. 构建及测试
使用cmake进行构建
```bash
cmake . -B build
cmake --build build -j6
```
使用cmake调用测试脚本进行测试
```bash
cmake . -B build
cmake --build build -j6 --target test
```
或在构建完成后使用测试脚本:
```bash
./scripts/unittest.py bin/test_*
```
## 2. 模块公开接口
以下接口由通讯模块公开可以在VOIX主程序中使用。
1. `void exint_initialize(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()`:模块销毁函数,调用后模块会终止所有内部线程,释放所有资源。