Ejemplo n.º 1
0
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();
}
Ejemplo n.º 2
0
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);

}
Ejemplo n.º 3
0
Archivo: gap.c Proyecto: hudkmr/zephyr
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(&current_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));
}
Ejemplo n.º 4
0
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(&param, 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;
}
Ejemplo n.º 5
0
void ble_app_stop_advertisement(void)
{
	ble_app_adv_timer_delete();
	bt_le_adv_stop();
}