6#include "dawn/proto/nimble/adv.hxx"
15void CProtoNimbleAdv::startAdvertise()
17 struct ble_gap_adv_params advp;
20 printf(
"advertise\n");
22 CProtoNimbleAdv::updateAd();
24 std::memset(&advp, 0,
sizeof advp);
25 advp.conn_mode = BLE_GAP_CONN_MODE_UND;
26 advp.disc_mode = BLE_GAP_DISC_MODE_GEN;
31 CProtoNimbleAdv::gapEventCb,
35 DAWNERR(
"ble_gap_adv_start failed: %d\n", ret);
39void CProtoNimbleAdv::setGapName(
const char *name, uint8_t len)
45 DAWNERR(
"NULL GAP name pointer\n");
54void CProtoNimbleAdv::putAd(uint8_t type,
60 buf[(*len)++] = ad_len + 1;
63 std::memcpy(&buf[*len], ad, ad_len);
68void CProtoNimbleAdv::updateAd()
70 uint8_t ad_flags = BLE_HS_ADV_F_DISC_GEN | BLE_HS_ADV_F_BREDR_UNSUP;
72 uint8_t ad[BLE_HS_ADV_MAX_SZ];
75 CProtoNimbleAdv::putAd(BLE_HS_ADV_TYPE_FLAGS, 1, &ad_flags, ad, &ad_len);
78 ble_gap_adv_set_data(ad, ad_len);
81int CProtoNimbleAdv::gapEventCb(
struct ble_gap_event *event,
void *arg)
85 case BLE_GAP_EVENT_CONNECT:
87 if (event->connect.status)
89 CProtoNimbleAdv::startAdvertise();
94 case BLE_GAP_EVENT_DISCONNECT:
96 DAWNINFO(
"disconected reason=%d\n", event->disconnect.reason);
97 CProtoNimbleAdv::startAdvertise();
static size_t GAPNAME_MAX
Max GAP device name length (excluding null).
static char gapName[GAPNAME_MAX+1]
GAP device name visible during BLE discovery.
static uint8_t ownAddrType
BLE device address type (random/static/public).
Out-of-tree user-extension hooks for Dawn.