h2zero
cee369fd92
Cleanup ARM-gcc compiler warnings.
2022-02-14 21:09:23 -07:00
h2zero
bbed8d1d4b
Release v1.3.2
2022-01-15 09:07:08 -07:00
h2zero
099e7cc326
Remove travis docs build.
2022-01-15 08:57:40 -07:00
h2zero
830c4cc39e
Re-enable data length extension newer IDF versions.
2022-01-15 08:51:49 -07:00
Jackson Ming Hu
ea6e2101e3
Fix compilation on ESP32-S3
2022-01-14 21:46:30 -07:00
h2zero
d47cf59ba9
Cleanup compile errors in arm-gcc.
2022-01-14 20:45:24 -07:00
h2zero
ea02eb9452
Add config option for log verbosity.
2022-01-14 19:47:44 -07:00
h2zero
798726c05d
Update change log.
2022-01-14 10:32:47 -07:00
h2zero
9824bdfe73
Update log level macro name
2022-01-14 10:02:47 -07:00
h2zero
fac16f2428
Fix long data notifications.
...
The notification data when received was using an incorrect length value and would cut off long values, this has now been corrected.
2022-01-13 08:57:50 -07:00
h2zero
0957d7f6ad
The latest versions of IDF include a new esp_timer library that seems to be incrementing the task notification values in unexpected places depending on other tasks in operation.
...
This causes task blocking to fail in client operations leading to exceptions and crashing.
This is a workaround for this situation and will need to be reworked properly in the future.
2022-01-09 19:04:41 -07:00
David Lehrian
5facd89a00
Update NimBLEServer.h ( #65 )
2022-01-01 18:00:45 -07:00
h2zero
f2ade345f4
Fix missing data when reading large values.
...
The wrong length value was being used to set the values read from peer attributes.
This has been corrected to use the proper value size.
2021-12-29 14:01:37 -07:00
h2zero
7a82067177
Add last error function to client.
2021-12-29 08:12:38 -07:00
h2zero
d041a089e6
[NimBLEService] Remove unused variables/parameters.
2021-12-29 08:12:07 -07:00
h2zero
9debfcd226
Use NimBLE calls for critical sections
2021-12-29 08:10:57 -07:00
h2zero
8620092c90
Cleanup and add support for non-esp devices.
2021-12-29 08:08:25 -07:00
h2zero
96459073a4
Initialize advertising complete callback in NimBLEAdvertising constructor.
...
* cleanup advertising start return.
2021-12-29 07:51:57 -07:00
h2zero
a4403fe6b8
Clear client disconnect timer in constructor before initializing.
2021-12-29 07:50:42 -07:00
David Robertson
f841f030ae
Add method to send notifications/indications with custom values ( #63 )
2021-12-28 20:11:37 -07:00
h2zero
d793b1251e
Remove data length extension in IDF (not released yet)
2021-09-13 20:45:36 -06:00
Author: Mr-Mime
5925782a65
[Server][Client] Add function to set data length.
...
Enables the use of BLE data length extension to improve data transfer rates.
2021-09-12 19:11:38 -06:00
h2zero
ccea428b9e
Refactor include directives to use different paths for arduino/idf.
...
* Sets macros to allow compiling when Central role is enabled and Observer disabled, or Peripheral enabled and Broadcaster disabled.
* Adds a macro definition for CONFIG_NIMBLE_CPP_IDF to enable different include paths/functionality for IDF / Arduino.
2021-09-12 18:43:31 -06:00
h2zero
e238a18a80
Update Doxygen version
2021-08-04 18:58:12 -06:00
h2zero
7b40829e77
Release 1.3.1
2021-08-04 18:55:34 -06:00
h2zero
b24597ac56
Remove definition of btInUse().
...
This reverts a previous change @2e1d78ff that caused compiling/linking errors due to the redefinition of btInUse() when another linked library uses the Arduino bluetooth code.
2021-08-03 12:43:34 -06:00
h2zero
9961c5605c
Update docs version.
2021-08-02 21:25:17 -06:00
h2zero
d4e4074f5a
Release 1.3.0
2021-08-02 21:14:12 -06:00
h2zero
e5edc9d59e
Add missing return documentation in NimBLEAdvertising.
2021-08-02 19:51:04 -06:00
h2zero
2e1d78ff78
Code cleanup
2021-08-02 13:29:19 -06:00
h2zero
6be6a111d0
[Server] Implement remove Characteristics/Descriptors. ( #54 )
...
This allows for adding and removing of characteristics and descriptors after initial setup of the server.
When used it will send a service changed notification to all clients.
The changes will not take effect until all clients have disconnected and advertising restarted.
2021-07-30 20:56:52 -06:00
h2zero
0a2714c169
[Server] Add callback for MTU change. ( #55 )
...
onMTUChange callback added that is called when a connection MTU is updated.
2021-07-19 21:47:59 -06:00
h2zero
7d01fa595d
Fix compilation for ESP32C3. ( #53 )
2021-07-19 21:46:30 -06:00
h2zero
2decc0682a
Remove FreeRTOS from CmakeLists.
2021-07-14 10:30:41 -06:00
h2zero
6ff1a49dd5
Update documentation.
2021-07-12 13:33:56 -06:00
h2zero
09adf86036
Remove FreeRTOS files.
2021-07-12 10:25:32 -06:00
h2zero
d3a0f95aaf
Add whitelist API.
...
This adds the functions:
- bool NimBLEDevice::whiteListAdd(const NimBLEAddress & address);
- bool NimBLEDevice::whiteListRemove(const NimBLEAddress & address);
- bool NimBLEDevice::onWhiteList(const NimBLEAddress & address);
- size_t NimBLEDevice::getWhiteListCount();
- NimBLEAddress NimBLEDevice::getWhiteListAddress(size_t index);
2021-05-23 13:12:44 -06:00
h2zero
d9d794ae40
[Server] Add ability to create static attributes.
...
This allows creating instances of services/characteristics and decriptors without
needing to call the parent createX() methods. This allows creation of the attibutes
within a class or other structure and the attributes can be linked to the parent by
calling the parent addX() method.
Additonally this increases the backward compatibility with the original bluedroid library
to further support user migration.
2021-05-23 13:07:00 -06:00
boozer2
30d6c399b8
[Client] Fix for truncation of strings with null in writeValue std::string overload
2021-05-21 19:54:08 -06:00
Bascy
7815d89dbf
Call onSubscribe() after adding connection to subscribedVector
...
This allows for sending BLE messages in the onSubscribe() handler
2021-05-19 22:28:30 -06:00
Ketan Padegaonkar
9fa9531e50
Add method to get the callbacks from a characteristic.
...
This is useul to be able to unit/integration test the behavior of a
characteristic.
2021-05-19 22:23:40 -06:00
h2zero
946b971750
Properly find the remote characteristic end handle for descriptor discovery.
...
Previously we used the service end handle or, if available, the handle of the next characteristic in the service
as the end handle when retrieving the descriptors of a characteristic. This process would fail when connecting to some
devices if the characteristics were retrieved individually instead of all together. The cause of failure was requesting
a handle range that is out of characteristic scope which is also out of line with BLE
specifications.
The fix included in this is to set the end handles of the characteristics either after retrieving all the characteristics
in a service by using the next charactertistic definition handle or, if the characteristic was retrieved separately,
we retrieve the next characteristic just before retrieving the descriptors.
2021-05-17 14:37:03 -06:00
h2zero
b62358a520
Remove task notification for server indications.
...
This resolves an issue when sending an indication from a callback that can cause the server to hang.
2021-05-17 14:08:02 -06:00
h2zero
e45fb8616a
Cleanup logs.
2021-05-15 09:52:00 -06:00
h2zero
d38865e022
Remove some asserts.
2021-05-07 11:06:45 -06:00
h2zero
62d1f67d8b
Add connection info class and access methods to server and client.
...
This adds the ability to access information about the current connection.
A new class was created to wrap the struct ble_gap_conn_desc with methods to retrieve the connection information.
Example server use:
```
for(auto i=0; i<pServer->getConnectedCount();i++) {
NimBLEConnInfo connInfo = pServer->getPeerInfo(i);
printf("Connected client %d info:\n", i);
printf("Peer address: %s\n", connInfo.getAddress().toString().c_str());
printf("Peer ID address: %s\n", connInfo.getIdAddress().toString().c_str());
printf("Handle: %u\n", connInfo.getConnHandle());
printf("Interval: %u\n", connInfo.getConnInterval());
printf("Timeout: %u\n", connInfo.getConnTimeout());
printf("Latency: %u\n", connInfo.getConnLatency());
printf("MTU: %u\n", connInfo.getMTU());
printf("Master: %s\n", connInfo.isMaster()? "true":"false");
printf("Slave: %s\n", connInfo.isSlave()? "true":"false");
printf("Bonded: %s\n", connInfo.isBonded()? "true":"false");
printf("Authenticated: %s\n", connInfo.isAuthenticated()? "true":"false");
printf("Encrypted: %s\n", connInfo.isEncrypted()? "true":"false");
printf("Encryption Key Size: %u\n", connInfo.getSecKeySize());
}
```
Example client use:
```
if (pClient->isConnected()) {
NimBLEConnInfo connInfo = pClient->getConnInfo();
printf("Connection info:\n");
printf("Peer address: %s\n", connInfo.getAddress().toString().c_str());
printf("Peer ID address: %s\n", connInfo.getIdAddress().toString().c_str());
printf("Handle: %u\n", connInfo.getConnHandle());
printf("Interval: %u\n", connInfo.getConnInterval());
printf("Timeout: %u\n", connInfo.getConnTimeout());
printf("Latency: %u\n", connInfo.getConnLatency());
printf("MTU: %u\n", connInfo.getMTU());
printf("Master: %s\n", connInfo.isMaster()? "true":"false");
printf("Slave: %s\n", connInfo.isSlave()? "true":"false");
printf("Bonded: %s\n", connInfo.isBonded()? "true":"false");
printf("Authenticated: %s\n", connInfo.isAuthenticated()? "true":"false");
printf("Encrypted: %s\n", connInfo.isEncrypted()? "true":"false");
printf("Encryption Key Size: %u\n", connInfo.getSecKeySize());
}
```
2021-05-07 09:02:43 -06:00
h2zero
4f8342e275
Add bond management API.
...
* Adds these new methods to NimBLEDevice to manage bonded peers:
- NimBLEDevice::deleteBond(const NimBLEAddress &address);
- NimBLEDevice::getNumBonds();
- NimBLEDevice::isBonded(const NimBLEAddress &address);
- NimBLEDevice::deleteAllBonds();
- NimBLEDevice::getBondedAddress(int index);
2021-04-25 08:06:38 -06:00
h2zero
05080abad4
Add clear scan duplicate filter cache method + clear on start.
...
This allows for clearing the duplicate filter cache when required and will also clear it
automatically when starting a scan.
This is useful when unexpectedly disconnected from a device and attempting to reconnect.
Previously the scan filter would not report advertisements from a device if it was multi-connectable
and advertising while connected. The result was long delays until the device would be scanned again.
This resolves it by clearing the filter cache on each scan start/clearResults call
and adding a method to NimBLEScan for manually clearing the cache on demand.
2021-03-31 20:24:57 -06:00
h2zero
f5eab87a87
Fix missing data in long write to descriptor.
2021-03-31 17:43:19 -06:00
h2zero
3c33129600
Remove extra Kconfig and add cmakelists for IDF3
2021-03-28 15:06:27 -06:00