esp-nimble-cpp 2.3.1
|
All notable changes to this project will be documented in this file.
NimBLEClient::readValue
call not returning when the instance was created with aNimBLEServer
and reading a secured characteristic.NimBLEScan
destructor potentially causing a crash.NimBLEBeacon::BeaconData
std::vector<uint8_t>
operator to allow it to be used as a parameter to NimBLEAdvertisementData::setManufacturerData
.NimBLECharacteristic::onSubscribe
value when indications are set.NimBLECharacteristic::onRead
callback not called in some cases.NimBLEClient::connect
overload with NimBLEAdvertisedDevice
parameter to resolve connection error due to NULL address.NimBLEClient::DiscoverAttributes
.NimBLEDeviceCallbacks
class with a callback for handling bond storage.NimBLEDevice::setPower
and NimBLEDevice::getPower
now take an additional parameter NimBLETxPowerType
to set/get the power level for different operations.CONFIG_NIMBLE_CPP_ADDR_FMT_EXCLUDE_DELIMITER
, if defined will remove the ":" delimiter from the BLE address string.CONFIG_NIMBLE_CPP_ADDR_FMT_UPPERCASE
if defined will make the BLE address strings uppercase.NimBLEScan
that can cause a crash due to heap corruption if NimBLEScan::stop
is called from the onResult
callback.NimBLECharacteristic
/NimBLEDescriptor
not able to update their values in the onRead
callback.NimBLEHIDDevice
now allows for the same report ID in multiple input/output/feature reports.NimBLEHIDDevice
can now create more than one in/out/feature report map.NimBLEHIDDevice::getOutputReport
will now return the correct characteristic.NimBLEServer
has no member named m_pClient
.NimBLEConnInfo
and NimBLEUtils
to NimBLEDevice.h
.NimBLEConnInfo
, the ble_gap_conn_desc
has also been replace with NimBLEConnInfo
in the functions that received it.NimBLEDevice
Ignore list functions removed.NimBLEDevice::startSecurity
now returns a bool
, true on success, instead of an int to be consistent with the rest of the library.NimBLEDevice::getInitialized
renamed to NimBLEDevice::isInitialized
.NimBLEDevice::setPower
no longer takes the esp_power_level_t
and esp_ble_power_type_t
, instead only an integer value in dbm units is accepted.NimBLEDevice::setOwnAddrType
no longer takes a bool nrpa
parameter.NimBLEDevice::getClientListSize
replaced with NimBLEDevice::getCreatedClientCount
.NimBLEDevice::getClientList
was removed.NimBLEServer::disconnect
now returns bool
, true = success, instead of int
to be consistent with the rest of the library.NimBLEServerCallbacks::onMTUChanged
renamed to NimBLEServerCallbacks::onMTUChange
to be consistent with the client callback.NimBLEServer::getPeerIDInfo
renamed to NimBLEServer::getPeerInfoByHandle
to better describe it's use.NimBLEServerCallbacks::onPassKeyRequest
has been replaced with NimBLEServer::onPassKeyDisplay
which should display the pairing pin that the client is expected to send.NimBLEServerCallbacks::onAuthenticationComplete
now takes a NimBLEConnInfo&
parameter.NimBLEClient::getServices
now returns a const reference to std::vector<NimBLERemoteService*> instead of a pointer to the internal vector.NimBLEClient::getConnId
has been renamed to getConnHandle
to be consistent with bluetooth terminology.NimBLEClient::disconnect
now returns a bool
, true on success, instead of an int to be consistent with the rest of the library.NimBLEClientCallbacks::onDisconnect
now takes an additional int reason
parameter to let the application know why the disconnect occurred.NimBLEClientCallbacks::onPassKeyRequest
has been changed to NimBLEClientCallbacks::onPassKeyEntry
which takes a NimBLEConnInfo&
parameter and does not return a value. Instead or returning a value this callback should prompt a user to enter a pin number which is sent later via NimBLEDevice::injectPassKey
.NimBLEClientCallbacks::onConfirmPIN
renamed to NimBLEClientCallbacks::onConfirmPasskey
and no longer returns a value and now takes a NimBLEConnInfo&
parameter. This should be used to prompt a user to confirm the pin on the display (YES/NO) after which the response should be sent with NimBLEDevice::injectConfirmPasskey
.NimBLEAdvertising::setMinPreferred
and NimBLEAdvertising::setMaxPreferred
have been removed, use NimBLEAdvertising::setPreferredParams
instead.NimBLEAdvertising::setAdvertisementType
has been renamed to NimBLEAdvertising::setConnectableMode
to better reflect it's function.NimBLEAdvertising::setScanResponse
has been renamed to NimBLEAdvertising::enableScanResponse
to better reflect it's function.NimBLEAdvertising
; Scan response is no longer enabled by default.NimBLEAdvertising::start
No longer takes a callback pointer parameter, instead the new method NimBLEAdvertising::setAdvertisingCompleteCallback
should be used.NimBLEAdvertisementData::addData
now takes either a std::vector<uint8_t>
or uint8_t* + length
instead of std::string
or char + length
.NimBLEAdvertisementData::getPayload
now returns std::vector<uint8_t>
instead of std::string
.NimBLEScan::start
has been removed and the blocking overload of NimBLEScan::start
has been replaced by an overload of NimBLEScan::getResults
with the same parameters.NimBLEAdvertisedDeviceCallbacks
Has been replaced by NimBLEScanCallbacks
which contains the following methods: onResult
, onScanEnd
, and onDiscovered
-
NimBLEScanCallbacks::onResult, functions the same as the old
NimBLEAdvertisedDeviceCallbacks::onResultbut now takes aa
const NimBLEAdvertisedDevice*instead of non-const.
-
NimBLEScanCallbacks::onScanEnd, replaces the scanEnded callback passed to
NimBLEScan::startand now takes a
const NimBLEScanResults&and
int reasonparameter.
-
NimBLEScanCallbacks::onDiscovered, This is called immediately when a device is first scanned, before any scan response data is available and takes a
const NimBLEAdvertisedDevice*parameter. -
NimBLEScan::stopwill no longer call the
onScanEndcallback as the caller should know its been stopped when this is called. -
NimBLEScan::clearDuplicateCachehas been removed as it was problematic and only for the esp32. Stop and start the scanner for the same effect. -
NimBLEScanResults::getDevicemethods now return
const NimBLEAdvertisedDevice*. -
NimBLEScanResultsiterators are now
const_iterator. -
NimBLEAdvertisedDevice::hasRSSIremoved as redundant, RSSI is always available. -
NimBLEAdvertisedDevice::getPayloadnow returns
const std::vector<uint8_t>instead of a pointer to internal memory. -
NimBLEAdvertisedDeviceTimestamp removed, if needed then the app should track the time from the callback. -
NimBLECharacteristic::notifyno longer takes a
bool is_notificationparameter, instead
indicate()should be called to send indications. -
NimBLECharacteristicCallbacks::onNotifyremoved as unnecessary, the library does not call notify without app input. -
NimBLECharacteristicCallbacks::onStatusNo longer takes a
statusparameter, refer to the return code for success/failure. -
NimBLERemoteCharacteristic::getRemoteServicenow returns a
const NimBLERemoteService*instead of non-const. -
NimBLERemoteCharacteristic::readUInt32Has been removed. -
NimBLERemoteCharacteristic::readUInt16Has been removed. -
NimBLERemoteCharacteristic::readUInt8Has been removed. -
NimBLERemoteCharacteristic::readFloatHas been removed. -
NimBLERemoteCharacteristic::registerForNotifyHas been removed. -
NimBLERemoteService::getCharacteristicsnow returns a
const std::vector<NimBLERemoteCharacteristic*>&instead of non-const
std::vector<NimBLERemoteCharacteristic*>*. -
NimBLERemoteService::getValuenow returns
NimBLEAttValueinstead of
std::string. -
NimBLEService::getCharacteristicsnow returns a
const std::vector<NimBLECharacteristic*>&instead of std::vector<NimBLECharacteristic *>. -
NimBLEUUID::getNativemethod replaced with
NimBLEUUID::getBasewhich returns a read-only pointer to the underlying
ble_uuid_tstruct. -
NimBLEUUID;
msbFirstparameter has been removed from constructor, caller should reverse the data first or call the new
reverseByteOrdermethod after. -
NimBLEAddressconstructor; default value for the
typeparameter removed, caller should know the address type and specify it. -
NimBLEAddress::getNativereplaced with
NimBLEAddress::getBaseand now returns a pointer to
const ble_addr_tinstead of a pointer to the address value. -
NimBLEAddress::equalsmethod and
NimBLEAddress::== operatorwill now also test if the address types are the same. -
NimBLEUtils::dumpGapEventfunction removed. -
NimBLEUtils::buildHexDatareplaced with
NimBLEUtils::dataToHexString, which returns a
std::stringcontaining the hex string. -
NimBLEEddystoneTLM::setTempnow takes an
int16_tparameter instead of float to be friendly to devices without floating point support. -
NimBLEEddystoneTLM::getTempnow returns
int16_tto work with devices that don't have floating point support. -
NimBLEEddystoneTLM::setDatanow takes a reference to *
NimBLEEddystoneTLM::BeaconDatainstead of
std::string. -
NimBLEEddystoneTLM::getDatanow returns a reference to *
NimBLEEddystoneTLM::BeaconDatainstead of
std::string. -
NimBLEBeacon::setDatanow takes
const NimBLEBeacon::BeaconData&instead of
std::string. -
NimBLEBeacon::getDatanow returns
const NimBLEBeacon::BeaconData&instead of
std::string. -
NimBLEHIDDevice::reportMaprenamed to
NimBLEHIDDevice::getReportMap. -
NimBLEHIDDevice::hidControlrenamed to
NimBLEHIDDevice::getHidControl. -
NimBLEHIDDevice::inputReportrenamed to
NimBLEHIDDevice::getInputReport. -
NimBLEHIDDevice::outputReportrenamed to
NimBLEHIDDevice::getOutputReport. -
NimBLEHIDDevice::featureReportrenamed to
NimBLEHIDDevice::getFeatureReport. -
NimBLEHIDDevice::protocolModerenamed to
NimBLEHIDDevice::getProtocolMode. -
NimBLEHIDDevice::bootOutputrenamed to
NimBLEHIDDevice::getBootOutput. -
NimBLEHIDDevice::pnprenamed to
NimBLEHIDDevice::setPnp. -
NimBLEHIDDevice::hidInforenamed to
NimBLEHIDDevice::setHidInfo. -
NimBLEHIDDevice::deviceInforenamed to
NimBLEHIDDevice::getDeviceInfoService. -
NimBLEHIDDevice::hidServicerenamed to
NimBLEHIDDevice::getHidService. -
NimBLEHIDDevice::batteryServicerenamed to
NimBLEHIDDevice::getBatteryService`.NimBLEDevice::getPower
and NimBLEDevice::getPowerLevel
bug worked around for the esp32s3 and esp32c3.NimBLEDevice::setPower
and NimBLEDevice::getPower
now support the full power range for all esp devices.NimBLEDevice::setOwnAddrType
will now correctly apply the provided address type for all devices.NimBLEDevice::getPower
(esp32) return value is now calculated to support devices with different min/max ranges.NimBLEDevice::deinit
is called when the stack has not been initialized.NimBLEServer
service changed notifications will now wait until the changes have taken effect and the server re-started before indicating the change to peers, reducing difficultly for some clients to update their data.NimBLEService::getHandle
will now fetch the handle from the stack if not valid to avoid returning an invalid value.std::vector
input to set/write values template.NimBLEHIDDevice::pnp
will now set the data correctly.NimBLEClient::secureConnection
now takes an additional parameter bool async
, if true, will send the secure command and return immediately with a true value for successfully sending the command, else false. This allows for asynchronously securing a connection.onDisconnect
callback is now supported.NimBLEClient::connect
will no longer cancel already in progress connections.NimBLEClient::setDataLen
now returns bool, true if successful.NimBLEClient::updateConnParams
now returns bool, true if successful.NimBLEClient::setPeerAddress
now returns a bool, true on success.NimBLEDevice::startSecurity
now takes and additional parameter int* rcPtr
which will provide the return code from the stack if provided.NimBLEDevice::deleteClient
no longer blocks tasks.NimBLEDevice::getAddress
will now return the address currently in use.NimBLEDevice::init
now returns a bool with true
indicating success.NimBLEDevice::deinit
now returns a bool with true
indicating success.NimBLEDevice::setDeviceName
now returns a bool with true
indicating success.NimBLEDevice::setCustomGapHandler
now returns a bool with true
indicating success.NimBLEDevice::setOwnAddrType
now returns a bool with true
indicating success and works with non-esp32 devices.NimBLEDevice::setPower
now returns a bool value, true = success.NimBLEDevice::setMTU
now returns a bool value, true = success.NimBLEDevice::deleteAllBonds
now returns true on success, otherwise false.NimBLEEddystoneTLM
internal data struct type BeaconData
is now public and usable by the application.NimBLEBeacon
internal data struct type BeaconData
is now public and can be used by the application.NimBLEServer
and NimBLECharacteristic
and instead uses the functions and tracking in the host stack.NimBLECharacteristic::indicate
now takes the same parameters as notify
.NimBLECharacteristic::notify
and NimBLECharacteristic::indicate
now return a bool
, true = success.connHandle
parameter to NimBLECharacteristic::notify
to allow for sending notifications to specific clients.NimBLEServer
Now uses a std::array to store client connection handles instead of std::vector to reduce memory allocation.NimBLEExtAdvertisement
: All functions that set data now return bool
, true = success.NimBLEAdvertising
Advertising data is now stored in instances of NimBLEAdvertisingData
and old vectors removed.NimBLEAdvertising::setAdvertisementData
and NimBLEAdvertising::setScanResponseData
now return bool
, true = success.NimBLEAddress
parameter to NimBLEAdvertising::start
to allow for directed advertising to a peer.NimBLEAdvertising
functions that change data values now return bool
, true = success.NimBLEAdvertisementData
functions that change data values now return bool
, true = success.NimBLEAdvertising
advertising complete callback is now defined as std::function to allow for using std::bind for callback functions.NimBLEAdvertisementData::setName
now takes an optional bool
parameter to indicate if the name is complete or incomplete, default = complete.NimBLEAdvertisementData
moved to it's own .h and .cpp files.NimBLEScan::start
takes a new bool restart
parameter, default true
, that will restart an already in progress scan and clear the duplicate filter so all devices will be discovered again.NimBLEScan::start
will no longer clear cache or results if scanning is already in progress.NimBLEScan::start
will now allow the start command to be sent with updated parameters if already scanning.NimBLEScan::clearResults
will now reset the vector capacity to 0.NimBLEScanCallbacks::onScanEnd
.index
parameter to NimBLEAdvertisedDevice::getPayloadByType
NimBLEAdvertisedDevice::getManufacturerData
now takes an optional index parameter for use in the case of multiple manufacturer data fields.NimBLEUtils
: Add missing GAP event strings.NimBLEUtils
: Add missing return code strings.NimBLEUtils
: Event/error code strings optimized.NimBLEAttValue
cleanup and optimization.NimBLEDevice::setPowerLevel
and NimBLEDevice::getPowerLevel
which take and return the related esp_power_level*
types.NimBLEDevice::setDefaultPhy
which will set the default preferred PHY for all connections.NimBLEDevice::getConnectedClients
, which returns a vector of pointers to the currently connected client instances.NimBLEDevice::setOwnAddr
function added, which takes a uint8_t*
or NimBLEAddress&
and will set the mac address of the device, returns bool
true= success.NimBLEDevice::injectPassKey
Used to send the pairing passkey instead of a return value from the client callback.NimBLEDevice::injectConfirmPasskey
Used to send the numeric comparison pairing passkey confirmation instead of a return value from the client callback.NimBLEDevice::setDeviceName
to change the device name after initialization.NimBLECharacteristic::create2904
which will specifically create a Characteristic Presentation Format (0x2904) descriptor.NimBLEAdvertising::refreshAdvertisingData
refreshes the advertisement data while still actively advertising.NimBLEClient::updatePhy
to request a PHY change with a peer.NimBLEClient::getPhy
to read the current connection PHY setting.Config
struct to NimBLEClient
to efficiently set single bit config settings.NimBLEClient::setSelfDelete
that takes the bool parameters deleteOnDisconnect
and deleteOnConnectFail
, which will configure the client to delete itself when disconnected or the connection attempt fails.NimBLEClient::setConfig
and NimBLEClient::getConfig
which takes or returns a NimBLEClient::Config
object respectively.NimBLEClient::cancelConnect()
to cancel an in-progress connection, returns bool
, true = success.NimBLEClient::connect
option added via 2 new bool
parameters added to the function:asyncConnect
; if true, will send the connect command and return immediately.exchangeMTU
; if true will send the exchange MTU command upon connection.NimBLEClientCallbacks::onConnectFail
callback that is called when the connection attempt fail while connecting asynchronously.NimBLEClientCallbacks::onMTUChange
callback which will be called when the MTU exchange completes and takes a NimBLEClient*
and uint16_t MTU
parameter.NimBLEClientCallbacks::onPhyUpdate
and -NimBLEServerCallbacks::onPhyUpdate
Which are called when the PHY update is complete.NimBLEServer::updatePhy
to request a PHY change with a peer.NimBLEServer::getPhy
to read the PHY of a peer connection.NimBLEServer::getClient
which will create a client instance from the provided peer connHandle or connInfo to facilitate reading/write from the connected client.NimBLEServerCallbacks::onConnParamsUpdate
callback.NimBLEScan::erase
overload that takes a const NimBLEAdvertisedDevice*
parameter.NimBLEScan::setScanPhy
to enable/disable the PHY's to scan on (extended advertising only).NimBLEScan::setScanPeriod
which will allow for setting a scan restart timer in the controller (extended advertising only).NimBLEAdvertisedDevice::isScannable()
that returns true if the device is scannable.NimBLEAdvertisedDevice::begin
and NimBLEAdvertisedDevice::end
read-only iterators for convenience and use in range loops.NimBLEAdvertisedDevice::getAdvFlags
returns the advertisement flags of the advertiser.NimBLEAdvertisedDevice::getPayloadByType
Generic use function that returns the data from the advertisement with the specified type.NimBLEAdvertisedDevice::haveType
Generic use function that returns true if the advertisement data contains a field with the specified type.NimBLEExtAdvertisement::removeData
, which will remove the data of the specified type from the advertisement.NimBLEExtAdvertisement::addServiceUUID
, which will append to the service uuids advertised.NimBLEExtAdvertisement::removeServiceUUID
, which will remove the service from the uuids advertised.NimBLEExtAdvertisement::removeServices
, which will remove all service uuids advertised.NimBLEExtAdvertisement::setServiceData
with the parameters const NimBLEUUID& uuid, const uint8_t* data, size_t length
and const NimBLEUUID& uuid, const std::vector<uint8_t>& data
.NimBLEExtAdvertisement::getDataLocation
, which returns the location in the advertisement data of the type requested in parameter uint8_t type
.NimBLEExtAdvertisement::toString
which returns a hex string representation of the advertisement data.NimBLEAdvertising::getAdvertisementData
, which returns a reference to the currently set advertisement data.NimBLEAdvertising::getScanData
, which returns a reference to the currently set scan response data.NimBLEAdvertising::removeServiceUUID
and NimBLEAdvertisementData::removeServiceUUID
to accept a const char*
NimBLEAdvertising::clearData
, which will clear the advertisement and scan response data.NimBLEAdvertising::setManufacturerData
Overload that takes a const uint8_t*
and , size_tparameter. -
NimBLEAdvertising::setServiceDataOverload that takes
const NimBLEUUID& uuid,
const uint8_t* data,
size_t lengthas parameters. -
NimBLEAdvertising::setServiceDataOverload that takes
const NimBLEUUID& uuid,
const std::vector<uint8_t>&as parameters. -
NimBLEAdvertising::setDiscoverableModeto allow applications to control the discoverability of the advertiser. -
NimBLEAdvertising::setAdvertisingCompleteCallbacksets the callback to call when advertising ends. -
NimBLEAdvertising::setPreferredParamsthat takes the min and max preferred connection parameters as an alternative for
setMinPreferredand
setMaxPreferred. -
NimBLEAdvertising::setAdvertisingIntervalSets the advertisement interval for min and max to the same value instead of calling
setMinIntervaland
setMaxIntervalseparately if there is not value difference. -
NimBLEAdvertisementData::removeData, which takes a parameter
uint8_t type, the data type to remove. -
NimBLEAdvertisementData::toString, which will print the data in hex. -
NimBLEUtils::taskWaitwhich causes the calling task to wait for an event. -
NimBLEUtils::taskReleasereleases the task from and event. -
NimBLEUtils::generateAddrfunction added with will generate a random address and takes a
boolparameter, true = create non-resolvable private address, otherwise a random static address is created, returns
NimBLEAddress. -
NimBLEUUID::getValuewhich returns a read-only
uint8_tpointer to the UUID value. -
NimBLEUUID::reverseByteOrder, this will reverse the bytes of the UUID, which can be useful for advertising/logging. -
NimBLEUUIDconstructor overload that takes a reference to
ble_uuid_any_t. -
NimBLEAddress::isNrpamethod to test if an address is random non-resolvable. -
NimBLEAddress::isStaticmethod to test if an address is random static. -
NimBLEAddress::isPublicmethod to test if an address is a public address. -
NimBLEAddress::isNullmethods to test if an address is NULL. -
NimBLEAddress::getValuemethod which returns a read-only pointer to the address value. -
NimBLEAddress::reverseByteOrdermethod which will reverse the byte order of the address value. -
NimBLEHIDDevice::batteryLevelreturns the HID device battery level characteristic. -
NimBLEBeacon::setDataoverload that takes
uint8_t* dataand
uint8_t length. -
NimBLEHIDDevice::getPnpfunction added to access the pnp characteristic. -
NimBLEHIDDevice::getHidInfo` function added to access the hid info characteristic.NimBLEClient::discoverAttributes
now returns a bool value to indicate success/failure.NimBLEServerCallbacks::onMTUChange
to onMtuChanged
in order to support porting code from original library.NimBLEAttValue
Class added to reduce and control RAM footprint of characteristic/descriptor values and support conversions from Arduino Strings and many other data types.NimBLEClient::getLastError
: Gets the error code of the last function call that produces a return code from the stack.NimBLECharacteristic::notify
: Overload method to send notifications/indications with custom values.onMtuChanged
.NimBLEClient::setDataLen
and NimBLEServer::setDataLen
: Data length extension support (IDF version >= 4.3.2 only)portMUX_TYPE
variable in the class definitions.NimBLEService
and changed the constructor no no longer accept numHandles
and inst_id
parameters.btInUse
.NimBLECharacteristic::removeDescriptor
: Dynamically remove a descriptor from a characteristic. Takes effect after all connections are closed and sends a service changed indication.NimBLEService::removeCharacteristic
: Dynamically remove a characteristic from a service. Takes effect after all connections are closed and sends a service changed indicationNimBLEServerCallbacks::onMTUChange
: This is callback is called when the MTU is updated after connection with a client.NimBLEDevice::whiteListAdd
: Add a device to the whitelist.NimBLEDevice::whiteListRemove
: Remove a device from the whitelist.NimBLEDevice::onWhiteList
: Check if the device is on the whitelist.NimBLEDevice::getWhiteListCount
: Gets the size of the whitelistNimBLEDevice::getWhiteListAddress
: Get the address of a device on the whitelist by index value.NimBLEDevice::getNumBonds
: Gets the number of bonds stored.NimBLEDevice::isBonded
: Checks if the device is bonded.NimBLEDevice::deleteAllBonds
: Deletes all bonds.NimBLEDevice::getBondedAddress
: Gets the address of a bonded device by the index value.NimBLECharacteristic::getCallbacks
to retrieve the current callback handler.NimBLEConnInfo
.NimBLEScan::clearDuplicateCache
: This can be used to reset the cache of advertised devices so they will be immediately discovered again.NimBLECharacteristicCallbacks::onSubscribe
Is now called after the connection is added to the vector.NimBLECharacteristic::getDescriptorByHandle
: Return the BLE Descriptor for the given handle.NimBLEDescriptor::getStringValue
: Get the value of this descriptor as a string.NimBLEServer::getServiceByHandle
: Get a service by its handle.NimBLEService::getCharacteristicByHandle
: Get a pointer to the characteristic object with the specified handle.NimBLEService::getCharacteristics
: Get the vector containing pointers to each characteristic associated with this service. Overloads to get a vector containing pointers to all the characteristics in a service with the UUID. (supports multiple same UUID's in a service)NimBLEService::getCharacteristics(const char *uuid)
NimBLEService::getCharacteristics(const NimBLEUUID &uuid)
NimBLEAdvertisementData
New methods:NimBLEAdvertisementData::addTxPower
: Adds transmission power to the advertisement.NimBLEAdvertisementData::setPreferredParams
: Adds connection parameters to the advertisement.NimBLEAdvertisementData::setURI
: Adds URI data to the advertisement.NimBLEAdvertising
New methods:NimBLEAdvertising::setName
: Set the name advertised.NimBLEAdvertising::setManufacturerData
: Adds manufacturer data to the advertisement.NimBLEAdvertising::setURI
: Adds URI data to the advertisement.NimBLEAdvertising::setServiceData
: Adds service data to the advertisement.NimBLEAdvertising::addTxPower
: Adds transmission power to the advertisement.NimBLEAdvertising::reset
: Stops the current advertising and resets the advertising data to the default values.NimBLEDevice::setScanFilterMode
: Set the controller duplicate filter mode for filtering scanned devices.NimBLEDevice::setScanDuplicateCacheSize
: Sets the number of advertisements filtered before the cache is reset.NimBLEScan::setMaxResults
: This allows for setting a maximum number of advertised devices stored in the results vector.NimBLEAdvertisedDevice
New data retrieval methods added:haveAdvInterval/getAdvInterval
: checks if the interval is advertised / gets the advertisement interval value.haveConnParams/getMinInterval/getMaxInterval
: checks if the parameters are advertised / get min value / get max value.haveURI/getURI
: checks if a URI is advertised / gets the URI data.haveTargetAddress/getTargetAddressCount/getTargetAddress(index)
: checks if a target address is present / gets a count of the addresses targeted / gets the address of the target at index.nimconfig.h
(Arduino) is now easier to use.NimBLEServer::getServiceByUUID
Now takes an extra parameter of instanceID to support multiple services with the same UUID.NimBLEService::getCharacteristic
Now takes an extra parameter of instanceID to support multiple characteristics with the same UUID.NimBLEAdvertising
Transmission power is no longer advertised by default and can be added to the advertisement by calling NimBLEAdvertising::addTxPower
NimBLEAdvertising
Custom scan response data can now be used without custom advertisement.NimBLEScan
Now uses the controller duplicate filter.NimBLEAdvertisedDevice
Has been refactored to store the complete advertisement payload and no longer parses the data from each advertisement. Instead the data will be parsed on-demand when the user application asks for specific data.NimBLEHIDDevice
Characteristics now use encryption, this resolves an issue with communicating with devices requiring encryption for HID devices.NimBLEDevice::setOwnAddrType
added to enable the use of random and random-resolvable addresses, by asukiaaaNimBLEAdvertising::SetMinPreferred
and NimBLEAdvertising::SetMinPreferred
re-added.nimconfig.h
to support custom configuration in platformio.NimBLEClient::setValue
Now takes an extra bool parameter response
to enable the use of write with response (default = false).NimBLEClient::getCharacteristic(uint16_t handle)
Enabling the use of the characteristic handle to be used to find the NimBLERemoteCharacteristic object.NimBLEHIDDevice
class added by wakwak-koba.NimBLEServerCallbacks::onDisconnect
overloaded callback added to provide a ble_gap_conn_desc parameter for the application to obtain information about the disconnected client.nimconfig.h
for command line defined macros to support platformio config settings.NimBLEAdvertising::start
now returns a bool value to indicate success/failure.NimBLEAdvertising::start
and replaced with better return code handling and logging.NimBLERemoteCharacteristic::subscribe
and NimBLERemoteCharacteristic::registerForNotify
will now set the callback regardless of the existence of the CCCD and return true unless the descriptor write operation failed.NimBLEScan
When the scan ends the scan stopped flag is now set before calling the scan complete callback (if used) this allows the starting of a new scan from the callback function.NimBLEClient::connect
would hang on the task block if no event arrived to unblock. A time limit has been added to timeout appropriately.FreeRTOS
compile errors resolved in latest Arduino core and IDF v3.3.time()
called inside critical sections caused sporadic crashes, these have been moved out of critical regions.NimBLEAdvertising::start
Now takes 2 optional parameters, the first is the duration to advertise for (in seconds), the second is a callback that is invoked when advertising ends and takes a pointer to a NimBLEAdvertising
object (similar to the NimBLEScan::start
API).CONFIG_BT_NIMBLE_MAX_CONNECTIONS
in nimconfig.h
. Any changes to the controller max connection settings in sdkconfig.h
will now have no effect when using this library.NimBLEAddress
constructor: NimBLEAddress()
produces an address of 00:00:00:00:00:00 type 0.First stable release.
All the original library functionality is complete and many extras added with full documentation.