diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a8af038..46b6d5b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,7 +36,7 @@ jobs: container: espressif/idf:${{ matrix.idf_ver }} steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: path: components/esp-nimble-cpp - name: Build examples @@ -51,7 +51,7 @@ jobs: build_docs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Doxygen Action uses: mattnotmitt/doxygen-action@v1.9.1 with: diff --git a/examples/Advanced/NimBLE_Server/main/main.cpp b/examples/Advanced/NimBLE_Server/main/main.cpp index b8c4bb6..2253308 100644 --- a/examples/Advanced/NimBLE_Server/main/main.cpp +++ b/examples/Advanced/NimBLE_Server/main/main.cpp @@ -2,10 +2,10 @@ /** NimBLE_Server Demo: * * Demonstrates many of the available features of the NimBLE server library. - * + * * Created: on March 22 2020 * Author: H2zero - * + * */ #include "NimBLEDevice.h" #include "NimBLELog.h" @@ -17,15 +17,15 @@ extern "C" {void app_main(void);} static NimBLEServer* pServer; /** None of these are required as they will be handled by the library with defaults. ** - ** Remove as you see fit for your needs */ + ** Remove as you see fit for your needs */ class ServerCallbacks: public NimBLEServerCallbacks { void onConnect(NimBLEServer* pServer) { printf("Client connected\n"); NimBLEDevice::startAdvertising(); }; - /** Alternative onConnect() method to extract details of the connection. + /** Alternative onConnect() method to extract details of the connection. * See: src/ble_gap.h for the details of the ble_gap_conn_desc struct. - */ + */ void onConnect(NimBLEServer* pServer, ble_gap_conn_desc* desc) { printf("Client address: %s\n", NimBLEAddress(desc->peer_ota_addr).toString().c_str()); /** We can use the connection handle here to ask for different connection parameters. @@ -33,7 +33,7 @@ class ServerCallbacks: public NimBLEServerCallbacks { * latency, supervision timeout. * Units; Min/Max Intervals: 1.25 millisecond increments. * Latency: number of intervals allowed to skip. - * Timeout: 10 millisecond increments, try for 3x interval time for best results. + * Timeout: 10 millisecond increments, try for 3x interval time for best results. */ pServer->updateConnParams(desc->conn_handle, 24, 48, 0, 18); }; @@ -44,25 +44,25 @@ class ServerCallbacks: public NimBLEServerCallbacks { void onMTUChange(uint16_t MTU, ble_gap_conn_desc* desc) { printf("MTU updated: %u for connection ID: %u\n", MTU, desc->conn_handle); }; - + /********************* Security handled here ********************** ****** Note: these are the same return values as defaults ********/ uint32_t onPassKeyRequest(){ printf("Server Passkey Request\n"); - /** This should return a random 6 digit number for security + /** This should return a random 6 digit number for security * or make your own static passkey as done here. */ - return 123456; + return 123456; }; bool onConfirmPIN(uint32_t pass_key){ printf("The passkey YES/NO number: %d\n", pass_key); /** Return false if passkeys don't match. */ - return true; + return true; }; void onAuthenticationComplete(ble_gap_conn_desc* desc){ - /** Check that encryption was successful, if not we disconnect the client */ + /** Check that encryption was successful, if not we disconnect the client */ if(!desc->sec_state.encrypted) { /** NOTE: createServer returns the current server reference unless one is not already created */ NimBLEDevice::createServer()->disconnect(desc->conn_handle); @@ -76,17 +76,17 @@ class ServerCallbacks: public NimBLEServerCallbacks { /** Handler class for characteristic actions */ class CharacteristicCallbacks: public NimBLECharacteristicCallbacks { void onRead(NimBLECharacteristic* pCharacteristic){ - printf("%s : onRead(), value: %s\n", + printf("%s : onRead(), value: %s\n", pCharacteristic->getUUID().toString().c_str(), pCharacteristic->getValue().c_str()); }; void onWrite(NimBLECharacteristic* pCharacteristic) { - printf("%s : onWrite(), value: %s\n", + printf("%s : onWrite(), value: %s\n", pCharacteristic->getUUID().toString().c_str(), pCharacteristic->getValue().c_str()); }; - /** Called before notification or indication is sent, + /** Called before notification or indication is sent, * the value can be changed here before sending if desired. */ void onNotify(NimBLECharacteristic* pCharacteristic) { @@ -104,11 +104,11 @@ class CharacteristicCallbacks: public NimBLECharacteristicCallbacks { NimBLEUtils::returnCodeToString(code)); }; }; - -/** Handler class for descriptor actions */ + +/** Handler class for descriptor actions */ class DescriptorCallbacks : public NimBLEDescriptorCallbacks { void onWrite(NimBLEDescriptor* pDescriptor) { - std::string dscVal((char*)pDescriptor->getValue(), pDescriptor->getLength()); + std::string dscVal = pDescriptor->getValue(); printf("Descriptor witten value: %s\n", dscVal.c_str()); }; @@ -118,7 +118,7 @@ class DescriptorCallbacks : public NimBLEDescriptorCallbacks { }; -/** Define callback instances globally to use for multiple Charateristics \ Descriptors */ +/** Define callback instances globally to use for multiple Charateristics \ Descriptors */ static DescriptorCallbacks dscCallbacks; static CharacteristicCallbacks chrCallbacks; @@ -135,7 +135,7 @@ void notifyTask(void * parameter){ } vTaskDelay(2000/portTICK_PERIOD_MS); } - + vTaskDelete(NULL); } @@ -155,10 +155,10 @@ void app_main(void) { /** 2 different ways to set security - both calls achieve the same result. * no bonding, no man in the middle protection, secure connections. - * - * These are the default values, only shown here for demonstration. - */ - //NimBLEDevice::setSecurityAuth(false, false, true); + * + * These are the default values, only shown here for demonstration. + */ + //NimBLEDevice::setSecurityAuth(false, false, true); NimBLEDevice::setSecurityAuth(/*BLE_SM_PAIR_AUTHREQ_BOND | BLE_SM_PAIR_AUTHREQ_MITM |*/ BLE_SM_PAIR_AUTHREQ_SC); pServer = NimBLEDevice::createServer(); @@ -173,7 +173,7 @@ void app_main(void) { NIMBLE_PROPERTY::READ_ENC | // only allow reading if paired / encrypted NIMBLE_PROPERTY::WRITE_ENC // only allow writing if paired / encrypted ); - + pBeefCharacteristic->setValue("Burger"); pBeefCharacteristic->setCallbacks(&chrCallbacks); @@ -182,10 +182,10 @@ void app_main(void) { * and sizes. However we must cast the returned reference to the correct type as the method * only returns a pointer to the base NimBLEDescriptor class. */ - NimBLE2904* pBeef2904 = (NimBLE2904*)pBeefCharacteristic->createDescriptor("2904"); + NimBLE2904* pBeef2904 = (NimBLE2904*)pBeefCharacteristic->createDescriptor("2904"); pBeef2904->setFormat(NimBLE2904::FORMAT_UTF8); pBeef2904->setCallbacks(&dscCallbacks); - + NimBLEService* pBaadService = pServer->createService("BAAD"); NimBLECharacteristic* pFoodCharacteristic = pBaadService->createCharacteristic( @@ -201,7 +201,7 @@ void app_main(void) { /** Custom descriptor: Arguments are UUID, Properties, max length in bytes of the value */ NimBLEDescriptor* pC01Ddsc = pFoodCharacteristic->createDescriptor( "C01D", - NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE| NIMBLE_PROPERTY::WRITE_ENC, // only allow writing if paired / encrypted 20 @@ -209,7 +209,7 @@ void app_main(void) { pC01Ddsc->setValue("Send it back!"); pC01Ddsc->setCallbacks(&dscCallbacks); - /** Start the services when finished creating all Characteristics and Descriptors */ + /** Start the services when finished creating all Characteristics and Descriptors */ pDeadService->start(); pBaadService->start(); @@ -224,6 +224,6 @@ void app_main(void) { pAdvertising->start(); printf("Advertising Started\n"); - + xTaskCreate(notifyTask, "notifyTask", 5000, NULL, 1, NULL); } diff --git a/src/NimBLEClient.h b/src/NimBLEClient.h index 39dbdd0..b787f0a 100644 --- a/src/NimBLEClient.h +++ b/src/NimBLEClient.h @@ -130,7 +130,6 @@ public: /** * @brief Called when disconnected from the server. * @param [in] pClient A pointer to the calling client object. - * @param [in] reason Contains the reason code for the disconnection. */ virtual void onDisconnect(NimBLEClient* pClient); @@ -153,7 +152,7 @@ public: /** * @brief Called when the pairing procedure is complete. - * @param [in] connInfo A reference to a NimBLEConnInfo instance containing the peer info.\n + * @param [in] desc A reference to a NimBLEConnInfo instance containing the peer info.\n * This can be used to check the status of the connection encryption/pairing. */ virtual void onAuthenticationComplete(ble_gap_conn_desc* desc); diff --git a/src/NimBLEDescriptor.cpp b/src/NimBLEDescriptor.cpp index ce2a6ae..e2e6c1b 100644 --- a/src/NimBLEDescriptor.cpp +++ b/src/NimBLEDescriptor.cpp @@ -285,7 +285,6 @@ NimBLEDescriptorCallbacks::~NimBLEDescriptorCallbacks() {} /** * @brief Callback function to support a read request. * @param [in] pDescriptor The descriptor that is the source of the event. - * @param [in] connInfo A reference to a NimBLEConnInfo instance containing the peer info. */ void NimBLEDescriptorCallbacks::onRead(NimBLEDescriptor* pDescriptor) { (void)pDescriptor; @@ -296,7 +295,6 @@ void NimBLEDescriptorCallbacks::onRead(NimBLEDescriptor* pDescriptor) { /** * @brief Callback function to support a write request. * @param [in] pDescriptor The descriptor that is the source of the event. - * @param [in] connInfo A reference to a NimBLEConnInfo instance containing the peer info. */ void NimBLEDescriptorCallbacks::onWrite(NimBLEDescriptor* pDescriptor) { (void)pDescriptor; diff --git a/src/NimBLERemoteCharacteristic.cpp b/src/NimBLERemoteCharacteristic.cpp index 4892dc9..6cca615 100644 --- a/src/NimBLERemoteCharacteristic.cpp +++ b/src/NimBLERemoteCharacteristic.cpp @@ -624,6 +624,7 @@ bool NimBLERemoteCharacteristic::setNotify(uint16_t val, notify_callback notifyC * @brief Subscribe for notifications or indications. * @param [in] notifications If true, subscribe for notifications, false subscribe for indications. * @param [in] notifyCallback A callback to be invoked for a notification. + * @param [in] response If true, require a write response from the descriptor write operation. * If NULL is provided then no callback is performed. * @return false if writing to the descriptor failed. */