一, 系统架构
二,任务
app task
app task实现的功能包括:
1)通过gap处理BT,BLE相关状态。gap_handle_msg会处理upper stack发送的消息,BLE的数据收发等会回调至app创建service时注册的读写接口,BT的各个profile及状态信息则会由Framework处理并将相关信息回调给app。
2)用户应用层自由实现的对蓝牙,音频等行为的控制,包括广播开关,搜索连接耳机设备,播放音乐等。参考watch_handle_io_message。
hub task
watch应用通过hub task来管理各个外设,用户可参考其做法,也可自行实现相关功能。Hub task中处理各外设的上层消息,将外设与gui task或app task串联起来。例如按键事件可通过hub task处理后,发送对应的消息给到gui task,由gui task根据当前界面情况响应对应的行为。
hub task也将底层driver部分与上层进行分离,方便替换不同外设。上层消息处理主要放在hub_xxx.cd的文件中,driver层code主要放在module_xxx.c的文件之中,替换外设时,用户只需要对应替换初始化,读写数据一类的接口部分即可。
gui task
gui的刷新由触摸,按键,定时器及其他app行为触发。界面刷新前,用户会根据当前行为更新所在界面的各个控件的信息。gui core部分根据各控件的类型位置等信息,在framebuffer中进行绘制。Framebuffer可以为内部ram,也可为psram。为节省ram资源,一整帧framebuffer会被拆分为多个section,分段绘制并同步通过8080或qspi接口送至屏幕。使用psram时,则会先分段更新到psram,再经psram直接整帧送至屏幕。
communicate task
communicate task负责BLE的数据发送管理,根据当前发送数据命令格式进行数据打包并通过蓝牙协议栈发送出去。客户一般使用自有的蓝牙数据交互格式,该task可作为发送方式的参考,也可自行实现。