static int set_advertise_enable(void) { #if 0 struct net_buf *buf; int err; #endif if (atomic_test_bit(bt_dev.flags, BT_DEV_ADVERTISING)) { return 0; } #if 0 buf = bt_hci_cmd_create(BT_HCI_OP_LE_SET_ADV_ENABLE, 1); if (!buf) { return -ENOBUFS; } net_buf_add_u8(buf, BT_HCI_LE_ADV_ENABLE); err = bt_hci_cmd_send_sync(BT_HCI_OP_LE_SET_ADV_ENABLE, buf, NULL); if (err) { return err; } #endif nble_gap_start_adv_req(); return 0; }
int bt_le_adv_start(const struct bt_le_adv_param *param, const struct bt_data *ad, size_t ad_len, const struct bt_data *sd, size_t sd_len) { struct nble_gap_set_adv_params_req params = { 0 }; struct nble_gap_set_adv_data_req data = { 0 }; int err; if (!valid_adv_param(param)) { return -EINVAL; } err = set_ad(&data.ad, ad, ad_len); if (err) { BT_ERR("Error setting ad data %d", err); return err; } err = set_ad(&data.sd, sd, sd_len); if (err) { BT_ERR("Error setting scan response data %d", err); return err; } /* Set advertising data */ nble_gap_set_adv_data_req(&data); /* TODO: Timeout is handled by application timer */ params.timeout = 0; /* forced to none currently (no whitelist support) */ params.filter_policy = 0; params.interval_max = param->interval_max; params.interval_min = param->interval_min; if (param->options & BT_LE_ADV_OPT_CONNECTABLE) { params.type = BT_LE_ADV_IND; } else { if (sd) { params.type = BT_LE_ADV_SCAN_IND; } else { params.type = BT_LE_ADV_NONCONN_IND; } } /* Set advertising parameters */ nble_gap_set_adv_params_req(¶ms); /* Start advertising */ nble_gap_start_adv_req(); return 0; }
static void notify_disconnected(struct bt_conn *conn) { struct bt_conn_cb *cb; bt_gatt_disconnected(conn); /* * FIXME: When disconnected NBLE stops advertising, this should * be fixed in the NBLE firmware, use this hack for now */ if (nble.keep_adv) { BT_WARN("Re-enable advertising on disconnect"); nble_gap_start_adv_req(); } for (cb = callback_list; cb; cb = cb->_next) { if (cb->disconnected) { cb->disconnected(conn, 0); } } }
static void notify_disconnected(struct bt_conn *conn) { struct bt_conn_cb *cb; bt_gatt_disconnected(conn); bt_smp_disconnected(conn); /* * FIXME: When disconnected NBLE stops advertising, this should * be fixed in the NBLE firmware, use this hack for now */ if (atomic_test_bit(&nble.flags, NBLE_FLAG_KEEP_ADVERTISING)) { BT_WARN("Re-enable advertising on disconnect"); nble_gap_start_adv_req(); } for (cb = callback_list; cb; cb = cb->_next) { if (cb->disconnected) { cb->disconnected(conn, 0); } } }