DA14580做主机
一、主机通讯过程包括:扫描、发出连接请求、建立连接、发现服务、交换数据。
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做主机相关推荐
- 用计算机打印出1000,一台HP1000型激光打印机用5米USB延长线接到另一台做主机的电脑上频繁出现打印故障!...
一台HP1000型激光打印机用5米USB延长线接到另一台做主机的电脑上频繁出现打印故障! 2台电脑通过集线器连网,1台HP LaserJet 1000型激光打印机,以前一直是接在一台电脑上,然后把在该 ...
- STM32做主机------MCGS(昆仑通态)触摸屏做从机----modbus通讯设置
目的:Stm32做modbus主机, mcgs触摸屏做从机. 将需要显示的数据发送给mcgs进行显示. 一.stm32主机程序 请见我的博文:https://blog.csdn.net/sym_sim ...
- 手机做显示器服务器,华为MateView体验:手机做主机,显示器也能当电脑用
腾讯数码 文|孙皓 5月的智能生态产品发布会上,华为正式发布了旗下高端显示器华为MateView.作为华为智能设备产品线的扩展,华为MateView还承载了华为智能生态建设的任务. 华为MateVie ...
- ubuntu做主机双网卡共享上网方法
一.网络拓补结构: (注:如果是无线网卡连接内网,eth0改为wlan0,不清楚自己的网卡是哪个用命令ifconfig -a 查询) 服务器:两网卡的设置: eth0:202.96.168.100 掩 ...
- 修改Linux主机名和IP
问题描述 又到了例行的系统安全测试时间,公司部署的一套系统需要做安全测试了,首先要做主机渗透,显然不可能在正式环境直接测,于是就把几台服务器做了个镜像,作为测试环境. 现在问题是,测试环境的ip要修改 ...
- 服务器分虚拟空间,服务器怎样分虚拟主机
自己操作的话,首先有一个固定ip,做主机的电脑可以24小时开机.装上服务器软件,可以装 IIS 或者 linux/bsd+apache.数据库的话是看你的网页设计需要的,如果有数据库开发的动态网页,那 ...
- 电脑向linux板卡传文件,ARM 开发板嵌入式linux系统与主机PC通过串口传输文件
ARM 开发板嵌入式linux系统与主机PC通过串口传输文件 本来以为按以下两篇文章就可以几步轻松搞定这个问题,没想到遇到两个小麻烦: 1,我用的xp虚拟机下redhat9.0做主机,按照下面第一篇文 ...
- 想去游戏公司做游戏,最重要的是什么素养?
首先,要学会沟通. 话说,动过去游戏公司的念头,做游戏,感觉很酷. 但是,想想自己一不会编程.二不会画画--做策划?那好像是两边受气里外不是人出事第一个背锅的角色,想想也就想想--不过正好前些天我们发 ...
- 《蜡烛人》制作人高鸣:如何原汁原味的将主机游戏移植到手机平台
高鸣:大家好,我是高鸣,我是交典创艺的创始人也是游戏的制作人,准确地来说,我是这个团队里面的主程+主策.<蜡烛人>是比较有代表性的一款游戏,<蜡烛人>这款游戏基本上所有的代码都 ...
最新文章
- C++ 析构函数(函数前面有波浪号~)
- Java程序员,上班那点事儿--程序员也是一般人
- Linux-SAMBA服务器的配置
- [导入]ASP.NET 2.0 读取配置文件[INI](示例代码下载)
- 打印出如下图案(菱形)
- Docker 入门(Mac环境)- part 5 stacks
- 16位汇编 寄存器的操作
- python是外部还是编程_Python网络编程(绑定到外部地址)
- 悖论:早期互联网项目,是否需要技术含量?
- JDK源码-ArrayList源码
- order by 多个条件
- Android UI学习之CheckBox
- C#中的String编码转换 BIG5 转换 GB2312
- Android jobb 工具使用详解
- 大数据、数据挖掘和机器学习,带了哪些业务价值?
- 2023 年十大战略技术趋势中哪一项最需要 HTAP ?
- 阿里飞天云平台架构简介
- 计算机网络拓扑结构课件,计算机网络拓扑结构的分析及选择
- 计算机主机前后,电脑cpu后面的字母是什么意思
- gif动图怎么制作?手机怎么制作动态图
热门文章
- [Python]网络爬虫(四):Opener与Handler的介绍和实例应用
- 结构型模式:外观模式(门面模式)
- 后台开发技术(1)--概述
- CSS之定位布局(position,relative定位布局技巧)
- java pdf添加图片_java实现在pdf模板的指定位置插入图片
- eta 深度学习 参数_深度学习中的参数梯度推导(一)
- 正宁天气预报软件测试,正宁天气预报15天
- W ndoWs7重启按F11没用,windows7无法正常启动按F8也没有效果的解决方法
- 成功解决在excel表格中仅在某列内插入一个空白单元格,使其下部的数据整体下移一格
- DL之SSD:SSD算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略