From c91b188f96bb38e8a911e1acb08af92a423f0996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Mon, 20 Jun 2022 15:27:27 +0200 Subject: [PATCH] [beken-72xx] Fix Arduino delay(), fix reading heap size --- arduino/beken-72xx/cores/arduino/LibreTuyaAPI.cpp | 9 +++++++++ arduino/beken-72xx/cores/arduino/WVariant.h | 4 ++++ arduino/beken-72xx/cores/arduino/wiring.c | 5 ++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/arduino/beken-72xx/cores/arduino/LibreTuyaAPI.cpp b/arduino/beken-72xx/cores/arduino/LibreTuyaAPI.cpp index c500f27..a16ebb1 100644 --- a/arduino/beken-72xx/cores/arduino/LibreTuyaAPI.cpp +++ b/arduino/beken-72xx/cores/arduino/LibreTuyaAPI.cpp @@ -79,7 +79,16 @@ uint32_t LibreTuya::getRamSize() { } uint32_t LibreTuya::getHeapSize() { +#if configDYNAMIC_HEAP_SIZE + extern unsigned char _empty_ram; +#if CFG_SOC_NAME == SOC_BK7231N + return (0x00400000 + 192 * 1024) - (uint32_t)(&_empty_ram); +#else + return (0x00400000 + 256 * 1024) - (uint32_t)(&_empty_ram); +#endif +#else return configTOTAL_HEAP_SIZE; +#endif } uint32_t LibreTuya::getFreeHeap() { diff --git a/arduino/beken-72xx/cores/arduino/WVariant.h b/arduino/beken-72xx/cores/arduino/WVariant.h index eede287..50559f9 100644 --- a/arduino/beken-72xx/cores/arduino/WVariant.h +++ b/arduino/beken-72xx/cores/arduino/WVariant.h @@ -9,6 +9,10 @@ extern "C" { #include "sdk_extern.h" #include "sdk_mem.h" +// allow BDK use its own delay() and let Arduino code use delayMilliseconds() +void delayMilliseconds(unsigned long); +#define delay delayMilliseconds + #ifdef __cplusplus } // extern "C" #endif diff --git a/arduino/beken-72xx/cores/arduino/wiring.c b/arduino/beken-72xx/cores/arduino/wiring.c index 06345b2..a5f590f 100644 --- a/arduino/beken-72xx/cores/arduino/wiring.c +++ b/arduino/beken-72xx/cores/arduino/wiring.c @@ -4,10 +4,9 @@ #include #include -// TODO work out this conflicting with func/misc/target_util.c -/* void delay(unsigned long ms) { +void delayMilliseconds(unsigned long ms) { rtos_delay_milliseconds(ms); -} */ +} void delayMicroseconds(unsigned int us) {}