1
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:
porta
2024-10-14 21:42:11 +03:00
committed by GitHub
parent 57c438d91a
commit 8a95cb8d6b
114 changed files with 4978 additions and 931 deletions

View File

@@ -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*
1 entry status name type params
2 Version + 77.1 77.2
3 Header + applications/services/bt/bt_service/bt.h
4 Header + applications/services/bt/bt_service/bt_keys_storage.h
5 Header + applications/services/cli/cli.h
1116 Function + furi_event_flag_wait uint32_t FuriEventFlag*, uint32_t, uint32_t, uint32_t
1117 Function + furi_event_loop_alloc FuriEventLoop*
1118 Function + furi_event_loop_free void FuriEventLoop*
1119 Function + furi_event_loop_is_subscribed _Bool FuriEventLoop*, FuriEventLoopObject*
1120 Function + furi_event_loop_pend_callback void FuriEventLoop*, FuriEventLoopPendingCallback, void*
1121 Function + furi_event_loop_run void FuriEventLoop*
1122 Function + furi_event_loop_stop void FuriEventLoop*
1373 Function + furi_hal_resources_get_ext_pin_number int32_t const GpioPin*
1374 Function - furi_hal_resources_init void
1375 Function - furi_hal_resources_init_early void
1376 Function + furi_hal_resources_pin_by_name const GpioPinRecord* const char*
1377 Function + furi_hal_resources_pin_by_number const GpioPinRecord* uint8_t
1378 Function - furi_hal_rtc_deinit_early void
1379 Function + furi_hal_rtc_get_boot_mode FuriHalRtcBootMode
1380 Function + furi_hal_rtc_get_datetime void DateTime*
2690 Function + text_input_get_view View* TextInput*
2691 Function + text_input_reset void TextInput*
2692 Function + text_input_set_header_text void TextInput*, const char*
2693 Function + text_input_set_minimum_length void TextInput*, size_t
2694 Function + text_input_set_result_callback void TextInput*, TextInputCallback, void*, char*, size_t, _Bool
2695 Function + text_input_set_validator void TextInput*, TextInputValidatorCallback, void*
2696 Function - tgamma double double
2765 Function + view_commit_model void View*, _Bool
2766 Function + view_dispatcher_add_view void ViewDispatcher*, uint32_t, View*
2767 Function + view_dispatcher_alloc ViewDispatcher*
2768 Function + view_dispatcher_alloc_ex ViewDispatcher* FuriEventLoop*
2769 Function + view_dispatcher_attach_to_gui void ViewDispatcher*, Gui*, ViewDispatcherType
2770 Function + view_dispatcher_enable_queue void ViewDispatcher*
2771 Function + view_dispatcher_free void ViewDispatcher*

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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*
1 entry status name type params
2 Version + 77.1 77.2
3 Header + applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h
4 Header + applications/services/bt/bt_service/bt.h
5 Header + applications/services/bt/bt_service/bt_keys_storage.h
1221 Function + furi_event_flag_wait uint32_t FuriEventFlag*, uint32_t, uint32_t, uint32_t
1222 Function + furi_event_loop_alloc FuriEventLoop*
1223 Function + furi_event_loop_free void FuriEventLoop*
1224 Function + furi_event_loop_is_subscribed _Bool FuriEventLoop*, FuriEventLoopObject*
1225 Function + furi_event_loop_pend_callback void FuriEventLoop*, FuriEventLoopPendingCallback, void*
1226 Function + furi_event_loop_run void FuriEventLoop*
1227 Function + furi_event_loop_stop void FuriEventLoop*
1537 Function + furi_hal_resources_get_ext_pin_number int32_t const GpioPin*
1538 Function - furi_hal_resources_init void
1539 Function - furi_hal_resources_init_early void
1540 Function + furi_hal_resources_pin_by_name const GpioPinRecord* const char*
1541 Function + furi_hal_resources_pin_by_number const GpioPinRecord* uint8_t
1542 Function + furi_hal_rfid_comp_set_callback void FuriHalRfidCompCallback, void*
1543 Function + furi_hal_rfid_comp_start void
1544 Function + furi_hal_rfid_comp_stop void
3534 Function + text_input_get_view View* TextInput*
3535 Function + text_input_reset void TextInput*
3536 Function + text_input_set_header_text void TextInput*, const char*
3537 Function + text_input_set_minimum_length void TextInput*, size_t
3538 Function + text_input_set_result_callback void TextInput*, TextInputCallback, void*, char*, size_t, _Bool
3539 Function + text_input_set_validator void TextInput*, TextInputValidatorCallback, void*
3540 Function - tgamma double double
3609 Function + view_commit_model void View*, _Bool
3610 Function + view_dispatcher_add_view void ViewDispatcher*, uint32_t, View*
3611 Function + view_dispatcher_alloc ViewDispatcher*
3612 Function + view_dispatcher_alloc_ex ViewDispatcher* FuriEventLoop*
3613 Function + view_dispatcher_attach_to_gui void ViewDispatcher*, Gui*, ViewDispatcherType
3614 Function + view_dispatcher_enable_queue void ViewDispatcher*
3615 Function + view_dispatcher_free void ViewDispatcher*

View File

@@ -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;
}

View File

@@ -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