主函数的作用 :
void on_ready(void)
{
/*Config Adv Parameter And Ready to Adv*/
ble_set_adv_param(name, adv_address, tx_power_level, adv_interval);//ÉèÖù㲥²ÎÊý
ble_device_start_advertising();//¿ªÊ¼¹ã²¥
run_after_delay(LED_ON,NULL,100);//ÑÓ³Ù100msºóÔËÐÐLED_Onº¯Êý
}
void LED_ON(void *args){
BSP_LED_On(LED0);//дÈëÒý½ÅʹLEDµÆÁÁ
run_after_delay(LED_OFF,NULL,250);//ÑÓ³Ù250msºóÔËÐÐLED_OFFº¯Êý
}
void LED_OFF(void *args){
BSP_LED_Off(LED0);//дÈëÒý½ÅʹLEDµÆÃð
run_after_delay(LED_ON,NULL,750);//ÑÓ³Ù750msºóÔËÐÐLED_OFFº¯Êý
}
广播参数的设置
void ble_set_adv_param(char* adv_name, uint8_t* bdaddr, uint8_t tx_power_pevel, uint16_t adv_interval)
{
uint8_t ret;
/*set adv address*/
ble_address(bdaddr);//µØÖ·
/*Set Adv Name*/
ble_device_set_name(adv_name);//Ãû×Ö
/*Set Tx Power Level*/
ble_set_tx_power(tx_power_pevel);//µÈ¼¶
/* Range: 0x0020 to 0x4000
Default: 1.28 s
Time = AdvInterval * 0.625 msec
*/
ble_device_set_advertising_interval(adv_interval);//¼ä¸ô
/*Gatt And Gap Init*/
ret = ble_init_bluenrg();//³õʼ»¯
if(ret){
printf("ble_init_bluenrg\n");
}
}
开始广播
uint8_t ble_device_start_advertising(void)
{
uint8_t ret;
uint8_t uuid_length = 3; //uuidµÄ³¤¶È
uint8_t serviceUUIDList[] = {AD_TYPE_16_BIT_SERV_UUID_CMPLT_LIST,0x90,0xFE};//uuidÁбí
/* disable scan response */
hci_le_set_scan_resp_data(0,NULL);//ÉèÖÃÊý¾Ý
HAL_Delay(1);
ret = aci_gatt_update_char_value(service_handle, dev_name_char_handle, 0,
adv_name_len, adv_name);//¸üÐÂ
if(ret) {
printf("aci_gatt_update_char_value failed.\n");
}
/*min_adv_interval > 32*0.625*/
ret = aci_gap_set_discoverable(ADV_IND, m_adv_params.interval, m_adv_params.interval, PUBLIC_ADDR, NO_WHITE_LIST_USE,
local_name_len, (char*)local_name, uuid_length, serviceUUIDList, 0, 0); Ïà¹ØµÄģʽÉèÖÃ
if(ret) {
printf("aci_gap_set_discoverable failed.\n");
} else {
printf("start advertising \n");
}
return ret;
}