本帖最后由 cedar_xuesong 于 2015-10-15 09:13 编辑 项目:空调精灵
项目介绍:请参考
https://bbs.eeworld.com.cn/thread-472487-1-1.html当前进度:
1)拿到板子,搭建F7环境和熟悉F7例程,移植RTT到F7
2)模块选型(WI-FI ESP8266,BLE4.0 CC2541)
3)制定软件框架和协议标准,详情参见
https://github.com/cedar-renjun/ ... oc_Software_Arch.md摘录如下:
软件架构设计
0 适用范围
- 本设计规范,仅仅适用于空调精灵的软件架构部分
- 第3章模块划分中所列的模块,特制软件功能模块
1 设计原则
- 低耦合,高内聚
- 便于单元测试,便于集成测试
2 设计要点
- 禁止两个模块直接通信
- 动态加载和卸载模块,模块的存在与否不影响系统稳定性
- 消息动态绑定,发送消息者不依赖特定的模块接收者
- 充分隔离,单个模块尽可能少的关联其他模块
- 主控模块负责整体工作,外围模块被动接收消息和执行动作
3 模块划分
- 红外模块
- 主控模块
- 消息处理模块
- 蓝牙模块
- Wi-Fi模块
- 服务器模块
- 手机模块
- 人机输出模块
- 人机输入模块
4 模块功能定义
- 红外模块
- 负责控制红外部分的硬件
- 负责红外信号的编码,解码,学习,复现
- 只负责处理消息处理模块发送的消息,执行动作
- 主控模块
- 负责协调整个系统
- 只能通过
消息处理模块
间接和各个模块通信,完成控制功能
- 消息处理模块
- 负责接收和转发所有的模块消息
- 利用消息处理模块来完成解耦和动态绑定功能
- 蓝牙模块
- 负责连接手机模块
- 负责将手机命令通过
消息处理模块
转发到主控模块
- 只能与
服务器模块
和消息处理模块通信
- Wi-Fi模块
- 负责连接internet网络进行数据库更新
- 负责连接MQTT服务器,接收和发送MQTT消息
- 只能与
服务器模块
和消息处理模块通信
- 服务器模块
- 负责连接空调精灵和手机模块
- 采用MQTT协议封装
- 只能与Wi-Fi模块和手机模块交互
- 手机模块
- 通过蓝牙或者Wi-Fi来控制空调精灵
- 该模块只存在于手机端,以APP的形式存在
- 手机模块只能与MQTT服务器或者空调精灵蓝牙4.0模块交互
- 手机模块应用层协议,包括但不限于Wi-Fi链路和BLE4.0链路
- 人机输出模块
- 负责显示各种可视化信息
- 负责处理
消息处理模块
发送过来的主控消息
,并执行相应的显示动作
- 人机输入模块
- 负责采集各种交互输入信号(按键,触摸动作)
- 将采集到的动作信号,通过
消息处理模块
发送到主控模块
5 模块行为定义
- 红外模块(TODO)
- 主控模块(TODO)
- 消息处理模块(TODO)
- 蓝牙模块(TODO)
- Wi-Fi模块(TODO)
- 服务器模块(TODO)
- 手机模块(TODO)
- 人机输出模块(TODO)
- 人机输入模块(TODO)
6 模块相关性
- | 红外 | 主控 | 消息处理 | 蓝牙 | Wi-Fi | 服务器 | 手机 | 人机输出 | 人机输入 |
---|
红外 | | | * | | | | | | |
主控 | | | * | | | | | | |
消息处理 | * | * | | * | * | | | * | * |
蓝牙 | | | * | | | | * | | |
Wi-Fi | | | * | | | * | | | |
服务器 | | | | | * | | * | | |
手机 | | | | * | | * | | | |
人机输出 | | | * | | | | | | |
人机输入 | | | * | | | | | | |
7 通信协议
- 消息处理模块协议(TODO)
- 服务器通信MQTT协议(TODO)
- 手机控制协议(TODO)
- 红外描述协议(TODO)
8 测试指导
8.1 单元测试
- 软件架构设计者编写RTOS软件框架,提供消息分发模块和主控模块
- 模块A实现者,先按照协议标准,实现特定消息的接收和处理;然后编写测试线程,模拟相关模块B行为和动作,从而测试自身模块A的功能是否正常
- 模块实现者,应充分考虑 1)错误处理 2)模块自身状态处理机制,杜绝任何阻塞CPU操作
8.2 集成测试
- 在集成测试之前,每个模块实现者,应保证自身的模块已经通过单元测试,并提供相应的Test Case
- 软件集成者负责整体模块测试,如发现bug,则应反馈给对应的模块负责人
9