博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
peripheralStateNotificationCB
阅读量:6251 次
发布时间:2019-06-22

本文共 6357 字,大约阅读时间需要 21 分钟。

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_BROADCASTER110       }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_BROADCASTER133       }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_BROADCASTER143         // 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:39150       {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" configurations172 #endif173 174 175 }

 

 

截图 比较好看一点:

 

 

 

 

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

你可能感兴趣的文章
Vista上运行VisualStudio2005,调试asp.net程序的怪问题
查看>>
理解HTTP幂等性
查看>>
登录服务器,首先用到的5个命令
查看>>
使用PIP扩展BTARN
查看>>
GetLastError()返回值及含义
查看>>
android UI之Shape详解_GradientDrawable
查看>>
Python sh库学习 上篇
查看>>
Oracle Management Server配置
查看>>
O/R Mapping实际开发经验之谈(转)
查看>>
SPSS Clementine 数据挖掘入门 (3)
查看>>
Hosting the WCF service
查看>>
xampp下php环境的设置
查看>>
以消息为基础,以事件驱动之(message based, event driven)-- 《深入浅出MFC》
查看>>
IT公司的等级观念
查看>>
如何建立合适的索引?
查看>>
linux 多线程基础1
查看>>
详解谷歌官方教程 Android插件ADT“.NET研究” 9.0.0
查看>>
postgres中的中文分词zhparser
查看>>
制作正式版10.11 OS X El Capitan 安装U盘(优盘)
查看>>
FF或将支持返回一个HTML文档对象
查看>>