一、主机通讯过程包括:扫描、发出连接请求、建立连接、发现服务、交换数据。

1、扫描过程:

应用层将GAPM_START_SCAN_CMD消息发送到堆栈,设备将开始扫描过程,并报告当前正在进行广播的所有可用设备。广播事件将被报告给.app_on_adv_report_ind指针指向的函数,即user_on_adv_report_ind( )函数。

在user_on_adv_report_ind()的param参数里,可获得广播设备的地址和广播数据,通过比较广播数据或地址

来选择需要连接的广播设备。

2、发出连接请求:

在想要连接特定设备后,使用app_easy_gap_start_connection_to_set()来设置连接参数(广播者地址、连接间隔、

监督超时、等等),

然后调用user_gapm_cancel()以取消扫描,并在扫描完成后使用app_easy_gap_start_connection_to()来发出

连接请求消息GAPM_START_CONNECTION_CMD。

3、建立连接:

当从机收到主机的连接请求后,如果确定要和主机连接,则它们之间将建立连接操作,这些都是协议栈自动完成的。

如果连接建立成功的话,主机将触发GAPC_CONNECTION_REQ_IND消息。

最终会调用gapc_connection_req_ind_handler()函数,该函数主要处理来自GAP的连接完成事件。

函数user_on_connection()用来使能配置文件。

4、发现服务:

函数执行过程

user_on_connection() ->app_prf_enable() -> user_sps_enable()

->发送消息SPS_CLIENT_ENABLE_REQ

->回调 sps_client_enable_req_handler( )

-> prf_disc_svc_send_128( )

->发送消息GATTC_DISC_CMD ,类型为GATTC_DISC_BY_UUID_SVC即通过UUID发现服务,如果发现和给出的UUID相

匹配的服务,则会触发GATTC_DISC_SVC_IND 消息然后调用gattc_disc_svc_ind_handler( )

-> 发现服务操作完成后自动触发

GATTC_CMP_EVT消息 -> gattc_cmp_evt_handler( )

-> prf_disc_char_all_send()

->发送消息GATTC_DISC_CMD ,

类型为GATTC_DISC_ALL_CHAR即发现该服务所有的特征,如果发现特征则触发GATTC_DISC_CHAR_IND消息

-> gattc_disc_char_ind_handler( )

->发现特征操作完成后自动触GATTC_CMP_EVT消息

-> gattc_cmp_evt_handler( )

-> prf_disc_char_desc_send( )->发送消息GATTC_DISC_CMD ,

类型为GATTC_DISC_DESC_CHAR即发现特征描述,如果发现特征描述则触发GATTC_DISC_CHAR_DESC_IND消息

->gattc_disc_char_desc_ind_handler( )

->发现特征描述操作完成后自动触GATTC_CMP_EVT消息

-> gattc_cmp_evt_handler( )

->如果所有的特征描述都发现完成,则调用sps_client_enable_cfm_send( )

来使能从机特征配置,到这里发现服务的过程就结束了。

5、交换数据:

主机通过服务提供的特征向从机写入或读出数据。

从机通过通知主机,将数据发送给主机

DA14580做主机相关推荐

  1. 用计算机打印出1000,一台HP1000型激光打印机用5米USB延长线接到另一台做主机的电脑上频繁出现打印故障!...

    一台HP1000型激光打印机用5米USB延长线接到另一台做主机的电脑上频繁出现打印故障! 2台电脑通过集线器连网,1台HP LaserJet 1000型激光打印机,以前一直是接在一台电脑上,然后把在该 ...

  2. STM32做主机------MCGS(昆仑通态)触摸屏做从机----modbus通讯设置

    目的:Stm32做modbus主机, mcgs触摸屏做从机. 将需要显示的数据发送给mcgs进行显示. 一.stm32主机程序 请见我的博文:https://blog.csdn.net/sym_sim ...

  3. 手机做显示器服务器,华为MateView体验:手机做主机,显示器也能当电脑用

    腾讯数码 文|孙皓 5月的智能生态产品发布会上,华为正式发布了旗下高端显示器华为MateView.作为华为智能设备产品线的扩展,华为MateView还承载了华为智能生态建设的任务. 华为MateVie ...

  4. ubuntu做主机双网卡共享上网方法

    一.网络拓补结构: (注:如果是无线网卡连接内网,eth0改为wlan0,不清楚自己的网卡是哪个用命令ifconfig -a 查询) 服务器:两网卡的设置: eth0:202.96.168.100 掩 ...

  5. 修改Linux主机名和IP

    问题描述 又到了例行的系统安全测试时间,公司部署的一套系统需要做安全测试了,首先要做主机渗透,显然不可能在正式环境直接测,于是就把几台服务器做了个镜像,作为测试环境. 现在问题是,测试环境的ip要修改 ...

  6. 服务器分虚拟空间,服务器怎样分虚拟主机

    自己操作的话,首先有一个固定ip,做主机的电脑可以24小时开机.装上服务器软件,可以装 IIS 或者 linux/bsd+apache.数据库的话是看你的网页设计需要的,如果有数据库开发的动态网页,那 ...

  7. 电脑向linux板卡传文件,ARM 开发板嵌入式linux系统与主机PC通过串口传输文件

    ARM 开发板嵌入式linux系统与主机PC通过串口传输文件 本来以为按以下两篇文章就可以几步轻松搞定这个问题,没想到遇到两个小麻烦: 1,我用的xp虚拟机下redhat9.0做主机,按照下面第一篇文 ...

  8. 想去游戏公司做游戏,最重要的是什么素养?

    首先,要学会沟通. 话说,动过去游戏公司的念头,做游戏,感觉很酷. 但是,想想自己一不会编程.二不会画画--做策划?那好像是两边受气里外不是人出事第一个背锅的角色,想想也就想想--不过正好前些天我们发 ...

  9. 《蜡烛人》制作人高鸣:如何原汁原味的将主机游戏移植到手机平台

    高鸣:大家好,我是高鸣,我是交典创艺的创始人也是游戏的制作人,准确地来说,我是这个团队里面的主程+主策.<蜡烛人>是比较有代表性的一款游戏,<蜡烛人>这款游戏基本上所有的代码都 ...

最新文章

  1. C++ 析构函数(函数前面有波浪号~)
  2. Java程序员,上班那点事儿--程序员也是一般人
  3. Linux-SAMBA服务器的配置
  4. [导入]ASP.NET 2.0 读取配置文件[INI](示例代码下载)
  5. 打印出如下图案(菱形)
  6. Docker 入门(Mac环境)- part 5 stacks
  7. 16位汇编 寄存器的操作
  8. python是外部还是编程_Python网络编程(绑定到外部地址)
  9. 悖论:早期互联网项目,是否需要技术含量?
  10. JDK源码-ArrayList源码
  11. order by 多个条件
  12. Android UI学习之CheckBox
  13. C#中的String编码转换 BIG5 转换 GB2312
  14. Android jobb 工具使用详解
  15. 大数据、数据挖掘和机器学习,带了哪些业务价值?
  16. 2023 年十大战略技术趋势中哪一项最需要 HTAP ?
  17. 阿里飞天云平台架构简介
  18. 计算机网络拓扑结构课件,计算机网络拓扑结构的分析及选择
  19. 计算机主机前后,电脑cpu后面的字母是什么意思
  20. gif动图怎么制作?手机怎么制作动态图

热门文章

  1. [Python]网络爬虫(四):Opener与Handler的介绍和实例应用
  2. 结构型模式:外观模式(门面模式)
  3. 后台开发技术(1)--概述
  4. CSS之定位布局(position,relative定位布局技巧)
  5. java pdf添加图片_java实现在pdf模板的指定位置插入图片
  6. eta 深度学习 参数_深度学习中的参数梯度推导(一)
  7. 正宁天气预报软件测试,正宁天气预报15天
  8. W ndoWs7重启按F11没用,windows7无法正常启动按F8也没有效果的解决方法
  9. 成功解决在excel表格中仅在某列内插入一个空白单元格,使其下部的数据整体下移一格
  10. DL之SSD:SSD算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略