mirror of https://github.com/arendst/Tasmota.git
Berry add `display.dimmer()`
This commit is contained in:
parent
6dafe7cb60
commit
98ddcc6658
|
@ -333,6 +333,7 @@ extern const bcstring be_const_str_detect;
|
||||||
extern const bcstring be_const_str_detected_X20on_X20bus;
|
extern const bcstring be_const_str_detected_X20on_X20bus;
|
||||||
extern const bcstring be_const_str_digital_read;
|
extern const bcstring be_const_str_digital_read;
|
||||||
extern const bcstring be_const_str_digital_write;
|
extern const bcstring be_const_str_digital_write;
|
||||||
|
extern const bcstring be_const_str_dimmer;
|
||||||
extern const bcstring be_const_str_dirty;
|
extern const bcstring be_const_str_dirty;
|
||||||
extern const bcstring be_const_str_display;
|
extern const bcstring be_const_str_display;
|
||||||
extern const bcstring be_const_str_display_X2Eini;
|
extern const bcstring be_const_str_display_X2Eini;
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,18 @@
|
||||||
|
#include "be_constobj.h"
|
||||||
|
|
||||||
|
static be_define_const_map_slots(m_libdisplay_map) {
|
||||||
|
{ be_const_key(dimmer, -1), be_const_func(be_ntv_display_dimmer) },
|
||||||
|
{ be_const_key(start, 0), be_const_func(be_ntv_display_start) },
|
||||||
|
};
|
||||||
|
|
||||||
|
static be_define_const_map(
|
||||||
|
m_libdisplay_map,
|
||||||
|
2
|
||||||
|
);
|
||||||
|
|
||||||
|
static be_define_const_module(
|
||||||
|
m_libdisplay,
|
||||||
|
"display"
|
||||||
|
);
|
||||||
|
|
||||||
|
BE_EXPORT_VARIABLE be_define_const_native_module(display);
|
|
@ -9,21 +9,15 @@
|
||||||
|
|
||||||
#ifdef USE_DISPLAY
|
#ifdef USE_DISPLAY
|
||||||
|
|
||||||
// Tasmota specific
|
|
||||||
|
|
||||||
extern int be_ntv_display_start(bvm *vm);
|
extern int be_ntv_display_start(bvm *vm);
|
||||||
|
extern int be_ntv_display_dimmer(bvm *vm);
|
||||||
|
|
||||||
/********************************************************************
|
/* @const_object_info_begin
|
||||||
** Solidified module: display
|
module display (scope: global) {
|
||||||
********************************************************************/
|
start, func(be_ntv_display_start)
|
||||||
be_local_module(display,
|
dimmer, func(be_ntv_display_dimmer)
|
||||||
"display",
|
}
|
||||||
be_nested_map(1,
|
@const_object_info_end */
|
||||||
( (struct bmapnode*) &(const bmapnode[]) {
|
#include "be_fixed_display.h"
|
||||||
{ be_const_key(start, -1), be_const_func(be_ntv_display_start) },
|
|
||||||
}))
|
|
||||||
);
|
|
||||||
BE_EXPORT_VARIABLE be_define_const_native_module(display);
|
|
||||||
/********************************************************************/
|
|
||||||
|
|
||||||
#endif // USE_DISPLAY
|
#endif // USE_DISPLAY
|
||||||
|
|
|
@ -35,10 +35,8 @@ Renderer *Init_uDisplay(const char *desc);
|
||||||
*
|
*
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
int be_ntv_display_start(bvm *vm);
|
|
||||||
int be_ntv_display_start(bvm *vm) {
|
int be_ntv_display_start(bvm *vm) {
|
||||||
#ifdef USE_UNIVERSAL_DISPLAY
|
#ifdef USE_UNIVERSAL_DISPLAY
|
||||||
int32_t argc = be_top(vm); // Get the number of arguments
|
int32_t argc = be_top(vm); // Get the number of arguments
|
||||||
if (argc >= 1 && be_isstring(vm, 1)) {
|
if (argc >= 1 && be_isstring(vm, 1)) {
|
||||||
const char * desc = be_tostring(vm, 1);
|
const char * desc = be_tostring(vm, 1);
|
||||||
|
@ -53,9 +51,25 @@ extern "C" {
|
||||||
be_return(vm);
|
be_return(vm);
|
||||||
}
|
}
|
||||||
be_raise(vm, kTypeError, nullptr);
|
be_raise(vm, kTypeError, nullptr);
|
||||||
#else // USE_UNIVERSAL_DISPLAY
|
#else // USE_UNIVERSAL_DISPLAY
|
||||||
be_raise(vm, "internal_error", "universal display driver not present");
|
be_raise(vm, "internal_error", "universal display driver not present");
|
||||||
#endif // USE_UNIVERSAL_DISPLAY
|
#endif // USE_UNIVERSAL_DISPLAY
|
||||||
|
}
|
||||||
|
|
||||||
|
// `display.dimmer([dim:int]) -> int` sets the dimmer of display, value 0..100. If `0` then turn off display. If no arg, read the current value.
|
||||||
|
int be_ntv_display_dimmer(bvm *vm) {
|
||||||
|
int32_t argc = be_top(vm); // Get the number of arguments
|
||||||
|
int32_t dimmer;
|
||||||
|
if (argc >= 1) {
|
||||||
|
if (!be_isint(vm, 1)) { be_raise(vm, "type_error", "arg must be int"); }
|
||||||
|
dimmer = be_toint(vm, 1);
|
||||||
|
if ((dimmer < 0) || (dimmer > 100)) { be_raise(vm, "value_error", "value must be in range 0..100"); }
|
||||||
|
be_pop(vm, argc); // clear stack to avoid ripple errors in code called later
|
||||||
|
SetDisplayDimmer(dimmer);
|
||||||
|
ApplyDisplayDimmer();
|
||||||
|
}
|
||||||
|
be_pushint(vm, GetDisplayDimmer());
|
||||||
|
be_return(vm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue