zoukankan      html  css  js  c++  java
  • 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 }

    截图 比较好看一点:

  • 相关阅读:
    html5+css3中的background: -moz-linear-gradient 用法 (转载)
    CentOS 安装Apache服务
    Linux 笔记
    CURL 笔记
    Spring Application Context文件没有提示功能解决方法
    LeetCode 389. Find the Difference
    LeetCode 104. Maximum Depth of Binary Tree
    LeetCode 520. Detect Capital
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode 136. Single Number
  • 原文地址:https://www.cnblogs.com/suozhang/p/6198122.html
Copyright © 2011-2022 走看看