peripheralStateNotificationCB

  1 /*********************************************************************
  2  * @fn      peripheralStateNotificationCB 外围设备 状态 通知 回调函数
  3  *
  4  * @brief   Notification from the profile of a state change. 通知来自于profile的状态改变!
  5  *
  6  * @param@param   newState - new state 形参:新状态,类型是一个枚举变量
  7  *
  8  * @return@return  none
  9  */
 10 static void peripheralStateNotificationCB( gaprole_States_t newState )
 11 {
 12 #ifdef PLUS_BROADCASTER //暂时不知 不作任何处理,2016年12月16日15:14:51
 13   static uint8 first_conn_flag = 0;
 14 #endif // PLUS_BROADCASTER
 15   
 16   
 17   switch ( newState )
 18   {
 19     case GAPROLE_STARTED: //GAP 任务 开始,但 并不广播 的状态
 20       {
 21         uint8 ownAddress[B_ADDR_LEN]; //定义一个 存放 设备 地址的 buffer
 22         uint8 systemId[DEVINFO_SYSTEM_ID_LEN];//定义一个存放 设备ID buffer
 23 
 24         //GAP 任务获取 设备 地址放到 ownAddress 临时 buffer中
 25         
 26         GAPRole_GetParameter(GAPROLE_BD_ADDR, ownAddress);
 27 
 28         // use 6 bytes of device address for 8 bytes of system ID value
 29         systemId[0] = ownAddress[0];
 30         systemId[1] = ownAddress[1];
 31         systemId[2] = ownAddress[2];
 32 
 33         // set middle bytes to zero
 34         systemId[4] = 0x00;
 35         systemId[3] = 0x00;
 36 
 37         // shift three bytes up
 38         systemId[7] = ownAddress[5];
 39         systemId[6] = ownAddress[4];
 40         systemId[5] = ownAddress[3];
 41         
 42         //设备信息设置参数 系统ID  为 设备 地址的 前三个字节+00+后三个字节
 43 
 44         DevInfo_SetParameter(DEVINFO_SYSTEM_ID, DEVINFO_SYSTEM_ID_LEN, systemId);
 45 
 46         #if (defined HAL_LCD) && (HAL_LCD == TRUE)
 47           // Display device address
 48           HalLcdWriteString( bdAddr2Str( ownAddress ),  HAL_LCD_LINE_2 );
 49           HalLcdWriteString( "Initialized",  HAL_LCD_LINE_3 );
 50         #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)
 51       }
 52       break;
 53 
 54     case GAPROLE_ADVERTISING://GAP 任务 开始广播 的状态
 55       {
 56         #if (defined HAL_LCD) && (HAL_LCD == TRUE)
 57           HalLcdWriteString( "Advertising",  HAL_LCD_LINE_3 );
 58         #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)
 59       }
 60       break;
 61 
 62 #ifdef PLUS_BROADCASTER   //暂时不知 不作任何处理,2016年12月16日15:14:51
 63     /* After a connection is dropped a device in PLUS_BROADCASTER will continue
 64      * sending non-connectable advertisements and shall sending this change of 
 65      * state to the application.  These are then disabled here so that sending 
 66      * connectable advertisements can resume.
 67      */
 68     case GAPROLE_ADVERTISING_NONCONN:
 69       {
 70         uint8 advertEnabled = FALSE;
 71       
 72         // Disable non-connectable advertising.
 73         GAPRole_SetParameter(GAPROLE_ADV_NONCONN_ENABLED, sizeof(uint8),
 74                            &advertEnabled);
 75         
 76         // Reset flag for next connection.
 77         first_conn_flag = 0;
 78       }
 79       break;
 80 #endif //PLUS_BROADCASTER         
 81       
 82     case GAPROLE_CONNECTED://GAP 任务 已经连接的状态
 83       {        
 84         #if (defined HAL_LCD) && (HAL_LCD == TRUE)
 85           HalLcdWriteString( "Connected",  HAL_LCD_LINE_3 );
 86         #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)
 87           
 88 #ifdef PLUS_BROADCASTER
 89         // Only turn advertising on for this state when we first connect
 90         // otherwise, when we go from connected_advertising back to this state
 91         // we will be turning advertising back on.
 92         if ( first_conn_flag == 0 ) 
 93         {
 94             uint8 advertEnabled = FALSE; // Turn on Advertising
 95 
 96             // Disable connectable advertising.
 97             GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8),
 98                                  &advertEnabled);
 99             
100             // Set to true for non-connectabel advertising.
101             advertEnabled = TRUE;
102             
103             // Enable non-connectable advertising.
104             GAPRole_SetParameter(GAPROLE_ADV_NONCONN_ENABLED, sizeof(uint8),
105                                  &advertEnabled);
106             
107             first_conn_flag = 1;
108         }
109 #endif // PLUS_BROADCASTER
110       }
111       break;
112 
113     case GAPROLE_CONNECTED_ADV://GAP 任务连接状态下 进行广播 的状态
114       {
115         #if (defined HAL_LCD) && (HAL_LCD == TRUE)
116           HalLcdWriteString( "Connected Advertising",  HAL_LCD_LINE_3 );
117         #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)
118       }
119       break;      
120     case GAPROLE_WAITING://GAP 任务 等待进行 周期性广播的  状态
121       {
122         #if (defined HAL_LCD) && (HAL_LCD == TRUE)
123           HalLcdWriteString( "Disconnected",  HAL_LCD_LINE_3 );
124         #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)
125           
126 #ifdef PLUS_BROADCASTER                
127         uint8 advertEnabled = TRUE;
128       
129         // Enabled connectable advertising.
130         GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8),
131                              &advertEnabled);
132 #endif //PLUS_BROADCASTER
133       }
134       break;
135 
136     case GAPROLE_WAITING_AFTER_TIMEOUT://GAP 任务  处于连接超时状态, 等待 执行 进行 周期性广播的  状态
137       {
138         #if (defined HAL_LCD) && (HAL_LCD == TRUE)
139           HalLcdWriteString( "Timed Out",  HAL_LCD_LINE_3 );
140         #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)
141           
142 #ifdef PLUS_BROADCASTER
143         // Reset flag for next connection.
144         first_conn_flag = 0;
145 #endif //#ifdef (PLUS_BROADCASTER)
146       }
147       break;
148 
149     case GAPROLE_ERROR://GAP 任务处于 无效的状态,暂时不太理解,2016年12月16日15:18:39
150       {
151         #if (defined HAL_LCD) && (HAL_LCD == TRUE)
152           HalLcdWriteString( "Error",  HAL_LCD_LINE_3 );
153         #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)
154       }
155       break;
156 
157     default://传入的GAP 状态参数有错
158       {
159         #if (defined HAL_LCD) && (HAL_LCD == TRUE)
160           HalLcdWriteString( "",  HAL_LCD_LINE_3 );
161         #endif // (defined HAL_LCD) && (HAL_LCD == TRUE)
162       }
163       break;
164 
165   }
166 
167   gapProfileState = newState;
168 
169 #if !defined( CC2540_MINIDK )
170   VOID gapProfileState;     // added to prevent compiler warning with 添加编译器 警告 事件
171                             // "CC2540 Slave" configurations
172 #endif
173 
174 
175 }

 

 

截图 比较好看一点:

 

 

 

 

转载于:https://www.cnblogs.com/suozhang/p/6198122.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql dump 1017_MySQL数据库导出 - Can't Wait Any Longer - OSCHINA - 中文开源技术交流社区...

本文内容主要来自MySQL官方文档:“MySQL5.1 Reference,2.10.3. 将MySQL数据库拷贝到另一台机器”注意:参数名与值间可以不用空格,如-uroot或-u root均可;某些参数会有不同含义1.数据库导出(-A导出所有数据库&#xff0…

Jsp2.0自定义标签(第二天)——自定义循环标签

今天是学习自定义标签的第二天&#xff0c;主要是写一个自定义的循环标签。 先看效果图&#xff1a; 前台页面Jsp代码 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <%taglib prefix"myout…

正则表达式以什么开头以什么结尾_股票hk是什么意思,股票st开头是什么意思,新通联股票...

股票hk是什么意思,股票st开头是什么意思,新通联股票股票hk是什么意思,股票st开头是什么意思,新通联股票我们首先解决时间跨度问题&#xff1a;如果您为诸如退休之类的遥远目标投资&#xff0c;则应主要投资股票(同样&#xff0c;我们建议您通过共同基金投资)。心理控制第一&…

读书笔记--SQL必知必会03--排序检索数据

3.1 排序数据 子句&#xff08;clause&#xff09; SQL语句由子句构成。一个子句通常由一个关键字加上所提供的数据组成。 ORDER BY子句可以取一个或多个列的名字&#xff0c;将SELECT语句检索出的数据进行排序。 ORDER BY子句可以使用非检索的列排序数据。 ORDER BY子句必须作…

mysql中编写匿名块_Oracle数据库之Oracle_PL/SQL(1) 匿名块

本文主要向大家介绍了Oracle数据库之Oracle_PL/SQL(1) 匿名块&#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习Oracle数据库有所帮助。1. PL/SQL 简介PL/SQL是一种比较复杂的程序设计语言, 用于从各种环境中访问Oracle数据库。为什么使用PL/SQL&#xff1f;Ora…

安装了多个Oracle11g的客户端,哪个客户端的tnsnames.ora会起作用?

如果我们由于需要安装了多个Oracle的client&#xff0c;哪个客户端的tnsnames.ora会起作用呢&#xff1f; 答案是&#xff1a; 在安装好clinent端后&#xff0c;安装程序会把client的bin目录放到path里面&#xff0c;path中在前面的client会被首先搜索&#xff0c;其中的tnsnam…

电脑显示连接了网络但是不能上网_为什么电脑插上网线显示已连接却上不了网...

尝试断一下网&#xff0c;或者重启一下系统看一下是否解决&#xff1b;也可能是开启了网络代理&#xff0c;可以重置一下浏览器或者网络设置&#xff1b;还可以使用安全管家软件&#xff0c;扫描一下网络设置。以下是详细介绍&#xff1a;1、有时候系统显示已经连接其实并没有真…

Atcoder ARC101 E 树dp

https://arc101.contest.atcoder.jp/tasks/arc101_c 题解是也是dp&#xff0c;好像是容斥做的&#xff0c;但是看不懂&#xff0c;而且也好像没讲怎么变n^2&#xff0c;看了写大佬的代码&#xff0c;自己理解了一下 #include <bits/stdc.h> #include <ext/pb_ds/assoc…

compress命令--Linux命令应用大词典729个命令解读

内容来源于人民邮电出版社《Linux命令应用大词典》讲述729个命令&#xff0c;1935个例子学习Linux系统的参考书、案头书&#xff0c;遇到不懂的命令或命令选项一查即可争取每天都发布内容本文出自 “airfish2000” 博客&#xff0c;更多命令查看博客&#xff1a;http://airfish…

javaweb学习总结(三十九)——数据库连接池

javaweb学习总结(三十九)——数据库连接池 数据库连接池的实现及原理 JNDI 在 J2EE 中的角色转载于:https://www.cnblogs.com/daishuguang/p/5041845.html

python getopterror_python3 getopt用法

python channel_builder.py -s /Users/graypn/ -d /Users/graypn/Documents -m 7 --outreport/xx.html参数也分长格式和短格式短格式&#xff1a;-s长格式&#xff1a;--sourceopts, args getopt.getopt(sys.argv[1:], "hs:d:m:v:p:c:",["help", "sr…

excel删除空行_Excel里99.9%的人都踩过的坑,早看早避开!

本文作者丨可可&#xff08;小 E 背后的小仙女&#xff09;本文由「秋叶 Excel」原创发布如需转载&#xff0c;请在公众号发送关键词「转载」查看说明2019 年上班第一天感觉怎么样呢&#xff1f;望着满屏幕铺天盖地的表格&#xff0c;我只能摸摸自己还没下去的小肚子&#xff0…

CentOS 6.5 Zabbix-agent3.2 安装 1.0版

1.关闭防火墙service iptables stop2.更换源、安装zabbix-agentrpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/zabbix-release-3.2-1.el6.noarch.rpmyum install -y zabbix-agent3.修改配置文件vim /etc/zabbix/zabbix_agentd.confServer192.168.8.228 ser…

centos下利用httpd搭建http服务器方法

centos下利用httpd搭建http服务器方法 1. 解决的问题 在开发测试过程中&#xff0c;分析图片任务需要将图片保存在服务器端&#xff0c;通过url来访问和下载该图片&#xff0c;这就需要使用一台图片服务器&#xff0c;但常常遇到图片服务器匮乏的情况&#xff0c;为了解决该问题…

[转]Java7中的ForkJoin并发框架初探(上)——需求背景和设计原理

详见&#xff1a; http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp83 这篇我们来简要了解一下JavaSE7中提供的一个新特性 —— Fork Join 框架。 0. 处理器发展和需求背景 回想一下并发开发的初衷&#xff0c;其实可以说是有两点&#xff0c;或者说可以从两个方面…

安装oculus运行时出现问题_U盘安装windows10出现的问题解决方法

安装windows10 出现的问题之前安装windows10都没什么问题&#xff0c;今天安装windows10出现了好多问题&#xff0c;记录一下。我这个教程我觉得是最好的安装教程安装windows10教程问题1. 我们无法创建新的分区&#xff0c;找不到现有分区&#xff08;或者因为MBR分区表问题&am…

JavaFx导出文件

导出文件格式可选 protected void handExportDateAction(ActionEvent event) {// ShowDialog.showConfirmDialog(FXRobotHelper.getStages().get(0),// "是否导出数据到txt&#xff1f;", "信息");FileChooser fileChooser new FileChooser();FileChooser…

python选择排序从大到小_Python实现选择排序

一、选择排序简介选择排序(Selection sort)是一种简单直观的排序算法。选择排序首先从待排序列表中找到最小(大)的元素&#xff0c;存放到元素列表的起始位置(与起始位置进行交换)&#xff0c;作为已排序序列&#xff0c;第一轮排序完成。然后&#xff0c;继续从未排序序列中找…

【Ubuntu14】Nginx+PHP5+Mysql记录

这次因为工作原因&#xff0c;需要在Linux下进行开发。推荐的环境是Ubuntu14NginxPHPMysql。环境搭建好之后&#xff0c;装上GIT&#xff0c;装上IDE&#xff0c;觉得Mysql命令界面麻烦又装了个Navicat。总体用下来感觉很带感。 【虚拟机与镜像文件】 这里我采用的虚拟机是VMwa…

java句柄数过高怎么解决_主播个人及企业利润高,个税或企业所得税怎么解决...

网络直播在2020年尤为火热&#xff0c;男女老少都纷纷投入其中&#xff0c;究其原因还是其行业表现出来的“利润高”等。也确实有部分人取得了一定的成效&#xff0c;也催生了不少的直播平台、经纪公司的出现。 那么这些主播个人或者企业利润高&#xff0c;个税或企业所得…