diff --git a/arduino/libretuya/core/LibreTuyaAPI.cpp b/arduino/libretuya/core/LibreTuyaAPI.cpp index 48ce84d..b9e4448 100644 --- a/arduino/libretuya/core/LibreTuyaAPI.cpp +++ b/arduino/libretuya/core/LibreTuyaAPI.cpp @@ -108,6 +108,13 @@ const char *LibreTuya::getDeviceName() { return deviceName; } +/** + * @brief Get CPU frequency in MHz. + */ +uint32_t LibreTuya::getCpuFreqMHz() { + return getCpuFreq() / 1000000; +} + static uint8_t otaRunningIndex = 0; /** diff --git a/arduino/libretuya/core/LibreTuyaAPI.h b/arduino/libretuya/core/LibreTuyaAPI.h index 4d72540..337a339 100644 --- a/arduino/libretuya/core/LibreTuyaAPI.h +++ b/arduino/libretuya/core/LibreTuyaAPI.h @@ -70,6 +70,7 @@ class LibreTuya { ChipFamily getChipFamily(); const char *getChipFamilyName(); const char *getDeviceName(); + uint32_t getCpuFreqMHz(); uint8_t otaGetRunning(); uint8_t otaGetTarget(); bool otaRollback(); @@ -115,13 +116,13 @@ class LibreTuya { */ const char *getChipCoreType(); /** - * @brief Get CPU frequency in MHz. + * @brief Get CPU frequency in Hz. */ - uint32_t getCpuFreqMHz(); + uint32_t getCpuFreq(); /** * @brief Get CPU cycle count. */ - inline uint32_t getCycleCount() __attribute__((always_inline)); + uint32_t getCycleCount(); public: /* Memory management */ /** diff --git a/arduino/realtek-ambz/cores/arduino/LibreTuyaAPI.cpp b/arduino/realtek-ambz/cores/arduino/LibreTuyaAPI.cpp index 4d151ea..dfd2f25 100644 --- a/arduino/realtek-ambz/cores/arduino/LibreTuyaAPI.cpp +++ b/arduino/realtek-ambz/cores/arduino/LibreTuyaAPI.cpp @@ -42,11 +42,11 @@ const char *LibreTuya::getChipCoreType() { return "ARM Cortex-M4F"; } -uint32_t LibreTuya::getCpuFreqMHz() { - return CPU_ClkGet(false) / 1000000; +uint32_t LibreTuya::getCpuFreq() { + return CPU_ClkGet(false); } -inline uint32_t LibreTuya::getCycleCount() { +uint32_t LibreTuya::getCycleCount() { return microsecondsToClockCycles(micros()); }