系统需求整理
1. 串口设备与命名
- BLE_MODULE_UART:
/dev/ttyS1 - PARAM_BOARD_UART:
/dev/ttyS2 - MASTER_BOARD_UART:
/dev/ttyS3
2. 线程结构
-
主线程
- 负责接收并处理三个串口的数据。
- 负责协议解析、数据通路切换与数据转发。
- 通过
operate_led接口请求LED状态变更。
-
按钮+LED线程
- 负责按键扫描和事件响应,协议包发送。
- 统一控制所有LED状态(常亮、常灭、闪烁)。
- 定时处理闪烁类LED。
3. 数据通路与转发规则
-
通路状态:
- 启动默认:
PARAM_BOARD_UART↔MASTER_BOARD_UART - 可切换为:
PARAM_BOARD_UART↔BLE_MODULE_UART - 切换依据:收到特定协议包,包体0x01为wire,0x02为ble
- 启动默认:
-
数据转发规则:
BLE_MODULE_UART或MASTER_BOARD_UART收到数据:- 大部分转发到
PARAM_BOARD_UART - 少部分本地处理
- 类型为
0xFF的包判断通路并切换 - 类型为
0x03的包经 CRC 校验后,仅发送数据体到PARAM_BOARD_UART
- 大部分转发到
PARAM_BOARD_UART收到数据:- 全部数据打包为类型
0x03协议包 - 根据当前通路发到
BLE_MODULE_UART或MASTER_BOARD_UART
- 全部数据打包为类型
4. 协议格式说明
AA AA AA | 1B(长度=类型+数据体) | 1B(类型) | N字节(数据体) | 1B(CRC) | FF FF FF
- CRC:长度+类型+数据体求和取余”
- 通路切换包:
AA AA AA 00 03 FF 00 XX CRC FF FF FFXX=0x01:wire通路XX=0x02:ble通路
5. 按钮行为
- BUTTON_ZERO_IBP1:
AA AA AA 00 03 FF 01 01 CRC FF FF FF,发送到当前上位机 - BUTTON_ZERO_IBP2:
AA AA AA 00 03 FF 01 02 CRC FF FF FF,发送到当前上位机 - BUTTON_ZERO_HEMO:
AA AA AA 00 03 FF 01 00 CRC FF FF FF,发送到当前上位机 - BUTTON_BLUE_PAIR:向BLE_MODULE_UART定向发送
AT+ADV
6. LED管理
-
LED名称:
LED_HEMO_GREENLED_HEMO_REDLED_IBP1_GREENLED_IBP1_REDLED_IBP2_GREENLED_IBP2_REDLED_BLE_GREENLED_BLE_REDLED_BLE_STATUSLED_SYS_STATUS
-
控制接口:
operate_led(led_name, on/off/splash)- 由按钮+LED线程统一处理
LED_SYS_STATUS每0.5s闪烁
7. 并发互斥与线程安全
- 按钮线程和主线程可能会同时发送数据到上位机串口,需使用信号量/互斥锁保护写操作,防止数据包错乱。
394

被折叠的 条评论
为什么被折叠?



