1,软件框架
GAP:提供蓝牙相关接口给 Application 使用,同时反馈蓝牙的各种状态。
Framework:负责音频通路,经典蓝牙 Profile,系统管理等。
Platform:包括 OTA,USB,Flash,FTL,Charger 等。
2,任务
RTL8763EW 使用 FreeRTOS 操作系统。内建 timer task,idle task,upper stack task,lower stack task。 Watch 应用自建 app task,hub task,gui task,communicate task。
3,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。
4,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 的文件之中,替换外设时,用户只需要对应替换初始化, 读写数据一类的接口部分即可。
5,gui task
gui 的刷新由触摸,按键,定时器及其他 app 行为触发。界面刷新前,用户会根据当前行为更新所在 界面的各个控件的信息。gui core部分根据各控件的类型位置等信息,在framebuffer中进行绘制。Framebuffer可以为内部 ram,也可为 psram。为节省 ram 资源,一整帧 framebuffer 会被拆分为多个 section,分段绘制 并同步通过 8080 或 qspi 接口送至屏幕。使用 psram 时,则会先分段更新到psram,再经 psram 直接整帧送至屏幕。
5,communicate task
communicate task 负责 BLE 的数据发送管理,根据当前发送数据命令格式进行数据打包并通过蓝牙协 议栈发送出去。客户一般使用自有的蓝牙数据交互格式,该 task 可作为发送方式的参考,也可自行实现。