Skip to content

Disconnect all existing connections in multirole BLE mode (server and client at the same time) when only one device disconnected #3011

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
MegaGarynych opened this issue Jul 19, 2019 · 6 comments
Labels
Status: Stale Issue is stale stage (outdated/stuck)

Comments

@MegaGarynych
Copy link

Hardware:

Board: ESP32 Dev Module
Core Installation version: 1.0.3-rc1
IDE name: Arduino IDE
Flash Frequency: 80Mhz
Computer OS: Windows 10

Description:

I have combined two examples BLE_client and BLE_server in one sketch to have ability connect to several BLE devices and control my esp32 board via smartphone application. All works excellent. Smartphone can connect to esp32, read/write characteristics and get notifications. Also, esp32 can connect to several BLE devices (like BLE button) and read/write characteristics and get notifications. But if one device is disconnect (smartphone or only one BLE button) all existed connections was disconnected too (all BLE buttons and smartphone). I think it is wrong behavior. Only one connection should be break, all other should be continue keep.

Sketch: (leave the backquotes for code formatting)

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>

#define SERVICE_UUID        "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"

// The remote service we wish to connect to.
//static BLEUUID serviceUUID("4fafc201-1fb5-459e-8fcc-c5c9c331914b");
static BLEUUID serviceUUID("a3aa");
static BLEUUID charUUID("d368");
// The characteristic of the remote service we are interested in.
//static BLEUUID    charUUID("beb5483e-36e1-4688-b7f5-ea07361b26a8");

static boolean doConnect = false;
static BLERemoteCharacteristic* pRemoteCharacteristic;
static BLEAdvertisedDevice* myDevice;

uint8_t mac[6] = {0xXX, 0x81, 0xF9, 0xXX, 0xA3, 0xXX};

BLECharacteristic *pCharacteristic;
 

class MyClientCallback : public BLEClientCallbacks {
  void onConnect(BLEClient* pclient) {
    Serial.println("onСonnect");
  }

  void onDisconnect(BLEClient* pclient) {
    Serial.println("onDisconnect");
  }
};

class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
 /**
   * Called for each advertising BLE server.
   */
  void onResult(BLEAdvertisedDevice advertisedDevice) {
    Serial.print("BLE Advertised Device found: ");
    Serial.println(advertisedDevice.toString().c_str());

    // We have found a device, let us now see if it contains the service we are looking for.
    uint8_t* addr = (uint8_t*)advertisedDevice.getAddress().getNative(); 
    if (memcmp(addr, mac, 6) == 0) {
      Serial.print("This is our device: ");
      BLEDevice::getScan()->stop();
      myDevice = new BLEAdvertisedDevice(advertisedDevice);
      doConnect = true;
    } // Found our server
  } // onResult
}; // MyAdvertisedDeviceCallbacks

bool connectToServer() {
    Serial.print("Forming a connection to ");
    Serial.println(myDevice->getAddress().toString().c_str());
    
    BLEClient*  pClient  = BLEDevice::createClient();
    Serial.println(" - Created client");

    pClient->setClientCallbacks(new MyClientCallback());

    // Connect to the remove BLE Server.
    pClient->connect(myDevice);  // if you pass BLEAdvertisedDevice instead of address, it will be recognized type of peer device address (public or private)
    Serial.println(" - Connected to server");

    // Obtain a reference to the service we are after in the remote BLE server.
    BLERemoteService* pRemoteService = pClient->getService(serviceUUID);
    if (pRemoteService == nullptr) {
      Serial.print("Failed to find our service UUID: ");
      Serial.println(serviceUUID.toString().c_str());
      pClient->disconnect();
      return false;
    }
    Serial.println(" - Found our service");


    // Obtain a reference to the characteristic in the service of the remote BLE server.
    pRemoteCharacteristic = pRemoteService->getCharacteristic(charUUID);
    if (pRemoteCharacteristic == nullptr) {
      Serial.print("Failed to find our characteristic UUID: ");
      Serial.println(charUUID.toString().c_str());
      pClient->disconnect();
      return false;
    }
    Serial.println(" - Found our characteristic");

    // Read the value of the characteristic.
    if(pRemoteCharacteristic->canWrite()) {
      pRemoteCharacteristic->writeValue(0x01);
    }
}
void setup() {
  Serial.begin(115200);
  Serial.println("Starting BLE work!");

  BLEDevice::init("Long name works now");
  BLEServer *pServer = BLEDevice::createServer();
  BLEService *pService = pServer->createService(SERVICE_UUID);
  pCharacteristic = pService->createCharacteristic(
                                         CHARACTERISTIC_UUID,
                                         BLECharacteristic::PROPERTY_READ |
                                         BLECharacteristic::PROPERTY_WRITE
                                       );

  pCharacteristic->setValue("Hello World says Neil");
  pService->start();
  // BLEAdvertising *pAdvertising = pServer->getAdvertising();  // this still is working for backward compatibility
  BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
  pAdvertising->addServiceUUID(SERVICE_UUID);
  pAdvertising->setScanResponse(true);
  pAdvertising->setMinPreferred(0x06);  // functions that help with iPhone connections issue
  pAdvertising->setMinPreferred(0x12);
  BLEDevice::startAdvertising();
  Serial.println("Characteristic defined! Now you can read it in your phone!");
 //=============================================
  BLEScan* pBLEScan = BLEDevice::getScan();
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
  pBLEScan->setInterval(1349);
  pBLEScan->setWindow(449);
  pBLEScan->setActiveScan(true);
  pBLEScan->start(5, false);

}

void loop() {
  // put your main code here, to run repeatedly:
  String str =  "Hello World says Neil";
  str += millis();
  pCharacteristic->setValue(str.c_str());

if (doConnect == true) {
    if (connectToServer()) {
      Serial.println("We are now connected to the BLE Server.");
    } else {
      Serial.println("We have failed to connect to the server; there is nothin more we will do.");
    }
    doConnect = false;
  }
  delay(2000);
}

Debug Messages:

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:928
ho 0 tail 12 room 4
load:0x40078000,len:8424
ho 0 tail 12 room 4
load:0x40080400,len:5868
entry 0x4008069c
Starting BLE work!
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: RegisterAppEvt (0x3ffdd160), owner: <N/A> for registerApp
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: RegisterAppEvt (0x3ffdd160), owner: registerApp
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: CreateEvt (0x3ffdd3b8), owner: <N/A> for createService
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: CreateEvt (0x3ffdd3b8), owner: createService
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: CreateEvt (0x3ffdd61c), owner: <N/A> for executeCreate
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: CreateEvt (0x3ffdd61c), owner: executeCreate
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEService.cpp:225] addCharacteristic(): Adding characteristic: uuid=beb5483e-36e1-4688-b7f5-ea07361b26 to service: UUID: 4fafc201-1fb5-459e-8fcc-c5c9c33191, handle: 0x0028
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][BLECharacteristic.cpp:89] executeCreate(): Registering characteristic (esp_ble_gatts_add_char): uuid: beb5483e-36e1-4688-b7f5-ea07361b26, service: UUID: 4fafc201-1fb5-459e-8fcc-c5c9c33191, handle: 0x0028
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: CreateEvt (0x3ffdda64), owner: <N/A> for executeCreate
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: CreateEvt (0x3ffdda64), owner: executeCreate
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: StartEvt (0x3ffdd6dc), owner: <N/A> for start
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: StartEvt (0x3ffdd6dc), owner: start
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[I][BLEDevice.cpp:560] getAdvertising(): create advertising
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:189] start(): - advertising service: 4fafc201-1fb5-459e-8fcc-c5c9c33191
Characteristic defined! Now you can read it in your phone!
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: ScanEnd (0x3ffde264), owner: <N/A> for start
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: ScanEnd (0x3ffde264), owner: start
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 0]
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 1]
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 6]
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 2]
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 7]
[D][BLEAdvertisedDevice.cpp:418] setRSSI(): - setRSSI(): rssi: -18
[D][BLEAdvertisedDevice.cpp:247] parseAdvertisement(): Type: 0x01 (), length: 1, data: 06
[D][BLEAdvertisedDevice.cpp:247] parseAdvertisement(): Type: 0x09 (), length: 20, data: 424c452044656d6f204c6967687426537065616b
[D][BLEAdvertisedDevice.cpp:407] setName(): - setName(): name: BLE Demo Light&Speak
BLE Advertised Device found: Name: BLE Demo Light&Speak, Address: 00:81:f9:60:a3:08
This is our device: [D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 3]
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 18]
 - Created client
[I][BLEDevice.cpp:599] addPeerDevice(): add conn_id: 1, GATT role: client
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: RegEvt (0x3ffde714), owner: <N/A> for connect
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: RegEvt (0x3ffde714), owner: connect
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: OpenEvt (0x3ffde774), owner: <N/A> for connect
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: OpenEvt (0x3ffde774), owner: connect
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:583] updatePeerDevice(): update conn_id: 5, GATT role: client
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
onСonnect
 - Connected to server
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SearchCmplEvt (0x3ffde7d4), owner: <N/A> for getServices
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SearchCmplEvt (0x3ffde7d4), owner: getServices
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
 - Found our service
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLERemoteService.cpp:191] retrieveCharacteristics(): Found a characteristic: Handle: 30, UUID: d368-0000-1000-8000-00805f9b34fb
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
 - Found our characteristic
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: WriteCharEvt (0x3ffe093c), owner: <N/A> for writeValue
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: WriteCharEvt (0x3ffe093c), owner: writeValue
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
We are now connected to the BLE Server.
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:583] updatePeerDevice(): update conn_id: 5, GATT role: client
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 20]
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 20]
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3232313931, offset=0
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3232313931, offset=0
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3232313931, offset=0
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3232313931, offset=0
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3234313937, offset=0
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3236323033, offset=0
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:189] start(): - advertising service: 4fafc201-1fb5-459e-8fcc-c5c9c33191
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
onDisconnect
[I][BLEDevice.cpp:610] removePeerDevice(): remove: 1, GATT role client
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 0]
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 1]
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:189] start(): - advertising service: 4fafc201-1fb5-459e-8fcc-c5c9c33191
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 0]
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 1]
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 6]
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb24), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb24), owner: <Unknown>
@chegewara
Copy link
Contributor

Hi,
from logs we can see that only 1 device is disconnected:

onDisconnect
[I][BLEDevice.cpp:610] removePeerDevice(): remove: 1, GATT role client

Could you add custom GAP and GATT handlers to see full logs from esp-idf library during disconnecting?
Here is example:
#2401 (comment)

@MegaGarynych
Copy link
Author

Hi,
from logs we can see that only 1 device is disconnected:

onDisconnect
[I][BLEDevice.cpp:610] removePeerDevice(): remove: 1, GATT role client

Yes :) but it is wrong Disconnecting event. I am only disconnect smartphone application, but BLE buttons disconnected too.
I have change some sketch parts and found strange behavior, please see attachements.
I have separate client and server callbacks.

Could you add custom GAP and GATT handlers to see full logs from esp-idf library during disconnecting?
Here is example:
#2401 (comment)
Ok, thanks I will test soon.

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>


#define SERVICE_UUID        "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"

// The remote service we wish to connect to.
//static BLEUUID serviceUUID("4fafc201-1fb5-459e-8fcc-c5c9c331914b");
static BLEUUID serviceUUID("a3aa");
static BLEUUID charUUID("d368");
// The characteristic of the remote service we are interested in.
//static BLEUUID    charUUID("beb5483e-36e1-4688-b7f5-ea07361b26a8");

static boolean doConnect = false;
static BLERemoteCharacteristic* pRemoteCharacteristic;
static BLEAdvertisedDevice* myDevice;

uint8_t mac[6] = {0x00, 0x81, 0xF9, 0x60, 0xA3, 0x08};

BLECharacteristic *pCharacteristic;
 
class MyServerCallback: public BLEServerCallbacks {
    void onConnect(BLEServer* pServer) {
      Serial.println("MyServerCallback.onConnect");
    };

    void onDisconnect(BLEServer* pServer) {
      Serial.println("MyServerCallback.onDisconnect");
    }
};


class MyClientCallback : public BLEClientCallbacks {
  void onConnect(BLEClient* pclient) {
    Serial.println("MyClientCallback.onСonnect");
  }

  void onDisconnect(BLEClient* pclient) {
    Serial.println("MyClientCallback.onDisconnect");
  }
};

class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
 /**
   * Called for each advertising BLE server.
   */
  void onResult(BLEAdvertisedDevice advertisedDevice) {
    Serial.print("BLE Advertised Device found: ");
    Serial.println(advertisedDevice.toString().c_str());

    // We have found a device, let us now see if it contains the service we are looking for.
    uint8_t* addr = (uint8_t*)advertisedDevice.getAddress().getNative(); 
    if (memcmp(addr, mac, 6) == 0) {
      Serial.print("This is our device: ");
      BLEDevice::getScan()->stop();
      myDevice = new BLEAdvertisedDevice(advertisedDevice);
      doConnect = true;
    } // Found our server
  } // onResult
}; // MyAdvertisedDeviceCallbacks

bool connectToServer() {
    Serial.print("Forming a connection to ");
    Serial.println(myDevice->getAddress().toString().c_str());
    
    BLEClient*  pClient  = BLEDevice::createClient();
    Serial.println(" - Created client");

    pClient->setClientCallbacks(new MyClientCallback());

    // Connect to the remove BLE Server.
    pClient->connect(myDevice);  // if you pass BLEAdvertisedDevice instead of address, it will be recognized type of peer device address (public or private)
    Serial.println(" - Connected to server");

    // Obtain a reference to the service we are after in the remote BLE server.
    BLERemoteService* pRemoteService = pClient->getService(serviceUUID);
    if (pRemoteService == nullptr) {
      Serial.print("Failed to find our service UUID: ");
      Serial.println(serviceUUID.toString().c_str());
      pClient->disconnect();
      return false;
    }
    Serial.println(" - Found our service");


    // Obtain a reference to the characteristic in the service of the remote BLE server.
    pRemoteCharacteristic = pRemoteService->getCharacteristic(charUUID);
    if (pRemoteCharacteristic == nullptr) {
      Serial.print("Failed to find our characteristic UUID: ");
      Serial.println(charUUID.toString().c_str());
      pClient->disconnect();
      return false;
    }
    Serial.println(" - Found our characteristic");

    // Read the value of the characteristic.
    if(pRemoteCharacteristic->canWrite()) {
      pRemoteCharacteristic->writeValue(0x01);
    }
}



void setup() {
  Serial.begin(115200);
  Serial.println("Starting BLE work!");

  BLEDevice::init("Long name works now");
  BLEServer *pServer = BLEDevice::createServer();
  pServer->setCallbacks(new MyServerCallback());
  BLEService *pService = pServer->createService(SERVICE_UUID);
  pCharacteristic = pService->createCharacteristic(
                                         CHARACTERISTIC_UUID,
                                         BLECharacteristic::PROPERTY_READ |
                                         BLECharacteristic::PROPERTY_WRITE
                                       );

  pCharacteristic->setValue("Hello World says Neil");
  pService->start();
  // BLEAdvertising *pAdvertising = pServer->getAdvertising();  // this still is working for backward compatibility
  BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
  pAdvertising->addServiceUUID(SERVICE_UUID);
  pAdvertising->setScanResponse(true);
  pAdvertising->setMinPreferred(0x06);  // functions that help with iPhone connections issue
  pAdvertising->setMinPreferred(0x12);
  BLEDevice::startAdvertising();
  Serial.println("Characteristic defined! Now you can read it in your phone!");
 //=============================================
  BLEScan* pBLEScan = BLEDevice::getScan();
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
  pBLEScan->setInterval(1349);
  pBLEScan->setWindow(449);
  pBLEScan->setActiveScan(true);
  pBLEScan->start(5, false);

}
void loop() {
  // put your main code here, to run repeatedly:
  String str =  "Hello World says Neil";
  str += millis();
  pCharacteristic->setValue(str.c_str());

if (doConnect == true) {
    if (connectToServer()) {
      Serial.println("We are now connected to the BLE Server.");
    } else {
      Serial.println("We have failed to connect to the server; there is nothin more we will do.");
    }
    doConnect = false;
  }
  delay(2000);
}

Core debug level - DEBUG!!!!!

Debug Messages:

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:928
ho 0 tail 12 room 4
load:0x40078000,len:8424
ho 0 tail 12 room 4
load:0x40080400,len:5868
entry 0x4008069c
Starting BLE work!
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: RegisterAppEvt (0x3ffdd158), owner: <N/A> for registerApp
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: RegisterAppEvt (0x3ffdd158), owner: registerApp
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: CreateEvt (0x3ffdd3b0), owner: <N/A> for createService
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: CreateEvt (0x3ffdd3b0), owner: createService
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: CreateEvt (0x3ffdd614), owner: <N/A> for executeCreate
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: CreateEvt (0x3ffdd614), owner: executeCreate
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEService.cpp:225] addCharacteristic(): Adding characteristic: uuid=beb5483e-36e1-4688-b7f5-ea07361b26 to service: UUID: 4fafc201-1fb5-459e-8fcc-c5c9c33191, handle: 0x0028
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][BLECharacteristic.cpp:89] executeCreate(): Registering characteristic (esp_ble_gatts_add_char): uuid: beb5483e-36e1-4688-b7f5-ea07361b26, service: UUID: 4fafc201-1fb5-459e-8fcc-c5c9c33191, handle: 0x0028
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: CreateEvt (0x3ffdda74), owner: <N/A> for executeCreate
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: CreateEvt (0x3ffdda74), owner: executeCreate
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: StartEvt (0x3ffdd6d4), owner: <N/A> for start
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: StartEvt (0x3ffdd6d4), owner: start
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[I][BLEDevice.cpp:560] getAdvertising(): create advertising
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:189] start(): - advertising service: 4fafc201-1fb5-459e-8fcc-c5c9c33191
Characteristic defined! Now you can read it in your phone!
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: ScanEnd (0x3ffde274), owner: <N/A> for start
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: ScanEnd (0x3ffde274), owner: start
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 0]
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 1]
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 6]
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 2]
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 7]
[D][BLEAdvertisedDevice.cpp:418] setRSSI(): - setRSSI(): rssi: -17
[D][BLEAdvertisedDevice.cpp:247] parseAdvertisement(): Type: 0x01 (), length: 1, data: 06
[D][BLEAdvertisedDevice.cpp:247] parseAdvertisement(): Type: 0x09 (), length: 20, data: 424c452044656d6f204c6967687426537065616b
[D][BLEAdvertisedDevice.cpp:407] setName(): - setName(): name: BLE Demo Light&Speak
BLE Advertised Device found: Name: BLE Demo Light&Speak, Address: 00:81:f9:60:a3:08
This is our device: [D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 3]
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
00:81:f9:60:a3:08
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 18]
[I][BLEDevice.cpp:599] addPeerDevice(): add conn_id: 1, GATT role: client
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: RegEvt (0x3ffde5c0), owner: <N/A> for connect
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: RegEvt (0x3ffde5c0), owner: connect
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: OpenEvt (0x3ffde620), owner: <N/A> for connect
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: OpenEvt (0x3ffde620), owner: connect
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
MyServerCallback.onConnect
[D][BLEServer.cpp:356] onConnect(): BLEServerCallbacks
[D][BLEServer.cpp:357] onConnect(): BLEServerCallbacks
[D][BLEServer.cpp:358] onConnect(): BLEServerCallbacks
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:583] updatePeerDevice(): update conn_id: 5, GATT role: client
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
MyClientCallback.onСonnect
 - Connected to server
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SearchCmplEvt (0x3ffde870), owner: <N/A> for getServices
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SearchCmplEvt (0x3ffde870), owner: getServices
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
 - Found our service
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLERemoteService.cpp:191] retrieveCharacteristics(): Found a characteristic: Handle: 30, UUID: d368-0000-1000-8000-00805f9b34fb
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
 - Found our characteristic
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: WriteCharEvt (0x3ffe091c), owner: <N/A> for writeValue
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: WriteCharEvt (0x3ffe091c), owner: writeValue
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
We are now connected to the BLE Server.
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
MyServerCallback.onConnect
[D][BLEServer.cpp:356] onConnect(): BLEServerCallbacks
[D][BLEServer.cpp:357] onConnect(): BLEServerCallbacks
[D][BLEServer.cpp:358] onConnect(): BLEServerCallbacks
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:583] updatePeerDevice(): update conn_id: 5, GATT role: client
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 20]
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 20]
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3137393535, offset=0
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3139393631, offset=0
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3231393637, offset=0
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
MyServerCallback.onDisconnect
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:189] start(): - advertising service: 4fafc201-1fb5-459e-8fcc-c5c9c33191
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[I][BLEDevice.cpp:610] removePeerDevice(): remove: 1, GATT role client
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 0]
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 1]
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 6]
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:189] start(): - advertising service: 4fafc201-1fb5-459e-8fcc-c5c9c33191
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 0]
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 1]
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 6]
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb34), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb34), owner: <Unknown>

Core debug level - ERROR!!!!!

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:928
ho 0 tail 12 room 4
load:0x40078000,len:8424
ho 0 tail 12 room 4
load:0x40080400,len:5868
entry 0x4008069c
Starting BLE work!
Characteristic defined! Now you can read it in your phone!
BLE Advertised Device found: Name: BLE Demo Light&Speak, Address: 00:81:f9:60:a3:08
This is our device: Forming a connection to 00:81:f9:60:a3:08
 - Created client
MyServerCallback.onConnect <<<<---------WRONG callback execution
MyClientCallback.onСonnect
 - Connected to server
 - Found our service
[E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
 - Found our characteristic
We are now connected to the BLE Server.
MyServerCallback.onConnect
MyServerCallback.onDisconnect
MyClientCallback.onDisconnect <--------------------------
MyServerCallback.onDisconnect
  BLEDevice::init("Long name works now");
  BLEServer *pServer = BLEDevice::createServer();
  //pServer->setCallbacks(new MyServerCallback()); <<----- comment setCallbacks

log is different

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:928
ho 0 tail 12 room 4
load:0x40078000,len:8424
ho 0 tail 12 room 4
load:0x40080400,len:5868
entry 0x4008069c
Starting BLE work!
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: RegisterAppEvt (0x3ffdd158), owner: <N/A> for registerApp
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: RegisterAppEvt (0x3ffdd158), owner: registerApp
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: CreateEvt (0x3ffdd3b0), owner: <N/A> for createService
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: CreateEvt (0x3ffdd3b0), owner: createService
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: CreateEvt (0x3ffdd614), owner: <N/A> for executeCreate
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: CreateEvt (0x3ffdd614), owner: executeCreate
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEService.cpp:225] addCharacteristic(): Adding characteristic: uuid=beb5483e-36e1-4688-b7f5-ea07361b26 to service: UUID: 4fafc201-1fb5-459e-8fcc-c5c9c33191, handle: 0x0028
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][BLECharacteristic.cpp:89] executeCreate(): Registering characteristic (esp_ble_gatts_add_char): uuid: beb5483e-36e1-4688-b7f5-ea07361b26, service: UUID: 4fafc201-1fb5-459e-8fcc-c5c9c33191, handle: 0x0028
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: CreateEvt (0x3ffdda5c), owner: <N/A> for executeCreate
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: CreateEvt (0x3ffdda5c), owner: executeCreate
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: StartEvt (0x3ffdd6d4), owner: <N/A> for start
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: StartEvt (0x3ffdd6d4), owner: start
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[I][BLEDevice.cpp:560] getAdvertising(): create advertising
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:189] start(): - advertising service: 4fafc201-1fb5-459e-8fcc-c5c9c33191
Characteristic defined! Now you can read it in your phone!
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: ScanEnd (0x3ffde25c), owner: <N/A> for start
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: ScanEnd (0x3ffde25c), owner: start
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 0]
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 1]
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 6]
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 2]
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 7]
[D][BLEAdvertisedDevice.cpp:418] setRSSI(): - setRSSI(): rssi: -18
[D][BLEAdvertisedDevice.cpp:247] parseAdvertisement(): Type: 0x01 (), length: 1, data: 06
[D][BLEAdvertisedDevice.cpp:247] parseAdvertisement(): Type: 0x09 (), length: 20, data: 424c452044656d6f204c6967687426537065616b
[D][BLEAdvertisedDevice.cpp:407] setName(): - setName(): name: BLE Demo Light&Speak
BLE Advertised Device found: Name: BLE Demo Light&Speak, Address: 00:81:f9:60:a3:08
This is our device: [D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 3]
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
00:81:f9:60:a3:08
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 18]
[I][BLEDevice.cpp:599] addPeerDevice(): add conn_id: 1, GATT role: client
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: RegEvt (0x3ffde614), owner: <N/A> for connect
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: RegEvt (0x3ffde614), owner: connect
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: OpenEvt (0x3ffde864), owner: <N/A> for connect
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: OpenEvt (0x3ffde864), owner: connect
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:583] updatePeerDevice(): update conn_id: 5, GATT role: client
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
MyClientCallback.onСonnect
 - Connected to server
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SearchCmplEvt (0x3ffde8c4), owner: <N/A> for getServices
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SearchCmplEvt (0x3ffde8c4), owner: getServices
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
 - Found our service
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLERemoteService.cpp:191] retrieveCharacteristics(): Found a characteristic: Handle: 30, UUID: d368-0000-1000-8000-00805f9b34fb
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
 - Found our characteristic
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: WriteCharEvt (0x3ffe08c0), owner: <N/A> for writeValue
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: WriteCharEvt (0x3ffe08c0), owner: writeValue
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
We are now connected to the BLE Server.
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:583] updatePeerDevice(): update conn_id: 5, GATT role: client
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 20]
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 20]
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3134303531, offset=0
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3134303531, offset=0
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3136303537, offset=0
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:189] start(): - advertising service: 4fafc201-1fb5-459e-8fcc-c5c9c33191
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
MyClientCallback.onDisconnect
[I][BLEDevice.cpp:610] removePeerDevice(): remove: 1, GATT role client
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 0]
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 1]
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 6]
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:189] start(): - advertising service: 4fafc201-1fb5-459e-8fcc-c5c9c33191
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 0]
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 1]
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 6]
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddb1c), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddb1c), owner: <Unknown>

But In all cases my behavior is the same

  1. Esp32 start and automatically connect to BLE button
  2. Write to BLE button characteristic
  3. Then I am connect to esp32 via smartphone
  4. Read several times esp32 characteristic
  5. Disconnect smartphone from esp32

@MegaGarynych
Copy link
Author

I have add custom GAP and GATT handlers to see full logs

My testings steps is the same in my previous messages

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:928
ho 0 tail 12 room 4
load:0x40078000,len:8424
ho 0 tail 12 room 4
load:0x40080400,len:5868
entry 0x4008069c
Starting BLE work!
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: RegisterAppEvt (0x3ffdd160), owner: <N/A> for registerApp
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: RegisterAppEvt (0x3ffdd160), owner: registerApp
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[W][ble_multirole_test.ino:113] my_gatts_event_handler(): custom gatts event handler, event: 0
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: CreateEvt (0x3ffdd3b8), owner: <N/A> for createService
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: CreateEvt (0x3ffdd3b8), owner: createService
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: CreateEvt (0x3ffdd61c), owner: <N/A> for executeCreate
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: CreateEvt (0x3ffdd61c), owner: executeCreate
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[W][ble_multirole_test.ino:113] my_gatts_event_handler(): custom gatts event handler, event: 7
[D][BLEService.cpp:225] addCharacteristic(): Adding characteristic: uuid=beb5483e-36e1-4688-b7f5-ea07361b26 to service: UUID: 4fafc201-1fb5-459e-8fcc-c5c9c33191, handle: 0x0028
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][BLECharacteristic.cpp:89] executeCreate(): Registering characteristic (esp_ble_gatts_add_char): uuid: beb5483e-36e1-4688-b7f5-ea07361b26, service: UUID: 4fafc201-1fb5-459e-8fcc-c5c9c33191, handle: 0x0028
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: CreateEvt (0x3ffddb1c), owner: <N/A> for executeCreate
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: CreateEvt (0x3ffddb1c), owner: executeCreate
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[W][ble_multirole_test.ino:113] my_gatts_event_handler(): custom gatts event handler, event: 9
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: StartEvt (0x3ffdd6dc), owner: <N/A> for start
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: StartEvt (0x3ffdd6dc), owner: start
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[W][ble_multirole_test.ino:113] my_gatts_event_handler(): custom gatts event handler, event: 12
[I][BLEDevice.cpp:560] getAdvertising(): create advertising
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:189] start(): - advertising service: 4fafc201-1fb5-459e-8fcc-c5c9c33191
Characteristic defined! Now you can read it in your phone!
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: ScanEnd (0x3ffde2b4), owner: <N/A> for start
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: ScanEnd (0x3ffde2b4), owner: start
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 0]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 0
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 1]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 1
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 6]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 6
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 2]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 2
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 7]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 7
[D][BLEAdvertisedDevice.cpp:418] setRSSI(): - setRSSI(): rssi: -19
[D][BLEAdvertisedDevice.cpp:247] parseAdvertisement(): Type: 0x01 (), length: 1, data: 06
[D][BLEAdvertisedDevice.cpp:247] parseAdvertisement(): Type: 0x09 (), length: 20, data: 424c452044656d6f204c6967687426537065616b
[D][BLEAdvertisedDevice.cpp:407] setName(): - setName(): name: BLE Demo Light&Speak
BLE Advertised Device found: Name: BLE Demo Light&Speak, Address: 00:81:f9:60:a3:08
This is our device: [D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 3]
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 3
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 3]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 3
[I][BLEDevice.cpp:599] addPeerDevice(): add conn_id: 1, GATT role: client
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: RegEvt (0x3ffde838), owner: <N/A> for connect
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: RegEvt (0x3ffde838), owner: connect
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 18]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 18
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 0
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: OpenEvt (0x3ffde898), owner: <N/A> for connect
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: OpenEvt (0x3ffde898), owner: connect
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
MyServerCallback.onConnect
[D][BLEServer.cpp:356] onConnect(): BLEServerCallbacks
[D][BLEServer.cpp:357] onConnect(): BLEServerCallbacks
[D][BLEServer.cpp:358] onConnect(): BLEServerCallbacks
[W][ble_multirole_test.ino:113] my_gatts_event_handler(): custom gatts event handler, event: 14
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:583] updatePeerDevice(): update conn_id: 5, GATT role: client
[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 40
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
 - Connected to server
[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 2
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SearchCmplEvt (0x3ffde8f8), owner: <N/A> for getServices
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SearchCmplEvt (0x3ffde8f8), owner: getServices
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 7
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 7
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 7
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 7
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
 - Found our service[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 6
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLERemoteService.cpp:191] retrieveCharacteristics(): Found a characteristic: Handle: 30, UUID: d368-0000-1000-8000-00805f9b34fb
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[E][BLERemoteCharacteristic.cpp:274] retrieveDescriptors(): esp_ble_gattc_get_all_descr: Unknown
[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 18
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: WriteCharEvt (0x3ffe08ac), owner: <N/A> for writeValue
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: WriteCharEvt (0x3ffe08ac), owner: writeValue
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
We are now connected to the BLE Server.
[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 4
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
MyServerCallback.onConnect
[D][BLEServer.cpp:356] onConnect(): BLEServerCallbacks
[D][BLEServer.cpp:357] onConnect(): BLEServerCallbacks
[D][BLEServer.cpp:358] onConnect(): BLEServerCallbacks
[W][ble_multirole_test.ino:113] my_gatts_event_handler(): custom gatts event handler, event: 14
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEDevice.cpp:583] updatePeerDevice(): update conn_id: 5, GATT role: client
[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 40
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 20]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 20
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 20]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 20
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[W][ble_multirole_test.ino:113] my_gatts_event_handler(): custom gatts event handler, event: 4
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3232313138, offset=0
[W][ble_multirole_test.ino:113] my_gatts_event_handler(): custom gatts event handler, event: 1
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[W][ble_multirole_test.ino:113] my_gatts_event_handler(): custom gatts event handler, event: 21
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLECharacteristic.cpp:358] handleGATTServerEvent(): mtu value: 279
[D][BLECharacteristic.cpp:360] handleGATTServerEvent(): Sending a response (esp_ble_gatts_send_response)
[D][BLECharacteristic.cpp:404] handleGATTServerEvent():  - Data: length=26, data=48656c6c6f20576f726c642073617973204e65696c3234313234, offset=0
[W][ble_multirole_test.ino:113] my_gatts_event_handler(): custom gatts event handler, event: 1
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[W][ble_multirole_test.ino:113] my_gatts_event_handler(): custom gatts event handler, event: 21
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
MyServerCallback.onDisconnect
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:189] start(): - advertising service: 4fafc201-1fb5-459e-8fcc-c5c9c33191
[W][ble_multirole_test.ino:113] my_gatts_event_handler(): custom gatts event handler, event: 15
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[D][BLEClient.cpp:158] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
MyClientCallback.onDisconnect
[I][BLEDevice.cpp:610] removePeerDevice(): remove: 1, GATT role client
[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 41
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 0]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 0
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 1]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 1
[D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:189] start(): - advertising service: 4fafc201-1fb5-459e-8fcc-c5c9c33191
[W][ble_multirole_test.ino:113] my_gatts_event_handler(): custom gatts event handler, event: 15
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 5
[D][BLEDevice.cpp:154] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 5] ... Unknown
[W][ble_multirole_test.ino:109] my_gattc_event_handler(): custom gattc event handler, event: 1
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 0]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 0
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 1]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 1
[D][BLEClient.cpp:458] handleGAPEvent(): BLEClient ... handling GAP event!
[D][BLEDevice.cpp:562] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:491] handleGAPEvent(): handleGAPEvent [event no: 6]
[W][ble_multirole_test.ino:105] my_gap_event_handler(): custom gap event handler, event: 6
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>
[D][FreeRTOS.cpp:157] take(): Semaphore taking: name: SetValue (0x3ffddfe8), owner: <N/A> for <Unknown>
[D][FreeRTOS.cpp:166] take(): Semaphore taken:  name: SetValue (0x3ffddfe8), owner: <Unknown>

@stale
Copy link

stale bot commented Sep 18, 2019

This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 14 days if no further activity occurs. Thank you for your contributions.

@stale stale bot added the Status: Stale Issue is stale stage (outdated/stuck) label Sep 18, 2019
@stale
Copy link

stale bot commented Oct 2, 2019

[STALE_DEL] This stale issue has been automatically closed. Thank you for your contributions.

@stale stale bot closed this as completed Oct 2, 2019
@AndreasHobby
Copy link

I have the same issue with the latest version. All BLE devices are disconnecting when one is loosing the connection (e.g. if I switch the device off or bringing it outside the range)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Stale Issue is stale stage (outdated/stuck)
Projects
None yet
Development

No branches or pull requests

3 participants