[BT] Update NimBLE-Arduino to 2.2.1 (#2140)
* Update NimBLE-Arduino to 2.2.1 * Add BLE OTA update capability.
This commit is contained in:
1 parent
4bf43f5695
commit
d03795d0bf
8 files changed
+81
-86
No files matched your search
+3
-2
@@ -1898,8 +1898,9 @@ extra_scripts = ${com-esp32.extra_scripts}
|
|||||||
board_build.partitions = partitions/min_spiffs.csv
|
board_build.partitions = partitions/min_spiffs.csv
|
||||||
lib_deps =
|
lib_deps =
|
||||||
${com-esp32.lib_deps}
|
${com-esp32.lib_deps}
|
||||||
${libraries.ble}
|
|
||||||
${libraries.decoder}
|
${libraries.decoder}
|
||||||
|
h2zero/esp-nimble-cpp@2.0.1
|
||||||
|
h2zero/NimBLEOta@0.1.0
|
||||||
build_flags =
|
build_flags =
|
||||||
${com-esp32.build_flags}
|
${com-esp32.build_flags}
|
||||||
'-DZgatewayBT="BT"'
|
'-DZgatewayBT="BT"'
|
||||||
@@ -1908,5 +1909,5 @@ build_flags =
|
|||||||
'-DGateway_Name="OMG_ESP32_BLE"'
|
'-DGateway_Name="OMG_ESP32_BLE"'
|
||||||
'-DUSE_BLUFI=1'
|
'-DUSE_BLUFI=1'
|
||||||
'-DenableMultiGTWSync=false'
|
'-DenableMultiGTWSync=false'
|
||||||
'-DARDUINO_LOOP_STACK_SIZE=17500'
|
'-DCONFIG_NIMBLE_CPP_FREERTOS_TASK_BLOCK_BIT=31'
|
||||||
custom_description = Regular BLE gateway based on esp-idf with adaptive scanning activated, automatically adapts the scan parameters depending on your devices
|
custom_description = Regular BLE gateway based on esp-idf with adaptive scanning activated, automatically adapts the scan parameters depending on your devices
|
||||||
+21
-1
@@ -27,6 +27,7 @@
|
|||||||
*/
|
*/
|
||||||
#if defined(ESP32) && defined(USE_BLUFI)
|
#if defined(ESP32) && defined(USE_BLUFI)
|
||||||
# include "NimBLEDevice.h"
|
# include "NimBLEDevice.h"
|
||||||
|
# include "NimBLEOta.h"
|
||||||
# include "esp_blufi_api.h"
|
# include "esp_blufi_api.h"
|
||||||
# include "esp_timer.h"
|
# include "esp_timer.h"
|
||||||
|
|
||||||
@@ -35,6 +36,9 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static esp_timer_handle_t connection_timer = nullptr;
|
static esp_timer_handle_t connection_timer = nullptr;
|
||||||
|
static NimBLEOta* pNimBLEOta;
|
||||||
|
static NimBLECharacteristic* pCommandCharacteristic;
|
||||||
|
static NimBLECharacteristic* pRecvFwCharacteristic;
|
||||||
|
|
||||||
struct pkt_info {
|
struct pkt_info {
|
||||||
uint8_t* pkt;
|
uint8_t* pkt;
|
||||||
@@ -183,6 +187,8 @@ void stop_connection_timer() {}
|
|||||||
static void example_event_callback(esp_blufi_cb_event_t event, esp_blufi_cb_param_t* param) {
|
static void example_event_callback(esp_blufi_cb_event_t event, esp_blufi_cb_param_t* param) {
|
||||||
/* actually, should post to blufi_task handle the procedure,
|
/* actually, should post to blufi_task handle the procedure,
|
||||||
* now, as a example, we do it more simply */
|
* now, as a example, we do it more simply */
|
||||||
|
ble_gap_conn_desc desc;
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case ESP_BLUFI_EVENT_INIT_FINISH:
|
case ESP_BLUFI_EVENT_INIT_FINISH:
|
||||||
Log.trace(F("BLUFI init finish" CR));
|
Log.trace(F("BLUFI init finish" CR));
|
||||||
@@ -201,6 +207,10 @@ static void example_event_callback(esp_blufi_cb_event_t event, esp_blufi_cb_para
|
|||||||
gatewayState = GatewayState::ONBOARDING;
|
gatewayState = GatewayState::ONBOARDING;
|
||||||
omg_blufi_ble_connected = true;
|
omg_blufi_ble_connected = true;
|
||||||
restart_connection_timer();
|
restart_connection_timer();
|
||||||
|
ble_gap_conn_find(param->connect.conn_id, &desc);
|
||||||
|
// Blufi dosn't provide a callback for subscribe so we emulate it here.
|
||||||
|
pCommandCharacteristic->getCallbacks()->onSubscribe(pCommandCharacteristic, *(NimBLEConnInfo*)&desc, 2);
|
||||||
|
pRecvFwCharacteristic->getCallbacks()->onSubscribe(pRecvFwCharacteristic, *(NimBLEConnInfo*)&desc, 2);
|
||||||
esp_blufi_adv_stop();
|
esp_blufi_adv_stop();
|
||||||
blufi_security_init();
|
blufi_security_init();
|
||||||
break;
|
break;
|
||||||
@@ -217,6 +227,9 @@ static void example_event_callback(esp_blufi_cb_event_t event, esp_blufi_cb_para
|
|||||||
} else {
|
} else {
|
||||||
gatewayState = GatewayState::OFFLINE;
|
gatewayState = GatewayState::OFFLINE;
|
||||||
}
|
}
|
||||||
|
ble_gap_conn_find(param->connect.conn_id, &desc);
|
||||||
|
pCommandCharacteristic->getCallbacks()->onSubscribe(pCommandCharacteristic, *(NimBLEConnInfo*)&desc, 0);
|
||||||
|
pRecvFwCharacteristic->getCallbacks()->onSubscribe(pRecvFwCharacteristic, *(NimBLEConnInfo*)&desc, 0);
|
||||||
blufi_security_deinit();
|
blufi_security_deinit();
|
||||||
esp_blufi_adv_start();
|
esp_blufi_adv_start();
|
||||||
break;
|
break;
|
||||||
@@ -386,7 +399,7 @@ bool startBlufi() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NimBLEDevice::getInitialized()) {
|
if (NimBLEDevice::isInitialized()) {
|
||||||
NimBLEDevice::deinit(true);
|
NimBLEDevice::deinit(true);
|
||||||
delay(50);
|
delay(50);
|
||||||
}
|
}
|
||||||
@@ -401,7 +414,14 @@ bool startBlufi() {
|
|||||||
}
|
}
|
||||||
snprintf(advName, sizeof(advName), Gateway_Short_Name "_%02X%02X%02X%02X%02X%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
snprintf(advName, sizeof(advName), Gateway_Short_Name "_%02X%02X%02X%02X%02X%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||||
NimBLEDevice::init(advName);
|
NimBLEDevice::init(advName);
|
||||||
|
NimBLEDevice::setMTU(517);
|
||||||
|
NimBLEDevice::createServer(); // this initializes the GATT server so we need to reset it for blufi to init
|
||||||
|
ble_gatts_reset();
|
||||||
esp_blufi_gatt_svr_init();
|
esp_blufi_gatt_svr_init();
|
||||||
|
pNimBLEOta = new NimBLEOta();
|
||||||
|
NimBLEService* pNimBLEOtaSvc = pNimBLEOta->start();
|
||||||
|
pCommandCharacteristic = pNimBLEOtaSvc->getCharacteristic(NimBLEUUID((uint16_t)0x8022));
|
||||||
|
pRecvFwCharacteristic = pNimBLEOtaSvc->getCharacteristic(NimBLEUUID((uint16_t)0x8020));
|
||||||
ble_gatts_start();
|
ble_gatts_start();
|
||||||
Log.notice(F("BLUFI started" CR));
|
Log.notice(F("BLUFI started" CR));
|
||||||
return esp_blufi_profile_init() == ESP_OK;
|
return esp_blufi_profile_init() == ESP_OK;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ public:
|
|||||||
TaskHandle_t m_taskHandle = nullptr;
|
TaskHandle_t m_taskHandle = nullptr;
|
||||||
zBLEConnect(NimBLEAddress& addr) {
|
zBLEConnect(NimBLEAddress& addr) {
|
||||||
m_pClient = NimBLEDevice::createClient(addr);
|
m_pClient = NimBLEDevice::createClient(addr);
|
||||||
m_pClient->setConnectTimeout(5);
|
m_pClient->setConnectTimeout(5000);
|
||||||
}
|
}
|
||||||
virtual ~zBLEConnect() { NimBLEDevice::deleteClient(m_pClient); }
|
virtual ~zBLEConnect() { NimBLEDevice::deleteClient(m_pClient); }
|
||||||
virtual bool writeData(BLEAction* action);
|
virtual bool writeData(BLEAction* action);
|
||||||
|
|||||||
+24
-32
@@ -44,11 +44,12 @@ bool zBLEConnect::writeData(BLEAction* action) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::vector<uint8_t> buf;
|
std::vector<uint8_t> buf;
|
||||||
|
buf.reserve(len / 2);
|
||||||
for (auto i = 0; i < len; i += 2) {
|
for (auto i = 0; i < len; i += 2) {
|
||||||
std::string temp = action->value.substr(i, 2);
|
char sVal[3] = {action->value[i], action->value[i + 1], 0};
|
||||||
buf.push_back((uint8_t)strtoul(temp.c_str(), nullptr, 16));
|
buf.push_back((uint8_t)strtoul(sVal, nullptr, 16));
|
||||||
}
|
}
|
||||||
return pChar->writeValue((const uint8_t*)&buf[0], buf.size(), !pChar->canWriteNoResponse());
|
return pChar->writeValue(&buf[0], buf.size(), !pChar->canWriteNoResponse());
|
||||||
}
|
}
|
||||||
case BLE_VAL_INT:
|
case BLE_VAL_INT:
|
||||||
return pChar->writeValue(strtol(action->value.c_str(), nullptr, 0), !pChar->canWriteNoResponse());
|
return pChar->writeValue(strtol(action->value.c_str(), nullptr, 0), !pChar->canWriteNoResponse());
|
||||||
@@ -80,13 +81,13 @@ bool zBLEConnect::processActions(std::vector<BLEAction>& actions) {
|
|||||||
if (NimBLEAddress(it.addr) == m_pClient->getPeerAddress()) {
|
if (NimBLEAddress(it.addr) == m_pClient->getPeerAddress()) {
|
||||||
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
||||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||||
BLEdata["id"] = it.addr;
|
BLEdata["id"] = m_pClient->getPeerAddress().toString().c_str();
|
||||||
BLEdata["service"] = it.service.toString();
|
BLEdata["service"] = it.service.toString();
|
||||||
BLEdata["characteristic"] = it.characteristic.toString();
|
BLEdata["characteristic"] = it.characteristic.toString();
|
||||||
|
|
||||||
if (it.write) {
|
if (it.write) {
|
||||||
Log.trace(F("processing BLE write" CR));
|
Log.trace(F("processing BLE write" CR));
|
||||||
BLEdata["write"] = it.value;
|
BLEdata["write"] = std::string(it.value);
|
||||||
result = writeData(&it);
|
result = writeData(&it);
|
||||||
} else {
|
} else {
|
||||||
Log.trace(F("processing BLE read" CR));
|
Log.trace(F("processing BLE read" CR));
|
||||||
@@ -94,9 +95,7 @@ bool zBLEConnect::processActions(std::vector<BLEAction>& actions) {
|
|||||||
if (result) {
|
if (result) {
|
||||||
switch (it.value_type) {
|
switch (it.value_type) {
|
||||||
case BLE_VAL_HEX: {
|
case BLE_VAL_HEX: {
|
||||||
char* pHex = NimBLEUtils::buildHexData(nullptr, (uint8_t*)it.value.c_str(), it.value.length());
|
BLEdata["read"] = NimBLEUtils::dataToHexString(it.value.data(), it.value.size());
|
||||||
BLEdata["read"] = pHex;
|
|
||||||
free(pHex);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case BLE_VAL_INT: {
|
case BLE_VAL_INT: {
|
||||||
@@ -141,19 +140,18 @@ void LYWSD03MMC_connect::notifyCB(NimBLERemoteCharacteristic* pChar, uint8_t* pD
|
|||||||
Log.trace(F("Device identified creating BLE buffer" CR));
|
Log.trace(F("Device identified creating BLE buffer" CR));
|
||||||
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
||||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||||
String mac_address = m_pClient->getPeerAddress().toString().c_str();
|
auto mac_addr = m_pClient->getPeerAddress().toString().c_str();
|
||||||
mac_address.toUpperCase();
|
|
||||||
for (std::vector<BLEdevice*>::iterator it = devices.begin(); it != devices.end(); ++it) {
|
for (std::vector<BLEdevice*>::iterator it = devices.begin(); it != devices.end(); ++it) {
|
||||||
BLEdevice* p = *it;
|
BLEdevice* p = *it;
|
||||||
if ((strcmp(p->macAdr, (char*)mac_address.c_str()) == 0)) {
|
if ((strcmp(p->macAdr, mac_addr) == 0)) {
|
||||||
if (p->sensorModel_id == BLEconectable::id::LYWSD03MMC)
|
if (p->sensorModel_id == BLEconectable::id::LYWSD03MMC)
|
||||||
BLEdata["model"] = "LYWSD03MMC";
|
BLEdata["model"] = "LYWSD03MMC";
|
||||||
else if (p->sensorModel_id == BLEconectable::id::MHO_C401)
|
else if (p->sensorModel_id == BLEconectable::id::MHO_C401)
|
||||||
BLEdata["model"] = "MHO-C401";
|
BLEdata["model"] = "MHO-C401";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BLEdata["id"] = (char*)mac_address.c_str();
|
BLEdata["id"] = mac_addr;
|
||||||
Log.trace(F("Device identified in CB: %s" CR), (char*)mac_address.c_str());
|
Log.trace(F("Device identified in CB: %s" CR), mac_addr);
|
||||||
BLEdata["tempc"] = (float)((pData[0] | (pData[1] << 8)) * 0.01);
|
BLEdata["tempc"] = (float)((pData[0] | (pData[1] << 8)) * 0.01);
|
||||||
BLEdata["tempf"] = (float)(convertTemp_CtoF((pData[0] | (pData[1] << 8)) * 0.01));
|
BLEdata["tempf"] = (float)(convertTemp_CtoF((pData[0] | (pData[1] << 8)) * 0.01));
|
||||||
BLEdata["hum"] = (float)(pData[2]);
|
BLEdata["hum"] = (float)(pData[2]);
|
||||||
@@ -212,11 +210,10 @@ void DT24_connect::notifyCB(NimBLERemoteCharacteristic* pChar, uint8_t* pData, s
|
|||||||
Log.trace(F("Device identified creating BLE buffer" CR));
|
Log.trace(F("Device identified creating BLE buffer" CR));
|
||||||
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
||||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||||
String mac_address = m_pClient->getPeerAddress().toString().c_str();
|
auto mac_address = m_pClient->getPeerAddress().toString().c_str();
|
||||||
mac_address.toUpperCase();
|
|
||||||
BLEdata["model"] = "DT24";
|
BLEdata["model"] = "DT24";
|
||||||
BLEdata["id"] = (char*)mac_address.c_str();
|
BLEdata["id"] = mac_address;
|
||||||
Log.trace(F("Device identified in CB: %s" CR), (char*)mac_address.c_str());
|
Log.trace(F("Device identified in CB: %s" CR), mac_address);
|
||||||
BLEdata["volt"] = (float)(((m_data[4] * 256 * 256) + (m_data[5] * 256) + m_data[6]) / 10.0);
|
BLEdata["volt"] = (float)(((m_data[4] * 256 * 256) + (m_data[5] * 256) + m_data[6]) / 10.0);
|
||||||
BLEdata["current"] = (float)(((m_data[7] * 256 * 256) + (m_data[8] * 256) + m_data[9]) / 1000.0);
|
BLEdata["current"] = (float)(((m_data[7] * 256 * 256) + (m_data[8] * 256) + m_data[9]) / 1000.0);
|
||||||
BLEdata["power"] = (float)(((m_data[10] * 256 * 256) + (m_data[11] * 256) + m_data[12]) / 10.0);
|
BLEdata["power"] = (float)(((m_data[10] * 256 * 256) + (m_data[11] * 256) + m_data[12]) / 10.0);
|
||||||
@@ -269,10 +266,8 @@ void BM2_connect::notifyCB(NimBLERemoteCharacteristic* pChar, uint8_t* pData, si
|
|||||||
Log.trace(F("Device identified creating BLE buffer" CR));
|
Log.trace(F("Device identified creating BLE buffer" CR));
|
||||||
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
||||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||||
String mac_address = m_pClient->getPeerAddress().toString().c_str();
|
|
||||||
mac_address.toUpperCase();
|
|
||||||
BLEdata["model"] = "BM2 Battery Monitor";
|
BLEdata["model"] = "BM2 Battery Monitor";
|
||||||
BLEdata["id"] = (char*)mac_address.c_str();
|
BLEdata["id"] = m_pClient->getPeerAddress().toString().c_str();
|
||||||
mbedtls_aes_context aes;
|
mbedtls_aes_context aes;
|
||||||
mbedtls_aes_init(&aes);
|
mbedtls_aes_init(&aes);
|
||||||
unsigned char output[16];
|
unsigned char output[16];
|
||||||
@@ -356,10 +351,8 @@ void HHCCJCY01HHCC_connect::publishData() {
|
|||||||
batteryValue = val2[0];
|
batteryValue = val2[0];
|
||||||
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
||||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||||
String mac_address = m_pClient->getPeerAddress().toString().c_str();
|
|
||||||
mac_address.toUpperCase();
|
|
||||||
BLEdata["model"] = "HHCCJCY01HHCC";
|
BLEdata["model"] = "HHCCJCY01HHCC";
|
||||||
BLEdata["id"] = (char*)mac_address.c_str();
|
BLEdata["id"] = m_pClient->getPeerAddress().toString().c_str();
|
||||||
BLEdata["batt"] = (int)batteryValue;
|
BLEdata["batt"] = (int)batteryValue;
|
||||||
buildTopicFromId(BLEdata, subjectBTtoMQTT);
|
buildTopicFromId(BLEdata, subjectBTtoMQTT);
|
||||||
enqueueJsonObject(BLEdata, QueueSemaphoreTimeOutTask);
|
enqueueJsonObject(BLEdata, QueueSemaphoreTimeOutTask);
|
||||||
@@ -383,11 +376,10 @@ void XMWSDJ04MMC_connect::notifyCB(NimBLERemoteCharacteristic* pChar, uint8_t* p
|
|||||||
Log.trace(F("Device identified creating BLE buffer" CR));
|
Log.trace(F("Device identified creating BLE buffer" CR));
|
||||||
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
DynamicJsonDocument BLEdataBuffer(JSON_MSG_BUFFER);
|
||||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||||
String mac_address = m_pClient->getPeerAddress().toString().c_str();
|
auto mac_address = m_pClient->getPeerAddress().toString().c_str();
|
||||||
mac_address.toUpperCase();
|
|
||||||
BLEdata["model"] = "XMWSDJ04MMC";
|
BLEdata["model"] = "XMWSDJ04MMC";
|
||||||
BLEdata["id"] = (char*)mac_address.c_str();
|
BLEdata["id"] = mac_address;
|
||||||
Log.trace(F("Device identified in CB: %s" CR), (char*)mac_address.c_str());
|
Log.trace(F("Device identified in CB: %s" CR), mac_address);
|
||||||
BLEdata["tempc"] = (float)((pData[0] | (pData[1] << 8)) * 0.1);
|
BLEdata["tempc"] = (float)((pData[0] | (pData[1] << 8)) * 0.1);
|
||||||
BLEdata["tempf"] = (float)(convertTemp_CtoF((pData[0] | (pData[1] << 8)) * 0.1));
|
BLEdata["tempf"] = (float)(convertTemp_CtoF((pData[0] | (pData[1] << 8)) * 0.1));
|
||||||
BLEdata["hum"] = (float)((pData[2] | (pData[3] << 8)) * 0.1);
|
BLEdata["hum"] = (float)((pData[2] | (pData[3] << 8)) * 0.1);
|
||||||
@@ -460,7 +452,7 @@ bool SBS1_connect::processActions(std::vector<BLEAction>& actions) {
|
|||||||
bool result = false;
|
bool result = false;
|
||||||
if (actions.size() > 0) {
|
if (actions.size() > 0) {
|
||||||
for (auto& it : actions) {
|
for (auto& it : actions) {
|
||||||
if (NimBLEAddress(it.addr) == m_pClient->getPeerAddress()) {
|
if (it.addr == m_pClient->getPeerAddress()) {
|
||||||
NimBLERemoteCharacteristic* pChar = getCharacteristic(serviceUUID, charUUID);
|
NimBLERemoteCharacteristic* pChar = getCharacteristic(serviceUUID, charUUID);
|
||||||
NimBLERemoteCharacteristic* pNotifyChar = getCharacteristic(serviceUUID, notifyCharUUID);
|
NimBLERemoteCharacteristic* pNotifyChar = getCharacteristic(serviceUUID, notifyCharUUID);
|
||||||
|
|
||||||
@@ -497,8 +489,8 @@ bool SBS1_connect::processActions(std::vector<BLEAction>& actions) {
|
|||||||
if (result || it.ttl <= 1) {
|
if (result || it.ttl <= 1) {
|
||||||
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
||||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||||
BLEdata["id"] = it.addr;
|
BLEdata["id"] = m_pClient->getPeerAddress().toString().c_str();
|
||||||
BLEdata["state"] = it.value;
|
BLEdata["state"] = std::string(it.value);
|
||||||
buildTopicFromId(BLEdata, subjectBTtoMQTT);
|
buildTopicFromId(BLEdata, subjectBTtoMQTT);
|
||||||
enqueueJsonObject(BLEdata, QueueSemaphoreTimeOutTask);
|
enqueueJsonObject(BLEdata, QueueSemaphoreTimeOutTask);
|
||||||
}
|
}
|
||||||
@@ -592,7 +584,7 @@ bool SBBT_connect::processActions(std::vector<BLEAction>& actions) {
|
|||||||
if (result || it.ttl <= 1) {
|
if (result || it.ttl <= 1) {
|
||||||
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
||||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||||
BLEdata["id"] = it.addr;
|
BLEdata["id"] = it.addr.toString().c_str();
|
||||||
if (value != -99 || value != -1)
|
if (value != -99 || value != -1)
|
||||||
BLEdata["tilt"] = value;
|
BLEdata["tilt"] = value;
|
||||||
if (value == 50) {
|
if (value == 50) {
|
||||||
@@ -694,7 +686,7 @@ bool SBCU_connect::processActions(std::vector<BLEAction>& actions) {
|
|||||||
if (result || it.ttl <= 1) {
|
if (result || it.ttl <= 1) {
|
||||||
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
||||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||||
BLEdata["id"] = it.addr;
|
BLEdata["id"] = it.addr.toString().c_str();
|
||||||
if (value != -99 || value != -1)
|
if (value != -99 || value != -1)
|
||||||
BLEdata["position"] = value;
|
BLEdata["position"] = value;
|
||||||
buildTopicFromId(BLEdata, subjectBTtoMQTT);
|
buildTopicFromId(BLEdata, subjectBTtoMQTT);
|
||||||
|
|||||||
+26
-37
@@ -579,15 +579,15 @@ void XMWSDJ04MMCDiscovery(const char* mac, const char* sensorModel_id) {}
|
|||||||
//core on which the BLE detection task will run
|
//core on which the BLE detection task will run
|
||||||
static int taskCore = 0;
|
static int taskCore = 0;
|
||||||
|
|
||||||
class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks {
|
class ScanCallbacks : public NimBLEScanCallbacks {
|
||||||
void onResult(BLEAdvertisedDevice* advertisedDevice) {
|
void onResult(const NimBLEAdvertisedDevice* advertisedDevice) {
|
||||||
BLEAdvertisedDevice* ad = new BLEAdvertisedDevice(*advertisedDevice);
|
NimBLEAdvertisedDevice* ad = new NimBLEAdvertisedDevice(*advertisedDevice);
|
||||||
if (xQueueSend(BLEQueue, &ad, 0) != pdTRUE) {
|
if (xQueueSend(BLEQueue, &ad, 0) != pdTRUE) {
|
||||||
Log.error(F("BLEQueue full" CR));
|
Log.error(F("BLEQueue full" CR));
|
||||||
delete (ad);
|
delete (ad);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
} scanCallbacks;
|
||||||
|
|
||||||
std::string convertServiceData(std::string deviceServiceData) {
|
std::string convertServiceData(std::string deviceServiceData) {
|
||||||
int serviceDataLength = (int)deviceServiceData.length();
|
int serviceDataLength = (int)deviceServiceData.length();
|
||||||
@@ -624,13 +624,7 @@ void procBLETask(void* pvParameters) {
|
|||||||
Log.trace(F("Creating BLE buffer" CR));
|
Log.trace(F("Creating BLE buffer" CR));
|
||||||
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
||||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||||
std::string mac_address = advertisedDevice->getAddress().toString();
|
BLEdata["id"] = advertisedDevice->getAddress().toString();
|
||||||
|
|
||||||
for (char& c : mac_address) {
|
|
||||||
c = std::toupper(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
BLEdata["id"] = mac_address;
|
|
||||||
BLEdata["mac_type"] = advertisedDevice->getAddress().getType();
|
BLEdata["mac_type"] = advertisedDevice->getAddress().getType();
|
||||||
BLEdata["adv_type"] = advertisedDevice->getAdvType();
|
BLEdata["adv_type"] = advertisedDevice->getAdvType();
|
||||||
Log.notice(F("BT Device detected: %s" CR), BLEdata["id"].as<const char*>());
|
Log.notice(F("BT Device detected: %s" CR), BLEdata["id"].as<const char*>());
|
||||||
@@ -646,16 +640,14 @@ void procBLETask(void* pvParameters) {
|
|||||||
if (advertisedDevice->haveName())
|
if (advertisedDevice->haveName())
|
||||||
BLEdata["name"] = (char*)advertisedDevice->getName().c_str();
|
BLEdata["name"] = (char*)advertisedDevice->getName().c_str();
|
||||||
if (advertisedDevice->haveManufacturerData()) {
|
if (advertisedDevice->haveManufacturerData()) {
|
||||||
char* manufacturerdata = BLEUtils::buildHexData(NULL, (uint8_t*)advertisedDevice->getManufacturerData().data(), advertisedDevice->getManufacturerData().length());
|
BLEdata["manufacturerdata"] = NimBLEUtils::dataToHexString((uint8_t*)advertisedDevice->getManufacturerData().data(),
|
||||||
BLEdata["manufacturerdata"] = manufacturerdata;
|
advertisedDevice->getManufacturerData().length());
|
||||||
free(manufacturerdata);
|
|
||||||
}
|
}
|
||||||
if (advertisedDevice->haveRSSI())
|
|
||||||
BLEdata["rssi"] = (int)advertisedDevice->getRSSI();
|
BLEdata["rssi"] = (int)advertisedDevice->getRSSI();
|
||||||
if (advertisedDevice->haveTXPower())
|
if (advertisedDevice->haveTXPower())
|
||||||
BLEdata["txpower"] = (int8_t)advertisedDevice->getTXPower();
|
BLEdata["txpower"] = (int8_t)advertisedDevice->getTXPower();
|
||||||
if (advertisedDevice->haveRSSI() && BTConfig.presenceEnable) {
|
if (BTConfig.presenceEnable) {
|
||||||
hass_presence(BLEdata); // this device has an rssi and with either only sensors or not we can use it for home assistant room presence component
|
hass_presence(BLEdata); // with either only sensors or not we can use it for home assistant room presence component
|
||||||
}
|
}
|
||||||
if (advertisedDevice->haveServiceData()) {
|
if (advertisedDevice->haveServiceData()) {
|
||||||
int serviceDataCount = advertisedDevice->getServiceDataCount();
|
int serviceDataCount = advertisedDevice->getServiceDataCount();
|
||||||
@@ -695,8 +687,7 @@ void BLEscan() {
|
|||||||
}
|
}
|
||||||
Log.notice(F("Scan begin" CR));
|
Log.notice(F("Scan begin" CR));
|
||||||
BLEScan* pBLEScan = BLEDevice::getScan();
|
BLEScan* pBLEScan = BLEDevice::getScan();
|
||||||
MyAdvertisedDeviceCallbacks myCallbacks;
|
pBLEScan->setScanCallbacks(&scanCallbacks);
|
||||||
pBLEScan->setAdvertisedDeviceCallbacks(&myCallbacks);
|
|
||||||
if ((millis() > (timeBetweenActive + BTConfig.intervalActiveScan) || BTConfig.intervalActiveScan == BTConfig.BLEinterval) && !BTConfig.forcePassiveScan) {
|
if ((millis() > (timeBetweenActive + BTConfig.intervalActiveScan) || BTConfig.intervalActiveScan == BTConfig.BLEinterval) && !BTConfig.forcePassiveScan) {
|
||||||
pBLEScan->setActiveScan(true);
|
pBLEScan->setActiveScan(true);
|
||||||
timeBetweenActive = millis();
|
timeBetweenActive = millis();
|
||||||
@@ -705,7 +696,7 @@ void BLEscan() {
|
|||||||
}
|
}
|
||||||
pBLEScan->setInterval(BLEScanInterval);
|
pBLEScan->setInterval(BLEScanInterval);
|
||||||
pBLEScan->setWindow(BLEScanWindow);
|
pBLEScan->setWindow(BLEScanWindow);
|
||||||
BLEScanResults foundDevices = pBLEScan->start(BTConfig.scanDuration / 1000, false);
|
NimBLEScanResults foundDevices = pBLEScan->getResults(BTConfig.scanDuration, false);
|
||||||
if (foundDevices.getCount())
|
if (foundDevices.getCount())
|
||||||
scanCount++;
|
scanCount++;
|
||||||
Log.notice(F("Found %d devices, scan number %d end" CR), foundDevices.getCount(), scanCount);
|
Log.notice(F("Found %d devices, scan number %d end" CR), foundDevices.getCount(), scanCount);
|
||||||
@@ -768,7 +759,7 @@ void BLEconnect() {
|
|||||||
for (auto& it : BLEactions) {
|
for (auto& it : BLEactions) {
|
||||||
if (!it.complete && --it.ttl) {
|
if (!it.complete && --it.ttl) {
|
||||||
swap.push_back(it);
|
swap.push_back(it);
|
||||||
} else if (memcmp(it.addr, p->macAdr, sizeof(it.addr)) == 0) {
|
} else if (it.addr == NimBLEAddress(p->macAdr, p->macType)) {
|
||||||
if (p->sensorModel_id != BLEconectable::id::DT24_BLE &&
|
if (p->sensorModel_id != BLEconectable::id::DT24_BLE &&
|
||||||
p->sensorModel_id != TheengsDecoder::BLE_ID_NUM::HHCCJCY01HHCC &&
|
p->sensorModel_id != TheengsDecoder::BLE_ID_NUM::HHCCJCY01HHCC &&
|
||||||
p->sensorModel_id != BLEconectable::id::LYWSD03MMC &&
|
p->sensorModel_id != BLEconectable::id::LYWSD03MMC &&
|
||||||
@@ -851,7 +842,9 @@ void coreTask(void* pvParameters) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setupBTTasksAndBLE() {
|
void setupBTTasksAndBLE() {
|
||||||
|
# ifdef CONFIG_BTDM_BLE_SCAN_DUPL
|
||||||
BLEDevice::setScanDuplicateCacheSize(BLEScanDuplicateCacheSize);
|
BLEDevice::setScanDuplicateCacheSize(BLEScanDuplicateCacheSize);
|
||||||
|
# endif
|
||||||
BLEDevice::init("");
|
BLEDevice::init("");
|
||||||
xTaskCreatePinnedToCore(
|
xTaskCreatePinnedToCore(
|
||||||
procBLETask, /* Function to implement the task */
|
procBLETask, /* Function to implement the task */
|
||||||
@@ -1363,7 +1356,7 @@ void immediateBTAction(void* pvParameters) {
|
|||||||
if (xSemaphoreTake(semaphoreCreateOrUpdateDevice, pdMS_TO_TICKS(QueueSemaphoreTimeOutTask)) == pdTRUE) {
|
if (xSemaphoreTake(semaphoreCreateOrUpdateDevice, pdMS_TO_TICKS(QueueSemaphoreTimeOutTask)) == pdTRUE) {
|
||||||
// swap the vectors so only this device is processed
|
// swap the vectors so only this device is processed
|
||||||
std::vector<BLEdevice*> dev_swap;
|
std::vector<BLEdevice*> dev_swap;
|
||||||
dev_swap.push_back(getDeviceByMac(BLEactions.back().addr));
|
dev_swap.push_back(getDeviceByMac(BLEactions.back().addr.toString().c_str()));
|
||||||
std::swap(devices, dev_swap);
|
std::swap(devices, dev_swap);
|
||||||
|
|
||||||
std::vector<BLEAction> act_swap;
|
std::vector<BLEAction> act_swap;
|
||||||
@@ -1393,7 +1386,7 @@ void immediateBTAction(void* pvParameters) {
|
|||||||
gatewayState = GatewayState::ERROR;
|
gatewayState = GatewayState::ERROR;
|
||||||
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
StaticJsonDocument<JSON_MSG_BUFFER> BLEdataBuffer;
|
||||||
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
JsonObject BLEdata = BLEdataBuffer.to<JsonObject>();
|
||||||
BLEdata["id"] = BLEactions.back().addr;
|
BLEdata["id"] = BLEactions.back().addr.toString().c_str();
|
||||||
BLEdata["success"] = false;
|
BLEdata["success"] = false;
|
||||||
buildTopicFromId(BLEdata, subjectBTtoMQTT);
|
buildTopicFromId(BLEdata, subjectBTtoMQTT);
|
||||||
enqueueJsonObject(BLEdata, QueueSemaphoreTimeOutTask);
|
enqueueJsonObject(BLEdata, QueueSemaphoreTimeOutTask);
|
||||||
@@ -1423,9 +1416,8 @@ void KnownBTActions(JsonObject& BTdata) {
|
|||||||
gatewayState = GatewayState::ERROR;
|
gatewayState = GatewayState::ERROR;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
BLEAction action;
|
|
||||||
memset(&action, 0, sizeof(BLEAction));
|
BLEAction action{};
|
||||||
strcpy(action.addr, (const char*)BTdata["id"]);
|
|
||||||
action.write = true;
|
action.write = true;
|
||||||
action.ttl = 3;
|
action.ttl = 3;
|
||||||
bool res = false;
|
bool res = false;
|
||||||
@@ -1435,7 +1427,7 @@ void KnownBTActions(JsonObject& BTdata) {
|
|||||||
action.value_type = BLE_VAL_STRING;
|
action.value_type = BLE_VAL_STRING;
|
||||||
std::string val = BTdata["cmd"].as<std::string>(); // Fix #1694
|
std::string val = BTdata["cmd"].as<std::string>(); // Fix #1694
|
||||||
action.value = val;
|
action.value = val;
|
||||||
createOrUpdateDevice(action.addr, device_flags_connect,
|
createOrUpdateDevice(BTdata["id"].as<const char*>(), device_flags_connect,
|
||||||
TheengsDecoder::BLE_ID_NUM::SBS1, 1);
|
TheengsDecoder::BLE_ID_NUM::SBS1, 1);
|
||||||
res = true;
|
res = true;
|
||||||
}
|
}
|
||||||
@@ -1450,7 +1442,7 @@ void KnownBTActions(JsonObject& BTdata) {
|
|||||||
if (res) {
|
if (res) {
|
||||||
std::string val = BTdata["tilt"].as<std::string>(); // Fix #1694
|
std::string val = BTdata["tilt"].as<std::string>(); // Fix #1694
|
||||||
action.value = val;
|
action.value = val;
|
||||||
createOrUpdateDevice(action.addr, device_flags_connect,
|
createOrUpdateDevice(BTdata["id"].as<const char*>(), device_flags_connect,
|
||||||
TheengsDecoder::BLE_ID_NUM::SBBT, 1);
|
TheengsDecoder::BLE_ID_NUM::SBBT, 1);
|
||||||
}
|
}
|
||||||
} else if (BTdata["model_id"] == "W070160X") {
|
} else if (BTdata["model_id"] == "W070160X") {
|
||||||
@@ -1464,11 +1456,12 @@ void KnownBTActions(JsonObject& BTdata) {
|
|||||||
if (res) {
|
if (res) {
|
||||||
std::string val = BTdata["position"].as<std::string>(); // Fix #1694
|
std::string val = BTdata["position"].as<std::string>(); // Fix #1694
|
||||||
action.value = val;
|
action.value = val;
|
||||||
createOrUpdateDevice(action.addr, device_flags_connect,
|
createOrUpdateDevice(BTdata["id"].as<const char*>(), device_flags_connect,
|
||||||
TheengsDecoder::BLE_ID_NUM::SBCU, 1);
|
TheengsDecoder::BLE_ID_NUM::SBCU, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (res) {
|
if (res) {
|
||||||
|
action.addr = NimBLEAddress(BTdata["id"].as<std::string>(), 1);
|
||||||
BLEactions.push_back(action);
|
BLEactions.push_back(action);
|
||||||
startBTActionTask();
|
startBTActionTask();
|
||||||
} else {
|
} else {
|
||||||
@@ -1482,10 +1475,8 @@ void KnownBTActions(JsonObject& BTdata) {}
|
|||||||
# endif
|
# endif
|
||||||
|
|
||||||
void XtoBTAction(JsonObject& BTdata) {
|
void XtoBTAction(JsonObject& BTdata) {
|
||||||
BLEAction action;
|
BLEAction action{};
|
||||||
memset(&action, 0, sizeof(BLEAction));
|
|
||||||
action.ttl = BTdata.containsKey("ttl") ? (uint8_t)BTdata["ttl"] : 1;
|
action.ttl = BTdata.containsKey("ttl") ? (uint8_t)BTdata["ttl"] : 1;
|
||||||
action.addr_type = BTdata.containsKey("mac_type") ? BTdata["mac_type"].as<int>() : 0;
|
|
||||||
action.value_type = BLE_VAL_STRING;
|
action.value_type = BLE_VAL_STRING;
|
||||||
if (BTdata.containsKey("value_type")) {
|
if (BTdata.containsKey("value_type")) {
|
||||||
String vt = BTdata["value_type"];
|
String vt = BTdata["value_type"];
|
||||||
@@ -1508,7 +1499,7 @@ void XtoBTAction(JsonObject& BTdata) {
|
|||||||
BTdata.containsKey("ble_write_service") &&
|
BTdata.containsKey("ble_write_service") &&
|
||||||
BTdata.containsKey("ble_write_char") &&
|
BTdata.containsKey("ble_write_char") &&
|
||||||
BTdata.containsKey("ble_write_value")) {
|
BTdata.containsKey("ble_write_value")) {
|
||||||
strcpy(action.addr, (const char*)BTdata["ble_write_address"]);
|
action.addr = NimBLEAddress(BTdata["ble_write_address"].as<std::string>(), BTdata.containsKey("mac_type") ? BTdata["mac_type"].as<int>() : 0);
|
||||||
action.service = NimBLEUUID((const char*)BTdata["ble_write_service"]);
|
action.service = NimBLEUUID((const char*)BTdata["ble_write_service"]);
|
||||||
action.characteristic = NimBLEUUID((const char*)BTdata["ble_write_char"]);
|
action.characteristic = NimBLEUUID((const char*)BTdata["ble_write_char"]);
|
||||||
std::string val = BTdata["ble_write_value"].as<std::string>(); // Fix #1694
|
std::string val = BTdata["ble_write_value"].as<std::string>(); // Fix #1694
|
||||||
@@ -1518,7 +1509,7 @@ void XtoBTAction(JsonObject& BTdata) {
|
|||||||
} else if (BTdata.containsKey("ble_read_address") &&
|
} else if (BTdata.containsKey("ble_read_address") &&
|
||||||
BTdata.containsKey("ble_read_service") &&
|
BTdata.containsKey("ble_read_service") &&
|
||||||
BTdata.containsKey("ble_read_char")) {
|
BTdata.containsKey("ble_read_char")) {
|
||||||
strcpy(action.addr, (const char*)BTdata["ble_read_address"]);
|
action.addr = NimBLEAddress(BTdata["ble_read_address"].as<std::string>(), BTdata.containsKey("mac_type") ? BTdata["mac_type"].as<int>() : 0);
|
||||||
action.service = NimBLEUUID((const char*)BTdata["ble_read_service"]);
|
action.service = NimBLEUUID((const char*)BTdata["ble_read_service"]);
|
||||||
action.characteristic = NimBLEUUID((const char*)BTdata["ble_read_char"]);
|
action.characteristic = NimBLEUUID((const char*)BTdata["ble_read_char"]);
|
||||||
action.write = false;
|
action.write = false;
|
||||||
@@ -1527,9 +1518,7 @@ void XtoBTAction(JsonObject& BTdata) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
createOrUpdateDevice(action.addr, device_flags_connect,
|
createOrUpdateDevice(action.addr.toString().c_str(), device_flags_connect, UNKWNON_MODEL, action.addr.getType());
|
||||||
UNKWNON_MODEL,
|
|
||||||
action.addr_type);
|
|
||||||
|
|
||||||
BLEactions.push_back(action);
|
BLEactions.push_back(action);
|
||||||
if (BTdata.containsKey("immediate") && BTdata["immediate"].as<bool>()) {
|
if (BTdata.containsKey("immediate") && BTdata["immediate"].as<bool>()) {
|
||||||
|
|||||||
+3
-3
@@ -34,6 +34,7 @@ extern String stateBTMeasures(bool);
|
|||||||
|
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
# include "NimBLEDevice.h"
|
# include "NimBLEDevice.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*-----------BT TOPICS & COMPILATION PARAMETERS-----------*/
|
/*-----------BT TOPICS & COMPILATION PARAMETERS-----------*/
|
||||||
@@ -208,9 +209,8 @@ enum ble_val_type {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct BLEAction {
|
struct BLEAction {
|
||||||
std::string value;
|
NimBLEAttValue value;
|
||||||
char addr[18];
|
NimBLEAddress addr;
|
||||||
int addr_type;
|
|
||||||
NimBLEUUID service;
|
NimBLEUUID service;
|
||||||
NimBLEUUID characteristic;
|
NimBLEUUID characteristic;
|
||||||
bool write;
|
bool write;
|
||||||
|
|||||||
+2
-1
@@ -119,7 +119,7 @@ arduinolog = https://github.com/1technophile/Arduino-Log.git#f634509
|
|||||||
picomqtt = PicoMQTT@1.1.1
|
picomqtt = PicoMQTT@1.1.1
|
||||||
rc-switch = https://github.com/1technophile/rc-switch.git#98537e9
|
rc-switch = https://github.com/1technophile/rc-switch.git#98537e9
|
||||||
newremoteswitch = https://github.com/1technophile/NewRemoteSwitch.git#8eb980e
|
newremoteswitch = https://github.com/1technophile/NewRemoteSwitch.git#8eb980e
|
||||||
ble = https://github.com/h2zero/NimBLE-Arduino.git#1.4.1
|
ble = https://github.com/h2zero/NimBLE-Arduino.git#2.2.1
|
||||||
irremoteesp = IRremoteESP8266@2.8.5
|
irremoteesp = IRremoteESP8266@2.8.5
|
||||||
lora = https://github.com/sandeepmistry/arduino-LoRa.git#f4a1d27
|
lora = https://github.com/sandeepmistry/arduino-LoRa.git#f4a1d27
|
||||||
esppilight = ESPiLight@0.17.0
|
esppilight = ESPiLight@0.17.0
|
||||||
@@ -202,6 +202,7 @@ build_flags =
|
|||||||
'-DZmqttDiscovery="HADiscovery"'
|
'-DZmqttDiscovery="HADiscovery"'
|
||||||
'-DCONFIG_BT_NIMBLE_ROLE_PERIPHERAL_DISABLED'
|
'-DCONFIG_BT_NIMBLE_ROLE_PERIPHERAL_DISABLED'
|
||||||
'-DCONFIG_BT_NIMBLE_ROLE_BROADCASTER_DISABLED'
|
'-DCONFIG_BT_NIMBLE_ROLE_BROADCASTER_DISABLED'
|
||||||
|
'-DCONFIG_NIMBLE_CPP_ADDR_FMT_UPPERCASE'
|
||||||
'-DMQTTsetMQTT'
|
'-DMQTTsetMQTT'
|
||||||
'-DMQTT_HTTPS_FW_UPDATE'
|
'-DMQTT_HTTPS_FW_UPDATE'
|
||||||
;'-DCORE_DEBUG_LEVEL=4'
|
;'-DCORE_DEBUG_LEVEL=4'
|
||||||
|
|||||||
+1
-9
@@ -135,7 +135,7 @@ CONFIG_AUTOSTART_ARDUINO=y
|
|||||||
CONFIG_ARDUINO_RUN_CORE1=y
|
CONFIG_ARDUINO_RUN_CORE1=y
|
||||||
# CONFIG_ARDUINO_RUN_NO_AFFINITY is not set
|
# CONFIG_ARDUINO_RUN_NO_AFFINITY is not set
|
||||||
CONFIG_ARDUINO_RUNNING_CORE=1
|
CONFIG_ARDUINO_RUNNING_CORE=1
|
||||||
CONFIG_ARDUINO_LOOP_STACK_SIZE=8192
|
CONFIG_ARDUINO_LOOP_STACK_SIZE=17500
|
||||||
# CONFIG_ARDUINO_EVENT_RUN_CORE0 is not set
|
# CONFIG_ARDUINO_EVENT_RUN_CORE0 is not set
|
||||||
CONFIG_ARDUINO_EVENT_RUN_CORE1=y
|
CONFIG_ARDUINO_EVENT_RUN_CORE1=y
|
||||||
# CONFIG_ARDUINO_EVENT_RUN_NO_AFFINITY is not set
|
# CONFIG_ARDUINO_EVENT_RUN_NO_AFFINITY is not set
|
||||||
@@ -209,11 +209,3 @@ CONFIG_ARDUINO_SELECTIVE_Wire=y
|
|||||||
# CONFIG_ESP32_WIFI_IRAM_OPT is not set
|
# CONFIG_ESP32_WIFI_IRAM_OPT is not set
|
||||||
# CONFIG_ESP32_WIFI_RX_IRAM_OPT is not set
|
# CONFIG_ESP32_WIFI_RX_IRAM_OPT is not set
|
||||||
|
|
||||||
#
|
|
||||||
# SPI configuration
|
|
||||||
#
|
|
||||||
# CONFIG_SPI_MASTER_IN_IRAM is not set
|
|
||||||
# CONFIG_SPI_MASTER_ISR_IN_IRAM is not set
|
|
||||||
# CONFIG_SPI_SLAVE_IN_IRAM is not set
|
|
||||||
# CONFIG_SPI_SLAVE_ISR_IN_IRAM is not set
|
|
||||||
# end of SPI configuration
|
|
||||||
Reference in new issue
Block a user