Skip to content

BLE Client and WiFi Client simultaneously #2162

Closed
@nb-ceffa

Description

@nb-ceffa

Description:

Hi, I'm trying to use BLE Client and WiFi Client simultaneously but reading value from BLE device when WiFi is connected seems to be impossible. :( I have created simple demo attached below. Reading works fine when WiFi part is removed. Any idea what is wrong?
Thank you in advance!

Sketch:

#include <Arduino.h>
#include <WiFi.h>
#include "BLEDevice.h"

BLEClient* bleClient;
BLEAddress bleAddress = BLEAddress("<address>");

WiFiClient wifiClient;

void doBleStuff() {
  bleClient->connect(bleAddress);
  Serial.println("Reading...");
  std::string value = bleClient->getValue(BLEUUID("00001800-0000-1000-8000-00805f9b34fb"), BLEUUID("00002a00-0000-1000-8000-00805f9b34fb"));
  Serial.print("Value: ");
  Serial.println(value.c_str());
  bleClient->disconnect();
}

void setup() {
  Serial.begin(115200);
  BLEDevice::init("");
  bleClient = BLEDevice::createClient();
  
  wifiClient = WiFiClient();
  WiFi.begin("<SSID>", "<PASSWD>");

  delay(5000); 

  if (WiFi.waitForConnectResult() == WL_CONNECTED) { 
      Serial.print("WiFi connected. IP address: ");
      Serial.println(WiFi.localIP());
  }
}

void loop() {
  delay(10000); 

  doBleStuff();
}

Debug Messages:

[D][BLEDevice.cpp:54] createClient(): >> createClient
[D][BLEDevice.cpp:60] createClient(): << createClient
[D][WiFiGeneric.cpp:345] _eventCallback(): Event: 2 - STA_START
[D][WiFiGeneric.cpp:345] _eventCallback(): Event: 0 - WIFI_READY
[D][WiFiGeneric.cpp:345] _eventCallback(): Event: 4 - STA_CONNECTED
[D][WiFiGeneric.cpp:345] _eventCallback(): Event: 7 - STA_GOT_IP
[D][WiFiGeneric.cpp:389] _eventCallback(): STA IP: 192.168.123.69, MASK: 255.255.255.0, GW: 192.168.123.1
WiFi connected. IP address: 192.168.123.69
[D][BLEClient.cpp:91] connect(): >> connect(<MAC_ADDRESS>)
[D][BLEClient.cpp:74] clearServices(): >> clearServices
[D][BLEClient.cpp:81] clearServices(): << clearServices
[D][BLEDevice.cpp:143] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_REG_EVT
[D][BLEUtils.cpp:1377] dumpGattClientEvent(): GATT Event: ESP_GATTC_REG_EVT
[D][BLEUtils.cpp:1550] dumpGattClientEvent(): [status: ESP_GATT_OK, app_id: 0x0]
[D][BLEDevice.cpp:143] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_DISCONNECT_EVT
[D][BLEUtils.cpp:1377] dumpGattClientEvent(): GATT Event: ESP_GATTC_DISCONNECT_EVT
[D][BLEUtils.cpp:1423] dumpGattClientEvent(): [reason: ESP_GATT_CONN_CONN_CANCEL, conn_id: 0, remote_bda: <MAC_ADDRESS>]
[D][BLEDevice.cpp:143] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_OPEN_EVT
[D][BLEUtils.cpp:1377] dumpGattClientEvent(): GATT Event: ESP_GATTC_OPEN_EVT
[D][BLEUtils.cpp:1503] dumpGattClientEvent(): [status: ESP_GATT_ERROR, conn_id: 0, remote_bda: <MAC_ADDRESS>, mtu: 0]
[D][BLEClient.cpp:123] connect(): << connect(), rc=0
Reading...
[D][BLEClient.cpp:386] getValue(): >> getValue: serviceUUID: 00001800-0000-1000-8000-00805f9b34fb, characteristicUUID: 00002a00-0000-1000-8000-00805f9b34fb
[D][BLEClient.cpp:322] getService(): >> getService: uuid: 00001800-0000-1000-8000-00805f9b34fb
[D][BLEClient.cpp:358] getServices(): >> getServices
[D][BLEClient.cpp:74] clearServices(): >> clearServices
[D][BLEClient.cpp:81] clearServices(): << clearServices

Build log:

Processing esp32dev__ (platform: espressif32; board: esp32dev; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html
PLATFORM: Espressif 32 > Espressif ESP32 Dev Module
HARDWARE: ESP32 240MHz 320KB RAM (4MB Flash)
DEBUG: CURRENT(esp-prog) EXTERNAL(esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF MODES: FINDER(chain) COMPATIBILITY(soft)
Collected 26 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <WiFi> 1.0
|-- <ESP32 BLE Arduino> 0.4.16
Compiling .pioenvs\esp32dev__\src\main.cpp.o
Linking .pioenvs\esp32dev__\firmware.elf
Retrieving maximum program size .pioenvs\esp32dev__\firmware.elf
Checking size .pioenvs\esp32dev__\firmware.elf
Building .pioenvs\esp32dev__\firmware.bin
Memory Usage -> http://bit.ly/pio-memory-usage
DATA:    [==        ]  24.0% (used 78688 bytes from 327680 bytes)
PROGRAM: [=======   ]  74.4% (used 1462654 bytes from 1966080 bytes)
Configuring upload protocol...
AVAILABLE: esp-prog, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool

Metadata

Metadata

Assignees

No one assigned

    Labels

    Status: StaleIssue is stale stage (outdated/stuck)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions