BLE蓝牙开发 ANCS服务开发

2 篇文章 1 订阅
1 篇文章 1 订阅

在手表应用中,随着应用的复杂程度越来越高,通常离不开消息提醒的智能推送,所以这里主要针对ANCS做讲解,这是APPLE IOS系统的规范,android要想实现类似功能,一般采用私有协议方式,没有统一规范。

ANCS基本知识

ANCS(苹果通知中心, Apple Notification Center Service)的目的是提供给蓝牙外设一种简单、方便的获取ios设备通知信息的方式。使得蓝牙手环、手表可以收到苹果手机的来电、短信及各种应用的通知信息。
要想实现ANCS,就必须得绑定,连接过程大致分为如下几个步骤:
1、外设端进行广播,手机打开蓝牙,搜索外设,连接外设,之后进行绑定(这很重要,否则无法接收通知)
2、外设在连接建立后需要监听手机上的ANCS Service中的Notification Source;
3、当有通知时,手机会给外设发消息,说明是哪个应用的通知;
4、如果外设想进一步获取通知的详情,就往Control Point写控制信息,获取详情;
5、详情会通过Data Source发过来。
这在后面会结合代码说明。

专用名词

l ANCS:苹果通知中心服务
l NP(Notification Provider):通知的产生者,一般是ios设备
l NC(Notification Consumer):通知的消费者,一般是蓝牙设备
l iOS notification:ios设备里出现的通知
l GATT notification:GATT characteristic发送的通知

概念定义

如果没有特殊说明,通过ANCS传输的数值均使用小端模式;
如果没有特殊说明,通过ANCS传输的字符串均使用UTF-8编码。

服务

ANCS有一个私有的UUID,这个不是SIG的,是APPLE定义的私有UUID,且有三个必须的Characteristic类型。

Service UUID: 7905F431-B5CE-4E99-A40F-4B1E122D00D0
Notification Source UUID: 9FBF120D-6301-42D9-8C58-25E699A21DBD (notifiable)
基本通知源,通知一些计数的信息;
Control Point UUID: 69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9 (writeable with response)
控制器,用于向IOS设备写入控制信息,例如想要读取的详情;
Data Source UUID: 22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB (notifiable)
数据源,用于提供详细数据,在Control Point控制信息写入后通过此Characteristic返回。
在这里插入图片描述

关键接口

ancs_cbs

关键底层callback:以write result cb为例,最终都是进入到ance_client_cb
在这里插入图片描述

ancs_client_cb

ancs_client_cb为主要各种信息的回调接口,包括ANCS服务发现完成情况,接收来自IOS的消息,write point result包括enable\ disable, write 控制信息等),一般来说ancs服务发现完成后,就会调用ancs_set_data_source_notify来打开data source
1、在该cb中,当发现ancs服务完成后,
ancs_set_data_source_notify->ANCS_WRITE_DATA_SOURCE_NOTIFY_ENABLE->ANCS_WRITE_NOTIFICATION_SOURCE_NOTIFY_ENABLE对应的就是以下两个通道:
在这里插入图片描述
2、都打开完成后,当IOS有消息推送时
先触发ANCS_FROM_NOTIFICATION_SOURCE表示有这么回事,然后再调用app_parse_notification_source_data填入你要获取该消息的哪些信息,这里有过滤机制F_BT_ANCS_APP_FILTER,最后从底层返回write result,case ANCS_WRITE_CONTROL_POINT,
在这里插入图片描述
当消息来了的时候,ANCS_FROM_DATA_SOURCE里就会解析,一直到app_handle_notification_attribute_data里体现:
在这里插入图片描述

相关结构体

CategoryID

在这里插入图片描述

EventID

在这里插入图片描述

EventFlags

在这里插入图片描述

CommandID

在这里插入图片描述

NotificationAttributeID

在这里插入图片描述

AppAttributeID

在这里插入图片描述

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C BLE蓝牙开发是指使用C语言进行蓝牙低功耗(Bluetooth Low Energy,简称BLE)设备开发的过程。BLE蓝牙技术被广泛应用于各种智能设备,包括智能手表、智能手机、健康监测设备等。使用C语言进行BLE蓝牙开发具有以下几个重要的方面。 首先,在C BLE蓝牙开发中,开发者需要了解蓝牙通信协议和BLE协议栈。蓝牙协议规定了通信的标准和数据格式,而BLE协议栈是处理BLE通信的软件层次。C语言可以提供底层的控制和操作,实现与BLE协议栈的交互。 其次,C BLE蓝牙开发需要使用特定的蓝牙开发工具和SDK(软件开发工具包)。开发者可以使用C语言编写代码,通过SDK提供的接口实现与蓝牙设备的连接、数据传输和控制等功能。这些工具和SDK通常由蓝牙芯片厂商提供,开发者可以根据具体的硬件平台选择适合的工具和SDK。 此外,C语言具有高效性和跨平台的特点,在蓝牙开发中也有广泛的应用。通过使用C语言编写的代码,开发者可以利用底层硬件的资源和功能,提高系统的性能和响应速度。同时,C语言也可以在不同的操作系统和开发环境下进行编译和运行,使得BLE蓝牙开发具有更好的灵活性和可移植性。 综上所述,C BLE蓝牙开发是一种使用C语言进行蓝牙低功耗设备开发的方法。它需要对蓝牙通信协议和BLE协议栈有一定的了解,同时使用特定的蓝牙开发工具和SDK进行开发。C语言的高效性和跨平台特性使得BLE蓝牙开发更加灵活和可移植。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TomWang-0214

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值