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 }

    截图 比较好看一点:

  • 相关阅读:
    ci框架与smarty的整合
    jQuery 1.3.2 简单实现select二级联动
    Nginx配置https
    tp5.1最新的类库使用规则
    Linux指令大全
    Redis锁机制处理高并发
    Nginx配置https站点
    vue的入门
    HTTP 请求头中的 X-Forwarded-For,X-Real-IP
    Composer包制作以及发布!
  • 原文地址:https://www.cnblogs.com/suozhang/p/6198122.html
Copyright © 2011-2022 走看看