一 方案简介
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();
}

2. 处理手表的无线业务信息

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的各种状态信息值得深入分析

基于Apollo3-Blue-MCU的智能手表方案源码解析的更多相关文章

  1. 基于html5整屏切换IDO智能手表页面滚动代码

    之前为大大家介绍了一款jquery实现的整屏切换特效.今天分享一款IDO智能手表页面滚动html5代码.这是一款基于jQuery+HTML5实现的页面滚动效果代码.效果图如下: 在线预览   源码下载 ...

  2. android 方案源码下载repo同步遇到的问题

    1. error: could not verify the tag 'v1.12.4'的解决 repo init -u git://github.com/CyanogenMod/android.gi ...

  3. Django的rest_framework的视图之基于ModelViewSet视图源码解析

    前言 今天一直在整理Django的rest_framework的序列化组件,前面一共写了2篇博客,前面的博客给的方案都是一个中间的状态的博客,其中有很多的冗余的代码,如果有朋友不清楚,可以先看下我前面 ...

  4. 打造强势智能手表平台:Testin云測携手索尼招募全球开发人员

    打造强势智能手表平台:Testin云測携手索尼招募全球开发人员 2014/10/27 · Testin · 业界资讯 日前,全球最大的移动游戏.应用真机和用户云測试平台Testin云測宣布联手索尼公司 ...

  5. 基于ZigBee和STM32的智能家居控制系统的设计与实现(三)

    基于ZigBee和STM32的智能家居控制系统的设计与实现(三) 自从前两篇博客介绍了智能家居系统的基本实现机理后,收到了好多朋友的来信,和我讨论了好多的这方面的知识,在此很高兴,虽然自己做的这个所谓 ...

  6. 智能手表ticwatch穿戴体验

    前言 可穿戴设备近几年越来越火,最开始是谷歌眼睛.手环,再到手表.VR眼镜,相信未来几年这片领域依旧火热~ 自从谷歌发布Android Wear.苹果发布Apple Watch之后,智能手表的战役就正 ...

  7. Android 腾讯入门教程( 智能手表UI设计 和 MVC模式 )

    *****注意到mvc 在android 中是如何进行分层分域执行各自的功能.**** 官方推荐的按钮尺寸是48像素 前端之Android入门(1):环境配置 前端之Android入门(2):程序目录 ...

  8. 基于Z-WAVE 协议的LED智能照明系统的研究笔记

    LED调光基础: ☆:LED照明调光控制信号的方式有两种: 1. 通过PWM信号控制LED灯具开关电源的占空比从而实现调光: 2. 通过调光控制信号和交流电源供电线合用的两线式或三线式(例如LED相控 ...

  9. 【教程】16岁黑客如何把Windows 95装进智能手表?【转】

    来自美国佐治亚州的16岁黑客Corbin Davenport十分喜欢摆弄电子产品,最近他刚到手了一台三星Gear Live,并开始把玩起来.他发现Android Wear作为Android系统的改版并 ...

  10. 『转』三星推出Android智能手表Galaxy Gear

    苹果定下来本月10日召开新品发布会,而它的竞争对手三星却抢先一步.今天凌晨,三星在德国柏林一口气发布了三款重量级产品.三星智能手表Galaxy Gear最引人关注,其将于9月25日陆续在全球上市,售价 ...

随机推荐

  1. Nginx的反向代理做负载均衡

    对于一个大型网站,随着网站的访问量快速增长,单台服务器很难再支撑起需要,所以我们会购置多个服务器来满足业务量的需求,然后再利用Nginx提供的反向代理功能,来实现多台服务器间的协作功能,提高网站的处理 ...

  2. ASP.NET Core分布式项目实战(第三方ClientCredential模式调用)--学习笔记

    任务10:第三方ClientCredential模式调用 创建一个控制台程序 dotnet new console --name ThirdPartyDemo 添加 Nuget 包:IdentityM ...

  3. Linux--如何查看磁盘的IO(top、iostat)

    问题背景: 在性能测试时,虽然测试出了结果,但是我们并不知道瓶颈是源端,还是目标端.例如我做上传和下载性能验证,从Linux服务器上向OSS集群上传和下载文件,虽然测试出了速率,但是并不知道上传是否存 ...

  4. FolkMQ "单线程"消息中间件 v1.0.32 发布

    简介 采用 "单线程" + "多路复用" + "内存运行" + "快照持久化" + "Broker 集群模式& ...

  5. NC14685 加边的无向图

    题目链接 题目 题目描述 给你一个 n 个点,m 条边的无向图,求至少要在这个的基础上加多少条无向边使得任意两个点可达~ 输入描述 第一行两个正整数 n 和 m . 接下来的m行中,每行两个正整数 i ...

  6. 多层PCB的制造工艺流程

    多层PCB的制造工艺流程 多层板制造方法有电镀通孔法以及高密度增层法两种,都是通过不同工艺的组合来实现电路板结构.其中目前采用最多的是电镀通孔法,电镀通孔法经过超过半个世纪的发展与完善,电镀通孔法无论 ...

  7. Reactive 简介

    1. 概念 Reactive 非常适合低延迟.高吞吐量的工作负载. Reactive Processing 是一种范式(规范),它使开发人员能够构建非阻塞的.异步的应用程序,这些应用程序能够处理背压( ...

  8. HTMLElement对象

    HTMLElement对象 任何HTML元素都继承于HTMLElement对象,一些元素直接实现这个接口,而另一些元素通过多层继承来实现它. 属性 从其父元素Element继承属性,并从Documen ...

  9. 通过weblogic发布服务器某个文件夹

    介绍 客户有一台老服务器,上面安装的是weblogic,现在有个需求是需要将服务器下面某个文件夹下的文件都发布出来供某前端直接访问.之前都是直接利用tomcat的webapps目录直接发布即可,搜索了 ...

  10. Java并发编程实例--2.获取和设置线程信息

    常用线程属性 ID: 每个线程的唯一标识: Name: 线程名称: Priority: 线程优先级,从1-10,数字越大优先级越高:不推荐改变线程优先级: Status: 线程状态,包含6种状态:ne ...