CH573 CH582 CH579 peripheral通用外设例子讲解三 修改广播包
void Peripheral_Init() { Peripheral_TaskID = TMOS_ProcessEventRegister(Peripheral_ProcessEvent); // Setup the GAP Peripheral Role Profile { uint8_t initial_advertising_enable = TRUE; uint16_t desired_min_interval = DEFAULT_DESIRED_MIN_CONN_INTERVAL; uint16_t desired_max_interval = DEFAULT_DESIRED_MAX_CONN_INTERVAL; // Set the GAP Role Parameters GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &initial_advertising_enable);//开启广播使能 GAPRole_SetParameter(GAPROLE_SCAN_RSP_DATA, sizeof(scanRspData), scanRspData);//设置扫描应答包 GAPRole_SetParameter(GAPROLE_ADVERT_DATA, sizeof(advertData), advertData);//设置扫广播包 GAPRole_SetParameter(GAPROLE_MIN_CONN_INTERVAL, sizeof(uint16_t), &desired_min_interval); GAPRole_SetParameter(GAPROLE_MAX_CONN_INTERVAL, sizeof(uint16_t), &desired_max_interval);//设置预期的连接间隔 }
如果需要修改广播包,需要先把广播关闭
uint8_t initial_advertising_enable = FALSE; // Set the GAP Role Parameters GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &initial_advertising_enable);//关闭广播包
修改广播数据
advertData[5]=advertData[5]+1; //示例,修改广播数据, GAPRole_SetParameter(GAPROLE_SCAN_RSP_DATA, sizeof(scanRspData), scanRspData);//重新设置扫描应答包 GAPRole_SetParameter(GAPROLE_ADVERT_DATA, sizeof(advertData), advertData);//重新设置广播包
重新使能广播
uint8_t initial_advertising_enable = TRUE; // Set the GAP Role Parameters GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t), &initial_advertising_enable);//使能广播
测试效果
程序运行,可以看广播开启广播引起的状态变化 static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEvent_t *pEvent)
抓包看广播包信息,修改位置是变化的

直接动态修改广播包和扫描应答包(不用关闭广播,可以直接调用下面这个函数修改广播和扫描应答包)
/******************************************************************************* * @fn GAP_UpdateAdvertisingData * * @brief Setup or change advertising and scan response data. * * NOTE: if the return status from this function is SUCCESS, * the task isn't complete until the GAP_ADV_DATA_UPDATE_DONE_EVENT * is sent to the calling application task. * * input parameters * * @param taskID - task ID of the app requesting the change * @param adType - TRUE - advertisement data, FALSE - scan response data * @param dataLen - Octet length of advertData * @param pAdvertData - advertising or scan response data * * output parameters * * @param None. * * @return SUCCESS: data accepted,<BR> * bleIncorrectMode: invalid profile role,<BR> */ extern bStatus_t GAP_UpdateAdvertisingData( u8 taskID,u8 adType,u8 dataLen,u8 *pAdvertData );
直接修改,不用开关广播,提供的接口
/**
 * @brief   Setup or change advertising and scan response data.
 *
 * @note    if the return status from this function is SUCCESS,the task isn't complete
 *          until the GAP_ADV_DATA_UPDATE_DONE_EVENT is sent to the calling application task.
 *
 * @param   taskID - task ID of the app requesting the change
 * @param   adType - TRUE - advertisement data, FALSE  - scan response data
 * @param   dataLen - Octet length of advertData
 * @param   pAdvertData - advertising or scan response data
 *
 * @return  SUCCESS: data accepted
 *          bleIncorrectMode: invalid profile role
 */
extern bStatus_t GAP_UpdateAdvertisingData( uint8_t taskID, uint8_t adType, uint16_t dataLen, uint8_t *pAdvertData );
例如:
GAP_UpdateAdvertisingData( 0,TRUE ,sizeof( advertData ),advertData );         //  广播包
GAP_UpdateAdvertisingData( 0,FALSE ,sizeof( scanRspData ),scanRspData ); // 扫描应答包
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号