static void adv_timer_handler(void *privData) { ble_adv_timeout_cb_t adv_cb = privData; /* stop & clean up timer */ ble_app_adv_timer_delete(); bt_le_adv_stop(); if (adv_cb) adv_cb(); }
static void handle_ble_disable(struct ble_enable_req *req, struct _ble_service_cb *p_cb) { struct ble_enable_rsp *resp; pr_debug(LOG_MODULE_BLE, "ble_disable"); p_cb->ble_state = BLE_ST_DISABLED; bt_le_adv_stop(); resp = (void *)cfw_alloc_rsp_msg(&req->header, MSG_ID_BLE_ENABLE_RSP, sizeof(*resp)); cfw_send_message(resp); }
static void stop_advertising(const uint8_t *data, uint16_t len) { struct gap_stop_advertising_rp rp; if (bt_le_adv_stop() < 0) { tester_rsp(BTP_SERVICE_ID_GAP, GAP_STOP_ADVERTISING, CONTROLLER_INDEX, BTP_STATUS_FAILED); return; } atomic_clear_bit(¤t_settings, GAP_SETTINGS_ADVERTISING); rp.current_settings = sys_cpu_to_le32(current_settings); tester_send(BTP_SERVICE_ID_GAP, GAP_STOP_ADVERTISING, CONTROLLER_INDEX, (uint8_t *) &rp, sizeof(rp)); }
static int cmd_advertise(int argc, char *argv[]) { struct bt_le_adv_param param; const struct bt_data *ad, *scan_rsp; size_t ad_len, scan_rsp_len; if (argc < 2) { goto fail; } if (!strcmp(argv[1], "off")) { if (bt_le_adv_stop() < 0) { printk("Failed to stop advertising\n"); } else { printk("Advertising stopped\n"); } return 0; } param.interval_min = BT_GAP_ADV_FAST_INT_MIN_2; param.interval_max = BT_GAP_ADV_FAST_INT_MAX_2; if (!strcmp(argv[1], "on")) { param.options = BT_LE_ADV_OPT_CONNECTABLE; scan_rsp = sd; scan_rsp_len = ARRAY_SIZE(sd); } else if (!strcmp(argv[1], "scan")) { param.options = 0; scan_rsp = sd; scan_rsp_len = ARRAY_SIZE(sd); } else if (!strcmp(argv[1], "nconn")) { param.options = 0; scan_rsp = NULL; scan_rsp_len = 0; } else { goto fail; } /* Parse advertisement data */ if (argc >= 3) { const char *mode = argv[2]; if (!strcmp(mode, "discov")) { ad = ad_discov; ad_len = ARRAY_SIZE(ad_discov); } else if (!strcmp(mode, "non_discov")) { ad = NULL; ad_len = 0; } else { goto fail; } } else { ad = ad_discov; ad_len = ARRAY_SIZE(ad_discov); } if (bt_le_adv_start(¶m, ad, ad_len, scan_rsp, scan_rsp_len) < 0) { printk("Failed to start advertising\n"); } else { printk("Advertising started\n"); } return 0; fail: return -EINVAL; }
void ble_app_stop_advertisement(void) { ble_app_adv_timer_delete(); bt_le_adv_stop(); }