NimBLE-Arduino 2.3.2
Loading...
Searching...
No Matches
NimBLEAdvertising.h
1/*
2 * Copyright 2020-2025 Ryan Powell <ryan@nable-embedded.io> and
3 * esp-nimble-cpp, NimBLE-Arduino contributors.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#ifndef NIMBLE_CPP_ADVERTISING_H_
19#define NIMBLE_CPP_ADVERTISING_H_
20
21#include "nimconfig.h"
22#if (CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_BROADCASTER && !CONFIG_BT_NIMBLE_EXT_ADV) || defined(_DOXYGEN_)
23
24# if defined(CONFIG_NIMBLE_CPP_IDF)
25# include "host/ble_gap.h"
26# else
27# include "nimble/nimble/host/include/host/ble_gap.h"
28# endif
29
30/**** FIX COMPILATION ****/
31# undef min
32# undef max
33/**************************/
34
35# include "NimBLEUUID.h"
36# include "NimBLEAddress.h"
37# include "NimBLEAdvertisementData.h"
38
39# include <functional>
40# include <string>
41# include <vector>
42
44typedef std::function<void(NimBLEAdvertising*)> advCompleteCB_t;
45
52 public:
54 bool start(uint32_t duration = 0, const NimBLEAddress* dirAddr = nullptr);
55 void setAdvertisingCompleteCallback(advCompleteCB_t callback);
56 bool stop();
57 bool setConnectableMode(uint8_t mode);
58 bool setDiscoverableMode(uint8_t mode);
59 bool reset();
60 bool isAdvertising();
61 void setScanFilter(bool scanRequestWhitelistOnly, bool connectWhitelistOnly);
62 void enableScanResponse(bool enable);
63 void setAdvertisingInterval(uint16_t interval);
64 void setMaxInterval(uint16_t maxInterval);
65 void setMinInterval(uint16_t minInterval);
66
67 bool setAdvertisementData(const NimBLEAdvertisementData& advertisementData);
68 bool setScanResponseData(const NimBLEAdvertisementData& advertisementData);
71 void clearData();
73
74 bool addServiceUUID(const NimBLEUUID& serviceUUID);
75 bool addServiceUUID(const char* serviceUUID);
76 bool removeServiceUUID(const NimBLEUUID& serviceUUID);
77 bool removeServiceUUID(const char* serviceUUID);
78 bool removeServices();
79 bool setAppearance(uint16_t appearance);
80 bool setPreferredParams(uint16_t minInterval, uint16_t maxInterval);
81 bool addTxPower();
82 bool setName(const std::string& name);
83 bool setManufacturerData(const uint8_t* data, size_t length);
84 bool setManufacturerData(const std::string& data);
85 bool setManufacturerData(const std::vector<uint8_t>& data);
86 bool setURI(const std::string& uri);
87 bool setServiceData(const NimBLEUUID& uuid, const uint8_t* data, size_t length);
88 bool setServiceData(const NimBLEUUID& uuid, const std::string& data);
89 bool setServiceData(const NimBLEUUID& uuid, const std::vector<uint8_t>& data);
90
91 private:
92 friend class NimBLEDevice;
93 friend class NimBLEServer;
94
95 void onHostSync();
96 static int handleGapEvent(ble_gap_event* event, void* arg);
97
99 NimBLEAdvertisementData m_scanData;
100 ble_gap_adv_params m_advParams;
101 advCompleteCB_t m_advCompCb;
102 uint8_t m_slaveItvl[4];
103 uint32_t m_duration;
104 bool m_scanResp : 1;
105 bool m_advDataSet : 1;
106};
107
108#endif // (CONFIG_BT_ENABLED && CONFIG_BT_NIMBLE_ROLE_BROADCASTER && !CONFIG_BT_NIMBLE_EXT_ADV) || defined(_DOXYGEN_)
109#endif // NIMBLE_CPP_ADVERTISING_H_
A BLE device address.
Definition NimBLEAddress.h:42
Advertisement data set by the programmer to be published by the BLE server.
Definition NimBLEAdvertisementData.h:32
Perform and manage BLE advertising.
Definition NimBLEAdvertising.h:51
bool addTxPower()
Add the transmission power level to the advertisement packet.
Definition NimBLEAdvertising.cpp:499
const NimBLEAdvertisementData & getAdvertisementData()
Get the current advertisement data.
Definition NimBLEAdvertising.cpp:346
bool setAppearance(uint16_t appearance)
Set the device appearance in the advertising data.
Definition NimBLEAdvertising.cpp:466
void setAdvertisingInterval(uint16_t interval)
Set the advertising interval.
Definition NimBLEAdvertising.cpp:121
bool stop()
Stop advertising.
Definition NimBLEAdvertising.cpp:247
void setAdvertisingCompleteCallback(advCompleteCB_t callback)
Set the callback to be invoked when advertising stops.
Definition NimBLEAdvertising.cpp:261
bool addServiceUUID(const NimBLEUUID &serviceUUID)
Add a service uuid to exposed list of services.
Definition NimBLEAdvertising.cpp:408
void setMinInterval(uint16_t minInterval)
Set the minimum advertising interval.
Definition NimBLEAdvertising.cpp:130
void enableScanResponse(bool enable)
Enable scan response data.
Definition NimBLEAdvertising.cpp:147
bool setDiscoverableMode(uint8_t mode)
Set the discoverable mode to use.
Definition NimBLEAdvertising.cpp:97
bool setName(const std::string &name)
Set the advertised name of the device.
Definition NimBLEAdvertising.cpp:517
bool setServiceData(const NimBLEUUID &uuid, const uint8_t *data, size_t length)
Set the service data advertised for the UUID.
Definition NimBLEAdvertising.cpp:590
bool start(uint32_t duration=0, const NimBLEAddress *dirAddr=nullptr)
Start advertising.
Definition NimBLEAdvertising.cpp:182
bool reset()
Stops the current advertising and resets the advertising data to the default values.
Definition NimBLEAdvertising.cpp:58
bool setScanResponseData(const NimBLEAdvertisementData &advertisementData)
Set the data that is to be provided in a scan response.
Definition NimBLEAdvertising.cpp:357
void setMaxInterval(uint16_t maxInterval)
Set the maximum advertising interval.
Definition NimBLEAdvertising.cpp:138
bool setPreferredParams(uint16_t minInterval, uint16_t maxInterval)
Set the preferred min and max connection intervals to advertise.
Definition NimBLEAdvertising.cpp:484
bool setURI(const std::string &uri)
Set the advertised URI.
Definition NimBLEAdvertising.cpp:571
void setScanFilter(bool scanRequestWhitelistOnly, bool connectWhitelistOnly)
Set the filtering for the scan filter.
Definition NimBLEAdvertising.cpp:157
bool setAdvertisementData(const NimBLEAdvertisementData &advertisementData)
Set the advertisement data that is to be broadcast in a regular advertisement.
Definition NimBLEAdvertising.cpp:329
bool removeServiceUUID(const NimBLEUUID &serviceUUID)
Remove a service UUID from the advertisement.
Definition NimBLEAdvertising.cpp:433
NimBLEAdvertising()
Construct a default advertising object.
Definition NimBLEAdvertising.cpp:36
bool isAdvertising()
Check if currently advertising.
Definition NimBLEAdvertising.cpp:269
bool setManufacturerData(const uint8_t *data, size_t length)
Set the advertised manufacturer data.
Definition NimBLEAdvertising.cpp:537
bool removeServices()
Remove all service UUIDs from the advertisement.
Definition NimBLEAdvertising.cpp:453
bool refreshAdvertisingData()
Refresh advertsing data dynamically without stop/start cycle. For instance allows refreshing manufact...
Definition NimBLEAdvertising.cpp:394
const NimBLEAdvertisementData & getScanData()
Get the current scan response data.
Definition NimBLEAdvertising.cpp:373
bool setConnectableMode(uint8_t mode)
Set the type of connectable mode to advertise.
Definition NimBLEAdvertising.cpp:75
void clearData()
Clear the advertisement and scan response data and set the flags to BLE_HS_ADV_F_DISC_GEN.
Definition NimBLEAdvertising.cpp:380
A model of a BLE Device from which all the BLE roles are created.
Definition NimBLEDevice.h:122
The model of a BLE server.
Definition NimBLEServer.h:62
A model of a BLE UUID.
Definition NimBLEUUID.h:41