软件实现¶
术语规定¶
| 术语 | 描述 |
|---|---|
| extern module | 在这里是指外部高频头模块,有时候也叫 module |
| multiprotocl | 多协议高频头 |
| pulse | 这里特指输出协议 |
| telemetry | 遥测,回传 |
| TBS | 黑羊高频头 |
| crossfilre | TBS的一种协议 |
数据结构设计¶
逻辑结构设计¶
FIFO¶
FIFO结构体,用于遥测数据缓冲区数据的操作
TelemetrySensor¶
- TelemetrySensor结构体存储遥测传感器解包得到的数据,这部分数据为用户可设置, 需要存储
- 每个传感器对应一个TelemetrySensor和 TelemetryItem
- 传感器的计算公式和类型不一样,设置的参数也有所区别,所以出现了data联合体
TelemetryItem¶
- TelemetryItem结构体,这部分数据是传感器的实时数值,不需要关机保存.
- 每个传感器对应一个TelemetryItem和 TelemetrySensor
- 每个传感器包含的数值信息不一样,所以这里使用了联合体
ModuleData¶
- 用于存储用户对高频头的设置
- 每种高频头协议不一样,所以能够设置的选项也有区别,但同时只能使用一种高频头,所以 使用来联合体
ExternalModulePulsesData¶
- ExternalModulePulsesData结构体存储数据打包的数据
- 外部模块支持多种高频头,每个都高频头协议格式不一样,每次只能支持一种外部高频头 所以使用了联合体封装高频头协议
物理结构设计¶
都是线性存储
运行设计¶
程序主要由数据打包发送、解包和业务逻辑三个模块组成。
- 业务逻辑就是根据用户对传感器的设置进行相关的运行
运行模块的组合¶
解包和业务逻辑放在同一周期执行,打包发送在另外一个周期执行
运行时间¶
对于TBS外部高频头的回传数据最快4ms一个周期,传输26个字节,多协议高频头 也差不多,设计缓存区最大缓存区的设计存储量128个字节,所以*telemetryWakeup()* 应该小于4ms执行一次,否则会导致处理上丢帧。
对于数据打包发送的周期,理论上混控计算时间要小于发送的周期,否则会不能发挥出 外置高频头的最高性能。发射的周期精度为MS