mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2025-12-12 04:34:43 +04:00
[FL-3893] JS modules (#3841)
* feat: backport js_gpio from unleashed * feat: backport js_keyboard, TextInputModel::minimum_length from unleashed * fix: api version inconsistency * style: js_gpio * build: fix submodule ._ . * refactor: js_gpio * docs: type declarations for gpio * feat: gpio interrupts * fix: js_gpio freeing, resetting and minor stylistic changes * style: js_gpio * style: mlib array, fixme's * feat: js_gpio adc * feat: js_event_loop * docs: js_event_loop * feat: js_event_loop subscription cancellation * feat: js_event_loop + js_gpio integration * fix: js_event_loop memory leak * feat: stop event loop on back button * test: js: basic, math, event_loop * feat: js_event_loop queue * feat: js linkage to previously loaded plugins * build: fix ci errors * feat: js module ordered teardown * feat: js_gui_defer_free * feat: basic hourglass view * style: JS ASS (Argument Schema for Scripts) * fix: js_event_loop mem leaks and lifetime problems * fix: crashing test and pvs false positives * feat: mjs custom obj destructors, gui submenu view * refactor: yank js_gui_defer_free (yuck) * refactor: maybe_unsubscribe * empty_screen, docs, typing fix-ups * docs: navigation event & demo * feat: submenu setHeader * feat: text_input * feat: text_box * docs: text_box availability * ci: silence irrelevant pvs low priority warning * style: use furistring * style: _get_at -> _safe_get * fix: built-in module name assignment * feat: js_dialog; refactor, optimize: js_gui * docs: js_gui * ci: silence pvs warning: Memory allocation is infallible * style: fix storage spelling * feat: foreign pointer signature checks * feat: js_storage * docs: js_storage * fix: my unit test was breaking other tests ;_; * ci: fix ci? * Make doxygen happy * docs: flipper, math, notification, global * style: review suggestions * style: review fixups * fix: badusb demo script * docs: badusb * ci: add nofl * ci: make linter happy * Bump api version Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
entry,status,name,type,params
|
||||
Version,+,77.1,,
|
||||
Version,+,77.2,,
|
||||
Header,+,applications/services/bt/bt_service/bt.h,,
|
||||
Header,+,applications/services/bt/bt_service/bt_keys_storage.h,,
|
||||
Header,+,applications/services/cli/cli.h,,
|
||||
@@ -1116,6 +1116,7 @@ Function,+,furi_event_flag_set,uint32_t,"FuriEventFlag*, uint32_t"
|
||||
Function,+,furi_event_flag_wait,uint32_t,"FuriEventFlag*, uint32_t, uint32_t, uint32_t"
|
||||
Function,+,furi_event_loop_alloc,FuriEventLoop*,
|
||||
Function,+,furi_event_loop_free,void,FuriEventLoop*
|
||||
Function,+,furi_event_loop_is_subscribed,_Bool,"FuriEventLoop*, FuriEventLoopObject*"
|
||||
Function,+,furi_event_loop_pend_callback,void,"FuriEventLoop*, FuriEventLoopPendingCallback, void*"
|
||||
Function,+,furi_event_loop_run,void,FuriEventLoop*
|
||||
Function,+,furi_event_loop_stop,void,FuriEventLoop*
|
||||
@@ -1372,6 +1373,8 @@ Function,-,furi_hal_resources_deinit_early,void,
|
||||
Function,+,furi_hal_resources_get_ext_pin_number,int32_t,const GpioPin*
|
||||
Function,-,furi_hal_resources_init,void,
|
||||
Function,-,furi_hal_resources_init_early,void,
|
||||
Function,+,furi_hal_resources_pin_by_name,const GpioPinRecord*,const char*
|
||||
Function,+,furi_hal_resources_pin_by_number,const GpioPinRecord*,uint8_t
|
||||
Function,-,furi_hal_rtc_deinit_early,void,
|
||||
Function,+,furi_hal_rtc_get_boot_mode,FuriHalRtcBootMode,
|
||||
Function,+,furi_hal_rtc_get_datetime,void,DateTime*
|
||||
@@ -2687,6 +2690,7 @@ Function,+,text_input_get_validator_callback_context,void*,TextInput*
|
||||
Function,+,text_input_get_view,View*,TextInput*
|
||||
Function,+,text_input_reset,void,TextInput*
|
||||
Function,+,text_input_set_header_text,void,"TextInput*, const char*"
|
||||
Function,+,text_input_set_minimum_length,void,"TextInput*, size_t"
|
||||
Function,+,text_input_set_result_callback,void,"TextInput*, TextInputCallback, void*, char*, size_t, _Bool"
|
||||
Function,+,text_input_set_validator,void,"TextInput*, TextInputValidatorCallback, void*"
|
||||
Function,-,tgamma,double,double
|
||||
@@ -2761,6 +2765,7 @@ Function,+,view_allocate_model,void,"View*, ViewModelType, size_t"
|
||||
Function,+,view_commit_model,void,"View*, _Bool"
|
||||
Function,+,view_dispatcher_add_view,void,"ViewDispatcher*, uint32_t, View*"
|
||||
Function,+,view_dispatcher_alloc,ViewDispatcher*,
|
||||
Function,+,view_dispatcher_alloc_ex,ViewDispatcher*,FuriEventLoop*
|
||||
Function,+,view_dispatcher_attach_to_gui,void,"ViewDispatcher*, Gui*, ViewDispatcherType"
|
||||
Function,+,view_dispatcher_enable_queue,void,ViewDispatcher*
|
||||
Function,+,view_dispatcher_free,void,ViewDispatcher*
|
||||
|
||||
|
@@ -354,3 +354,19 @@ int32_t furi_hal_resources_get_ext_pin_number(const GpioPin* gpio) {
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
const GpioPinRecord* furi_hal_resources_pin_by_name(const char* name) {
|
||||
for(size_t i = 0; i < gpio_pins_count; i++) {
|
||||
const GpioPinRecord* record = &gpio_pins[i];
|
||||
if(strcasecmp(name, record->name) == 0) return record;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const GpioPinRecord* furi_hal_resources_pin_by_number(uint8_t number) {
|
||||
for(size_t i = 0; i < gpio_pins_count; i++) {
|
||||
const GpioPinRecord* record = &gpio_pins[i];
|
||||
if(record->number == number) return record;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -121,6 +121,26 @@ void furi_hal_resources_init(void);
|
||||
*/
|
||||
int32_t furi_hal_resources_get_ext_pin_number(const GpioPin* gpio);
|
||||
|
||||
/**
|
||||
* @brief Finds a pin by its name
|
||||
*
|
||||
* @param name case-insensitive pin name to look for (e.g. `"Pc3"`, `"pA4"`)
|
||||
*
|
||||
* @return a pointer to the corresponding `GpioPinRecord` if such a pin exists,
|
||||
* `NULL` otherwise.
|
||||
*/
|
||||
const GpioPinRecord* furi_hal_resources_pin_by_name(const char* name);
|
||||
|
||||
/**
|
||||
* @brief Finds a pin by its number
|
||||
*
|
||||
* @param name pin number to look for (e.g. `7`, `4`)
|
||||
*
|
||||
* @return a pointer to the corresponding `GpioPinRecord` if such a pin exists,
|
||||
* `NULL` otherwise.
|
||||
*/
|
||||
const GpioPinRecord* furi_hal_resources_pin_by_number(uint8_t number);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
entry,status,name,type,params
|
||||
Version,+,77.1,,
|
||||
Version,+,77.2,,
|
||||
Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,,
|
||||
Header,+,applications/services/bt/bt_service/bt.h,,
|
||||
Header,+,applications/services/bt/bt_service/bt_keys_storage.h,,
|
||||
@@ -1221,6 +1221,7 @@ Function,+,furi_event_flag_set,uint32_t,"FuriEventFlag*, uint32_t"
|
||||
Function,+,furi_event_flag_wait,uint32_t,"FuriEventFlag*, uint32_t, uint32_t, uint32_t"
|
||||
Function,+,furi_event_loop_alloc,FuriEventLoop*,
|
||||
Function,+,furi_event_loop_free,void,FuriEventLoop*
|
||||
Function,+,furi_event_loop_is_subscribed,_Bool,"FuriEventLoop*, FuriEventLoopObject*"
|
||||
Function,+,furi_event_loop_pend_callback,void,"FuriEventLoop*, FuriEventLoopPendingCallback, void*"
|
||||
Function,+,furi_event_loop_run,void,FuriEventLoop*
|
||||
Function,+,furi_event_loop_stop,void,FuriEventLoop*
|
||||
@@ -1536,6 +1537,8 @@ Function,-,furi_hal_resources_deinit_early,void,
|
||||
Function,+,furi_hal_resources_get_ext_pin_number,int32_t,const GpioPin*
|
||||
Function,-,furi_hal_resources_init,void,
|
||||
Function,-,furi_hal_resources_init_early,void,
|
||||
Function,+,furi_hal_resources_pin_by_name,const GpioPinRecord*,const char*
|
||||
Function,+,furi_hal_resources_pin_by_number,const GpioPinRecord*,uint8_t
|
||||
Function,+,furi_hal_rfid_comp_set_callback,void,"FuriHalRfidCompCallback, void*"
|
||||
Function,+,furi_hal_rfid_comp_start,void,
|
||||
Function,+,furi_hal_rfid_comp_stop,void,
|
||||
@@ -3531,6 +3534,7 @@ Function,+,text_input_get_validator_callback_context,void*,TextInput*
|
||||
Function,+,text_input_get_view,View*,TextInput*
|
||||
Function,+,text_input_reset,void,TextInput*
|
||||
Function,+,text_input_set_header_text,void,"TextInput*, const char*"
|
||||
Function,+,text_input_set_minimum_length,void,"TextInput*, size_t"
|
||||
Function,+,text_input_set_result_callback,void,"TextInput*, TextInputCallback, void*, char*, size_t, _Bool"
|
||||
Function,+,text_input_set_validator,void,"TextInput*, TextInputValidatorCallback, void*"
|
||||
Function,-,tgamma,double,double
|
||||
@@ -3605,6 +3609,7 @@ Function,+,view_allocate_model,void,"View*, ViewModelType, size_t"
|
||||
Function,+,view_commit_model,void,"View*, _Bool"
|
||||
Function,+,view_dispatcher_add_view,void,"ViewDispatcher*, uint32_t, View*"
|
||||
Function,+,view_dispatcher_alloc,ViewDispatcher*,
|
||||
Function,+,view_dispatcher_alloc_ex,ViewDispatcher*,FuriEventLoop*
|
||||
Function,+,view_dispatcher_attach_to_gui,void,"ViewDispatcher*, Gui*, ViewDispatcherType"
|
||||
Function,+,view_dispatcher_enable_queue,void,ViewDispatcher*
|
||||
Function,+,view_dispatcher_free,void,ViewDispatcher*
|
||||
|
||||
|
@@ -288,3 +288,19 @@ int32_t furi_hal_resources_get_ext_pin_number(const GpioPin* gpio) {
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
const GpioPinRecord* furi_hal_resources_pin_by_name(const char* name) {
|
||||
for(size_t i = 0; i < gpio_pins_count; i++) {
|
||||
const GpioPinRecord* record = &gpio_pins[i];
|
||||
if(strcasecmp(name, record->name) == 0) return record;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const GpioPinRecord* furi_hal_resources_pin_by_number(uint8_t number) {
|
||||
for(size_t i = 0; i < gpio_pins_count; i++) {
|
||||
const GpioPinRecord* record = &gpio_pins[i];
|
||||
if(record->number == number) return record;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -227,6 +227,26 @@ void furi_hal_resources_init(void);
|
||||
*/
|
||||
int32_t furi_hal_resources_get_ext_pin_number(const GpioPin* gpio);
|
||||
|
||||
/**
|
||||
* @brief Finds a pin by its name
|
||||
*
|
||||
* @param name case-insensitive pin name to look for (e.g. `"Pc3"`, `"pA4"`)
|
||||
*
|
||||
* @return a pointer to the corresponding `GpioPinRecord` if such a pin exists,
|
||||
* `NULL` otherwise.
|
||||
*/
|
||||
const GpioPinRecord* furi_hal_resources_pin_by_name(const char* name);
|
||||
|
||||
/**
|
||||
* @brief Finds a pin by its number
|
||||
*
|
||||
* @param name pin number to look for (e.g. `7`, `4`)
|
||||
*
|
||||
* @return a pointer to the corresponding `GpioPinRecord` if such a pin exists,
|
||||
* `NULL` otherwise.
|
||||
*/
|
||||
const GpioPinRecord* furi_hal_resources_pin_by_number(uint8_t number);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user