蓝牙学习-GAP

GAP - Generic Access Profifile

GAP提供设备发现和建立安全连接的功能。GAP的功能分为客户端功能和服务端功能。

配置可被发现

所有的蓝牙端设备都可配成“discoverable”,这样别的蓝牙设备在扫描(inquiry scan)时可判断此设备是可被发现的。配置成可被发现需调用:gap_discoverable_control(1)。如果想用个特殊的名字,可调用:gap_set_local_name。如果想要省电,在被发现和连接后可以关闭此状态:gap_discoverable_control(1)。伪代码如下:

int main ( void ) {
  . . .
  // make discoverable
  gap_discoverable_control(1) ;
  btstack_run_loop_execute( ) ;
  return 0 ;
}
void packethandler ( uint8_t packettype , uint8_t ∗packet , uint16_tsize ) {
  . . .
  switch (state) {
     case W4_CHANNEL_COMPLETE:
     // if connection is successful , make device undiscover able
     gap_discoverable_control(0) ;
   . . .
} }

发现远端设备

蓝牙主设备在需要发现外围设备的使用使用hci_inquiry命令,发现设备的回调有以下几种类型:

* HCI_EVENT_INQUIRY_RESULT
* HCI_EVENT_INQUIRY_RESULT_WITH_RSSI
* HCI_EVENT_EXTENDED_INQUIRY_RESPONSE

返回值包括:address(6字节,mac地址),classOfDevice(2字节),repetitionMode(1字节),clockOffset(2字节),rssi(1字节),EIR(Extended Inquiry Result)

*注意:默认的rssi和EIR是不上报的。蓝牙协议2.1和更高版本,hci_write_inquiry_mode(0,标准上报;1,带RSSI上报,2,RSSI和EIR)命令用来控制查询的返回内容。

配对设备

默认的蓝牙通信是没有身份认证的。手机在使用蓝牙连接外设的时候可以要求使用身份认证服务(类似于拨号上网服务),建立身份认证的过程就叫配对。蓝牙提供两种配对机制:

1,使用PIN码(16字节的ASCII)进行身份验证(2.0之前),两端均默认设置了PIN码。此方法对嵌入式设备不太友好,没有使用全部的IO能力。
     HCI EVENT PIN CODE REQUEST:
     hci_event_pin_code_request_get_bd_addr(packet, bd_addr)
     hci_send_cmd(&hci_pin_code_request_reply, &bd_addr, 4, "0000");

注意:“0000”就是预设的PIN码

2,使用SSP(Secure Simple Pairing)进行身份验证(2.1后),此方法对嵌入式设备更好。
     设备会首先沟通他们之间的IO能力然后处理配对的有效性。如果蓝牙设备支持SSP,蓝牙协议栈会默认使用SSP配对。但是基于蓝牙协议栈的具体实现,默认SSP配对的逻辑可能会被通知用户进行配对确认的实现代替。

当配对成功后两个设备都会生成link key。这个link key会被存储在设备的持久化存储空间里。下次重启连接就可以直接使用这个link key。


专用型绑定

不同于常规绑定,专用型绑定会在绑定动作完成后断开连接。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容