diff --git a/CHANGELOG.md b/CHANGELOG.md index 58b007daf..198629391 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file. - Support for ESP32-P4 rev.3 (#24146) - Support for Analog Gauges (#24153) - Support for MakeSkyBlue Solar Charger Energy Monitor (#24151) +- Berry `tasmota.micros()` to get time in microseconds ### Breaking Changed diff --git a/lib/libesp32/berry_tasmota/src/be_tasmota_lib.c b/lib/libesp32/berry_tasmota/src/be_tasmota_lib.c index 207ce91d4..6b70cbbd6 100644 --- a/lib/libesp32/berry_tasmota/src/be_tasmota_lib.c +++ b/lib/libesp32/berry_tasmota/src/be_tasmota_lib.c @@ -21,6 +21,7 @@ extern int l_publish_rule(bvm *vm); extern int l_cmd(bvm *vm); extern int l_getoption(bvm *vm); extern int l_millis(bvm *vm); +extern int l_micros(bvm *vm); extern int l_timereached(bvm *vm); extern int l_rtc(bvm *vm); extern int l_rtc_utc(bvm *vm); @@ -114,7 +115,8 @@ class be_class_tasmota (scope: global, name: Tasmota) { publish_rule, func(l_publish_rule) _cmd, func(l_cmd) get_option, func(l_getoption) - millis, func(l_millis) + millis, static_func(l_millis) + micros, static_func(l_micros) time_reached, func(l_timereached) rtc, static_func(l_rtc) rtc_utc, func(l_rtc_utc) diff --git a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino index 1534eb657..d33cdcd1d 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_52_3_berry_tasmota.ino @@ -119,10 +119,10 @@ extern "C" { int32_t l_millis(struct bvm *vm); int32_t l_millis(struct bvm *vm) { int32_t top = be_top(vm); // Get the number of arguments - if (top == 1 || (top == 2 && be_isint(vm, 2))) { // only 1 argument of type string accepted + if (top == 0 || (top == 1 && be_isint(vm, 1))) { // only 1 argument of type string accepted uint32_t delay = 0; if (top == 2) { - delay = be_toint(vm, 2); + delay = be_toint(vm, 1); } uint32_t ret_millis = millis() + delay; be_pushint(vm, ret_millis); @@ -131,6 +131,14 @@ extern "C" { be_raise(vm, kTypeError, nullptr); } + // Berry: tasmota.micros() -> int + // + int32_t l_micros(struct bvm *vm); + int32_t l_micros(struct bvm *vm) { + be_pushint(vm, micros()); + be_return(vm); // Return + } + // Berry: tasmota.get_option(index:int) -> int // int32_t l_getoption(struct bvm *vm);