# 外部接口模块文档 本文档主要描述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()`:模块销毁函数,调用后模块会终止所有内部线程,释放所有资源。