微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > ANCS服务理解

ANCS服务理解

时间:10-02 整理:3721RD 点击:

ANCS通过蓝牙BLE 4.0实现,仅支持iPhone 4S及以上且系统版本在IOS 7以上的手机,同时在外设端需要支持蓝牙4.0协议。

1、外设端进行广播,手机打开蓝牙,搜索外设,连接外设,之后进行绑定(这很重要,否则无法接收通知)

2、外设在连接建立后需要监听手机上的ANCS Service中的Notification Source

3、当有通知时,手机会给外设发消息,说明是哪个应用的通知

4、如果外设想进一步获取通知的详情,就往Control Point写控制信息,获取详情

5、详情会通过Data Source发过来

前面这5个步骤是网上看到的,有几点不明白,请大神帮忙解答:

a.  第1点里面的 “绑定”动作,是苹果手机主动发起绑定?还是蓝牙4.0外设发起绑定?  如果是外设发起绑定, 那外设如何发起绑定?

b.  蓝牙4.0外设要实现ANCS服务的话, 是不是 SerialProfileNotifyCharProps 要配置成 GATT_PROP_NOTIFY ,不应该配成GATT_PROP_INDICATE ?

     我的simplerBLEperipheral工程目前配的是indicate模式,发送数据用的GATT_Indication。

回答你的问题a:

绑定哪方发起都可。如下:

#define GAPBOND_PAIRING_MODE_NO_PAIRING          0x00  //!< Pairing is not allowed
#define GAPBOND_PAIRING_MODE_WAIT_FOR_REQ        0x01  //!< Wait for a pairing request or slave security request
#define GAPBOND_PAIRING_MODE_INITIATE            0x02  //!< Don't wait, initiate a pairing request or slave security request

在init里面如SimpleBLEPeripheral_Init()的 // Setup the GAP Bond Manager里,就那几个设置,你可以都尝试下,默认是等待手机发起绑定请求。

  {
    uint32 passkey = 0; // passkey "000000"
    uint8 pairMode = GAPBOND_PAIRING_MODE_WAIT_FOR_REQ;
    uint8 mitm = TRUE;
    uint8 ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY;
    uint8 bonding = TRUE;
    GAPBondMgr_SetParameter( GAPBOND_DEFAULT_PASSCODE, sizeof ( uint32 ), &passkey );
    GAPBondMgr_SetParameter( GAPBOND_PAIRING_MODE, sizeof ( uint8 ), &pairMode );
    GAPBondMgr_SetParameter( GAPBOND_MITM_PROTECTION, sizeof ( uint8 ), &mitm );
    GAPBondMgr_SetParameter( GAPBOND_IO_CAPABILITIES, sizeof ( uint8 ), &ioCap );
    GAPBondMgr_SetParameter( GAPBOND_BONDING_ENABLED, sizeof ( uint8 ), &bonding );
  }

HI  TY

谢谢你的解答, 按照你给的配置设置后, 设备没有进行广播了, 搜索不到设备, 可能是什么原因导致

这个配置不会影响到广播。广播是由下面的语句控制,你先基于一个默认例子试试,如simpleperipherial.

uint8 initial_advertising_enable = TRUE;

    GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top