Closed
Description
Hardware:
Board: ESP32 devkit V1
Core Installation version:
- framework-arduinoespressif32 3.10006.210326 (1.0.6)
- tool-esptoolpy 1.30100.210531 (3.1.0)
- tool-mkspiffs 2.230.0 (2.30)
- toolchain-xtensa32 2.50200.97 (5.2.0)
IDE name: Platform.io
Flash Frequency: 240Mhz
PSRAM enabled: no
Upload Speed: 115200
Computer OS: Windows 10
Description:
I have tried to test the BLE Ibeacon example but I don't see anything on NRF connect. I then enabled the logging via the platformio.ini file and saw that the code throws an error.
It seems to be the same error as here: #2853
But I have checked from the same github issue this: #3034
and start() is commented on my code. So that should be resolved, but it isn't.
Sketch
/*
Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleScan.cpp
Ported to Arduino ESP32 by pcbreflux
*/
/*
Create a BLE server that will send periodic iBeacon frames.
The design of creating the BLE server is:
1. Create a BLE Server
2. Create advertising data
3. Start advertising.
4. wait
5. Stop advertising.
6. deep sleep
*/
#include "Arduino.h"
#include "sys/time.h"
#include "BLEDevice.h"
#include "BLEUtils.h"
#include "BLEBeacon.h"
#include "esp_sleep.h"
#define GPIO_DEEP_SLEEP_DURATION 10 // sleep x seconds and then wake up
RTC_DATA_ATTR static time_t last; // remember last boot in RTC Memory
RTC_DATA_ATTR static uint32_t bootcount; // remember number of boots in RTC Memory
#ifdef __cplusplus
extern "C" {
#endif
uint8_t temprature_sens_read();
//uint8_t g_phyFuns;
#ifdef __cplusplus
}
#endif
// See the following for generating UUIDs:
// https://www.uuidgenerator.net/
BLEAdvertising *pAdvertising;
struct timeval now;
#define BEACON_UUID "8ec76ea3-6668-48da-9866-75be8bc86f4d" // UUID 1 128-Bit (may use linux tool uuidgen or random numbers via https://www.uuidgenerator.net/)
void setBeacon() {
BLEBeacon oBeacon = BLEBeacon();
oBeacon.setManufacturerId(0x4C00); // fake Apple 0x004C LSB (ENDIAN_CHANGE_U16!)
oBeacon.setProximityUUID(BLEUUID(BEACON_UUID));
oBeacon.setMajor((bootcount & 0xFFFF0000) >> 16);
oBeacon.setMinor(bootcount&0xFFFF);
BLEAdvertisementData oAdvertisementData = BLEAdvertisementData();
BLEAdvertisementData oScanResponseData = BLEAdvertisementData();
oAdvertisementData.setFlags(0x04); // BR_EDR_NOT_SUPPORTED 0x04
std::string strServiceData = "";
strServiceData += (char)26; // Len
strServiceData += (char)0xFF; // Type
strServiceData += oBeacon.getData();
oAdvertisementData.addData(strServiceData);
pAdvertising->setAdvertisementData(oAdvertisementData);
pAdvertising->setScanResponseData(oScanResponseData);
pAdvertising->setAdvertisementType(ADV_TYPE_NONCONN_IND);
}
void setup() {
Serial.begin(115200);
gettimeofday(&now, NULL);
Serial.printf("start ESP32 %d\n",bootcount++);
Serial.printf("deep sleep (%lds since last reset, %lds since last boot)\n",now.tv_sec,now.tv_sec-last);
last = now.tv_sec;
// Create the BLE Device
BLEDevice::init("");
// Create the BLE Server
// BLEServer *pServer = BLEDevice::createServer(); // <-- no longer required to instantiate BLEServer, less flash and ram usage
pAdvertising = BLEDevice::getAdvertising();
setBeacon();
// Start advertising
pAdvertising->start();
Serial.println("Advertizing started...");
delay(100);
pAdvertising->stop();
Serial.printf("enter deep sleep\n");
esp_deep_sleep(1000000LL * GPIO_DEEP_SLEEP_DURATION);
Serial.printf("in deep sleep\n");
}
void loop() {
}
Debug Messages:
rst:0x10 (RTCWDT_RTC_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:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
start ESP32 0
deep sleep (0s since last reset, 0s since last boot)
[I][BLEDevice.cpp:569] getAdvertising(): create advertising
[D][BLEDevice.cpp:571] getAdvertising(): get advertising
[V][BLEAdvertising.cpp:153] setAdvertisementData(): >> setAdvertisementData
[V][BLEAdvertising.cpp:161] setAdvertisementData(): << setAdvertisementData
[V][BLEUtils.cpp:1817] gapEventToString(): gapEventToString: Unknown event type 4 0x04
[V][BLEAdvertising.cpp:170] setScanResponseData(): >> setScanResponseData
[V][BLEUtils.cpp:1049] dumpGapEvent(): Received a GAP event: Unknown event type
[E][BLEAdvertising.cpp:175] setScanResponseData(): esp_ble_gap_config_scan_rsp_data_raw: 258 Unknown ESP_ERR error
[V][BLEUtils.cpp:1264] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
[V][BLEAdvertising.cpp:178] setScanResponseData(): << setScanResponseData
[D][BLEDevice.cpp:571] getAdvertising(): get advertising
[V][BLEAdvertising.cpp:187] start(): >> start: customAdvData: 1, customScanResponseData: 1
[D][BLEAdvertising.cpp:506] handleGAPEvent(): handleGAPEvent [event no: 4]
[D][BLEAdvertising.cpp:206] start(): - no services advertised
[V][BLEAdvertising.cpp:252] start(): << start
Advertizing started...
[V][BLEUtils.cpp:1817] gapEventToString(): gapEventToString: Unknown event type 6 0x06
[V][BLEUtils.cpp:1049] dumpGapEvent(): Received a GAP event: Unknown event type
[V][BLEUtils.cpp:1264] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
[D][BLEDevice.cpp:571] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:506] handleGAPEvent(): handleGAPEvent [event no: 6]
[V][BLEAdvertising.cpp:262] stop(): >> stop
[V][BLEAdvertising.cpp:268] stop(): << stop
enter deep sleep
[V][BLEUtils.cpp:1817] gapEventToString(): gapEventToString: Unknown event type 17 0x11
[V][BLEUtils.cpp:1049] dumpGapEvent(): Received a GAP event: Unknown event type
[V][BLEUtils.cpp:1264] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
[D][BLEDevice.cpp:571] getAdvertising(): get advertising
[D][BLEAdvertising.cpp:506] handleGAPEvent(): handleGAPEvent [event no: 17]
[I][BLEAdvertising.cpp:522] handleGAPEvent(): STOP advertising
Metadata
Metadata
Assignees
Type
Projects
Status
Done