一 方案简介
1.简介
Apollo3 Blue Wireless SoC是一款超低功耗无线mcu芯片,它的运行功耗降至6μA/ MHz以下。该器件采用ARM Cortex M4F内核,运行频率高达96 MHz,集成了蓝牙低功耗(BLE5),并提供一些更新的外设,附加内存和高级DMA引擎。凭借着出色的超低功耗性能,该芯片在智能手表上应用十分广泛。
2.特性
- 通过ble和手机同步信息
- 支持按键操作
- 支持ble的特性
二 源码解析
1.启动并初始化手表相关的协议内容
void WatchStart(void)
{
/* Register for stack callbacks */
DmRegister(watchDmCback);
DmConnRegister(DM_CLIENT_ID_APP, watchDmCback);
AttRegister(watchAttCback);
AttConnRegister(AppServerConnCback);
AttsCccRegister(WATCH_NUM_CCC_IDX, (attsCccSet_t *) watchCccSet, watchCccCback);
/* Register for app framework button callbacks */
AppUiBtnRegister(watchBtnCback);
/* Register for app framework discovery callbacks */
AppDiscRegister(watchDiscCback);
/* Initialize attribute server database */
SvcCoreAddGroup();
/* Reset the device */
DmDevReset();
}
- 处理手表的无线业务信息
void WatchHandler(wsfEventMask_t event, wsfMsgHdr_t *pMsg)
{
if (pMsg != NULL)
{
APP_TRACE_INFO1("Watch got evt %d", pMsg->event);
/* process ATT messages */
if (pMsg->event ATT_CBACK_END)
{
/* process discovery-related ATT messages */
AppDiscProcAttMsg((attEvt_t *) pMsg);
/* process server-related ATT messages */
AppServerProcAttMsg(pMsg);
}
/* process DM messages */
else if (pMsg->event DM_CBACK_END)
{
if (pMsg->param == DM_CONN_ID_NONE || DmConnRole((dmConnId_t) pMsg->param) == DM_ROLE_MASTER)
{
/* process advertising and connection-related messages */
AppMasterProcDmMsg((dmEvt_t *) pMsg);
/* process security-related messages */
AppMasterSecProcDmMsg((dmEvt_t *) pMsg);
}
if (pMsg->param == DM_CONN_ID_NONE || DmConnRole((dmConnId_t) pMsg->param) == DM_ROLE_SLAVE)
{
/* process advertising and connection-related messages */
AppSlaveProcDmMsg((dmEvt_t *) pMsg);
/* process security-related messages */
AppSlaveSecProcDmMsg((dmEvt_t *) pMsg);
}
/* process discovery-related messages */
AppDiscProcDmMsg((dmEvt_t *) pMsg);
}
/* perform profile and user interface-related operations */
watchProcMsg((dmEvt_t *) pMsg);
}
}
3.更新手表的业务信息
static void watchMasterValueUpdate(attEvt_t *pMsg)
{
if (pMsg->hdr.status == ATT_SUCCESS)
{
/* determine which profile the handle belongs to; start with most likely */
/* heart rate */
if (HrpcHrsValueUpdate(pWatchHrsHdlList, pMsg) == ATT_SUCCESS)
{
return;
}
/* device information */
if (DisValueUpdate(pWatchDisHdlList, pMsg) == ATT_SUCCESS)
{
return;
}
/* GATT */
if (GattValueUpdate(pWatchMstGattHdlList, pMsg) == ATT_SUCCESS)
{
return;
}
}
}
三 总结备忘
1.还需要进一步的分析显示屏和协议部分。
2.ble的各种状态信息值得深入分析
作者:
虚生
出处:
https://www.cnblogs.com/dylancao/
以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。
勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188
posted on
2022-05-19 16:42 虚生
阅读(
255
) 评论(
) 编辑
Original: https://www.cnblogs.com/dylancao/p/16289141.html
Author: 虚生
Title: 基于Apollo3-Blue-MCU的智能手表方案源码解析