diff --git a/applications/main/ibutton/application.fam b/applications/main/ibutton/application.fam index 06455aeb9..01c02ec23 100644 --- a/applications/main/ibutton/application.fam +++ b/applications/main/ibutton/application.fam @@ -12,20 +12,11 @@ App( fap_category="iButton", ) -App( - appid="ibutton_cli", - targets=["f7"], - apptype=FlipperAppType.PLUGIN, - entry_point="ibutton_cli_plugin_ep", - requires=["cli"], - sources=["ibutton_cli.c"], -) - App( appid="ibutton_start", apptype=FlipperAppType.STARTUP, targets=["f7"], entry_point="ibutton_on_system_start", - sources=["ibutton_start.c"], + sources=["ibutton_cli.c"], order=60, ) diff --git a/applications/main/ibutton/ibutton_cli.c b/applications/main/ibutton/ibutton_cli.c index dcac8f963..2be75cb75 100644 --- a/applications/main/ibutton/ibutton_cli.c +++ b/applications/main/ibutton/ibutton_cli.c @@ -8,6 +8,19 @@ #include #include +static void ibutton_cli(Cli* cli, FuriString* args, void* context); + +// app cli function +void ibutton_on_system_start(void) { +#ifdef SRV_CLI + Cli* cli = furi_record_open(RECORD_CLI); + cli_add_command(cli, "ikey", CliCommandFlagDefault, ibutton_cli, cli); + furi_record_close(RECORD_CLI); +#else + UNUSED(ibutton_cli); +#endif +} + static void ibutton_cli_print_usage(void) { printf("Usage:\r\n"); printf("ikey read\r\n"); @@ -18,7 +31,7 @@ static void ibutton_cli_print_usage(void) { printf("\tCyfral (2 bytes key_data)\r\n"); printf("\tMetakom (4 bytes key_data), must contain correct parity\r\n"); printf("\t are hex-formatted\r\n"); -} +}; static bool ibutton_cli_parse_key(iButtonProtocols* protocols, iButtonKey* key, FuriString* args) { bool result = false; @@ -111,7 +124,7 @@ static void ibutton_cli_read(Cli* cli) { ibutton_protocols_free(protocols); furi_event_flag_free(event); -} +}; typedef struct { FuriEventFlag* event; @@ -203,7 +216,7 @@ void ibutton_cli_emulate(Cli* cli, FuriString* args) { while(!cli_cmd_interrupt_received(cli)) { furi_delay_ms(100); - } + }; } while(false); @@ -213,7 +226,7 @@ void ibutton_cli_emulate(Cli* cli, FuriString* args) { ibutton_key_free(key); ibutton_worker_free(worker); ibutton_protocols_free(protocols); -} +}; void ibutton_cli(Cli* cli, FuriString* args, void* context) { UNUSED(cli); @@ -239,16 +252,3 @@ void ibutton_cli(Cli* cli, FuriString* args, void* context) { furi_string_free(cmd); } - -#include -#include - -static const FlipperAppPluginDescriptor plugin_descriptor = { - .appid = CLI_PLUGIN_APP_ID, - .ep_api_version = CLI_PLUGIN_API_VERSION, - .entry_point = &ibutton_cli, -}; - -const FlipperAppPluginDescriptor* ibutton_cli_plugin_ep(void) { - return &plugin_descriptor; -} diff --git a/applications/main/ibutton/ibutton_start.c b/applications/main/ibutton/ibutton_start.c deleted file mode 100644 index d252bed7f..000000000 --- a/applications/main/ibutton/ibutton_start.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -static void ibutton_cli_wrapper(Cli* cli, FuriString* args, void* context) { - cli_plugin_wrapper("ibutton", cli, args, context); -} - -void ibutton_on_system_start(void) { - Cli* cli = furi_record_open(RECORD_CLI); - cli_add_command(cli, "ikey", CliCommandFlagDefault, ibutton_cli_wrapper, cli); - furi_record_close(RECORD_CLI); -} diff --git a/applications/main/infrared/application.fam b/applications/main/infrared/application.fam index 586adf110..575bebbe4 100644 --- a/applications/main/infrared/application.fam +++ b/applications/main/infrared/application.fam @@ -15,23 +15,14 @@ App( ) App( - appid="infrared_cli", + appid="infrared_start", + apptype=FlipperAppType.STARTUP, targets=["f7"], - apptype=FlipperAppType.PLUGIN, - entry_point="infrared_cli_plugin_ep", - requires=["cli"], + entry_point="infrared_on_system_start", sources=[ "infrared_cli.c", "infrared_brute_force.c", "infrared_signal.c", ], -) - -App( - appid="infrared_start", - apptype=FlipperAppType.STARTUP, - targets=["f7"], - entry_point="infrared_on_system_start", - sources=["infrared_start.c"], order=20, ) diff --git a/applications/main/infrared/infrared_cli.c b/applications/main/infrared/infrared_cli.c index d735635e2..85ae95658 100644 --- a/applications/main/infrared/infrared_cli.c +++ b/applications/main/infrared/infrared_cli.c @@ -553,16 +553,12 @@ static void infrared_cli_start_ir(Cli* cli, FuriString* args, void* context) { furi_string_free(command); } - -#include -#include - -static const FlipperAppPluginDescriptor plugin_descriptor = { - .appid = CLI_PLUGIN_APP_ID, - .ep_api_version = CLI_PLUGIN_API_VERSION, - .entry_point = &infrared_cli_start_ir, -}; - -const FlipperAppPluginDescriptor* infrared_cli_plugin_ep(void) { - return &plugin_descriptor; +void infrared_on_system_start(void) { +#ifdef SRV_CLI + Cli* cli = (Cli*)furi_record_open(RECORD_CLI); + cli_add_command(cli, "ir", CliCommandFlagDefault, infrared_cli_start_ir, NULL); + furi_record_close(RECORD_CLI); +#else + UNUSED(infrared_cli_start_ir); +#endif } diff --git a/applications/main/infrared/infrared_start.c b/applications/main/infrared/infrared_start.c deleted file mode 100644 index 6de11b677..000000000 --- a/applications/main/infrared/infrared_start.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -static void infrared_cli_start_ir_wrapper(Cli* cli, FuriString* args, void* context) { - cli_plugin_wrapper("infrared", cli, args, context); -} - -void infrared_on_system_start(void) { - Cli* cli = (Cli*)furi_record_open(RECORD_CLI); - cli_add_command(cli, "ir", CliCommandFlagDefault, infrared_cli_start_ir_wrapper, NULL); - furi_record_close(RECORD_CLI); -} diff --git a/applications/main/lfrfid/application.fam b/applications/main/lfrfid/application.fam index efded8001..c067d786f 100644 --- a/applications/main/lfrfid/application.fam +++ b/applications/main/lfrfid/application.fam @@ -12,20 +12,11 @@ App( fap_category="RFID", ) -App( - appid="lfrfid_cli", - targets=["f7"], - apptype=FlipperAppType.PLUGIN, - entry_point="lfrfid_cli_plugin_ep", - requires=["cli"], - sources=["lfrfid_cli.c"], -) - App( appid="lfrfid_start", targets=["f7"], apptype=FlipperAppType.STARTUP, entry_point="lfrfid_on_system_start", - sources=["lfrfid_start.c"], + sources=["lfrfid_cli.c"], order=50, ) diff --git a/applications/main/lfrfid/lfrfid_cli.c b/applications/main/lfrfid/lfrfid_cli.c index eaafcda92..a25032d6a 100644 --- a/applications/main/lfrfid/lfrfid_cli.c +++ b/applications/main/lfrfid/lfrfid_cli.c @@ -14,6 +14,15 @@ #include #include +static void lfrfid_cli(Cli* cli, FuriString* args, void* context); + +// app cli function +void lfrfid_on_system_start(void) { + Cli* cli = furi_record_open(RECORD_CLI); + cli_add_command(cli, "rfid", CliCommandFlagDefault, lfrfid_cli, NULL); + furi_record_close(RECORD_CLI); +} + static void lfrfid_cli_print_usage(void) { printf("Usage:\r\n"); printf("rfid read - read in ASK/PSK mode\r\n"); @@ -568,16 +577,3 @@ static void lfrfid_cli(Cli* cli, FuriString* args, void* context) { furi_string_free(cmd); } - -#include -#include - -static const FlipperAppPluginDescriptor plugin_descriptor = { - .appid = CLI_PLUGIN_APP_ID, - .ep_api_version = CLI_PLUGIN_API_VERSION, - .entry_point = &lfrfid_cli, -}; - -const FlipperAppPluginDescriptor* lfrfid_cli_plugin_ep(void) { - return &plugin_descriptor; -} diff --git a/applications/main/lfrfid/lfrfid_start.c b/applications/main/lfrfid/lfrfid_start.c deleted file mode 100644 index faf275355..000000000 --- a/applications/main/lfrfid/lfrfid_start.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -static void lfrfid_cli_wrapper(Cli* cli, FuriString* args, void* context) { - cli_plugin_wrapper("lfrfid", cli, args, context); -} - -void lfrfid_on_system_start(void) { - Cli* cli = furi_record_open(RECORD_CLI); - cli_add_command(cli, "rfid", CliCommandFlagDefault, lfrfid_cli_wrapper, NULL); - furi_record_close(RECORD_CLI); -} diff --git a/applications/main/nfc/application.fam b/applications/main/nfc/application.fam index 639a3fca7..bcc2bcbd4 100644 --- a/applications/main/nfc/application.fam +++ b/applications/main/nfc/application.fam @@ -310,15 +310,6 @@ App( sources=["plugins/supported_cards/trt.c"], ) -App( - appid="nfc_cli", - targets=["f7"], - apptype=FlipperAppType.PLUGIN, - entry_point="nfc_cli_plugin_ep", - requires=["cli"], - sources=["nfc_cli.c"], -) - App( appid="disney_infinity_parser", apptype=FlipperAppType.PLUGIN, @@ -334,6 +325,6 @@ App( targets=["f7"], apptype=FlipperAppType.STARTUP, entry_point="nfc_on_system_start", - sources=["nfc_start.c"], + sources=["nfc_cli.c"], order=30, ) diff --git a/applications/main/nfc/nfc_cli.c b/applications/main/nfc/nfc_cli.c index ea686834f..276b53e56 100644 --- a/applications/main/nfc/nfc_cli.c +++ b/applications/main/nfc/nfc_cli.c @@ -226,15 +226,12 @@ static void nfc_cli(Cli* cli, FuriString* args, void* context) { furi_string_free(cmd); } -#include -#include - -static const FlipperAppPluginDescriptor plugin_descriptor = { - .appid = CLI_PLUGIN_APP_ID, - .ep_api_version = CLI_PLUGIN_API_VERSION, - .entry_point = &nfc_cli, -}; - -const FlipperAppPluginDescriptor* nfc_cli_plugin_ep(void) { - return &plugin_descriptor; +void nfc_on_system_start(void) { +#ifdef SRV_CLI + Cli* cli = furi_record_open(RECORD_CLI); + cli_add_command(cli, "nfc", CliCommandFlagDefault, nfc_cli, NULL); + furi_record_close(RECORD_CLI); +#else + UNUSED(nfc_cli); +#endif } diff --git a/applications/main/nfc/nfc_start.c b/applications/main/nfc/nfc_start.c deleted file mode 100644 index d38a956c3..000000000 --- a/applications/main/nfc/nfc_start.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -static void nfc_cli_wrapper(Cli* cli, FuriString* args, void* context) { - cli_plugin_wrapper("nfc", cli, args, context); -} - -void nfc_on_system_start(void) { - Cli* cli = furi_record_open(RECORD_CLI); - cli_add_command(cli, "nfc", CliCommandFlagDefault, nfc_cli_wrapper, NULL); - furi_record_close(RECORD_CLI); -} diff --git a/applications/main/onewire/application.fam b/applications/main/onewire/application.fam index 9fac2ff21..3d35abce9 100644 --- a/applications/main/onewire/application.fam +++ b/applications/main/onewire/application.fam @@ -1,16 +1,6 @@ -App( - appid="onewire_cli", - targets=["f7"], - apptype=FlipperAppType.PLUGIN, - entry_point="onewire_cli_plugin_ep", - requires=["cli"], - sources=["onewire_cli.c"], -) - App( appid="onewire_start", apptype=FlipperAppType.STARTUP, entry_point="onewire_on_system_start", - sources=["onewire_start.c"], order=60, ) diff --git a/applications/main/onewire/onewire_cli.c b/applications/main/onewire/onewire_cli.c index 9114f3cf1..f7e15c295 100644 --- a/applications/main/onewire/onewire_cli.c +++ b/applications/main/onewire/onewire_cli.c @@ -8,10 +8,22 @@ #include +static void onewire_cli(Cli* cli, FuriString* args, void* context); + +void onewire_on_system_start(void) { +#ifdef SRV_CLI + Cli* cli = furi_record_open(RECORD_CLI); + cli_add_command(cli, "onewire", CliCommandFlagDefault, onewire_cli, cli); + furi_record_close(RECORD_CLI); +#else + UNUSED(onewire_cli); +#endif +} + static void onewire_cli_print_usage(void) { printf("Usage:\r\n"); printf("onewire search\r\n"); -} +}; static void onewire_cli_search(Cli* cli) { UNUSED(cli); @@ -63,16 +75,3 @@ void onewire_cli(Cli* cli, FuriString* args, void* context) { furi_string_free(cmd); } - -#include -#include - -static const FlipperAppPluginDescriptor plugin_descriptor = { - .appid = CLI_PLUGIN_APP_ID, - .ep_api_version = CLI_PLUGIN_API_VERSION, - .entry_point = &onewire_cli, -}; - -const FlipperAppPluginDescriptor* onewire_cli_plugin_ep(void) { - return &plugin_descriptor; -} diff --git a/applications/main/onewire/onewire_start.c b/applications/main/onewire/onewire_start.c deleted file mode 100644 index 219335411..000000000 --- a/applications/main/onewire/onewire_start.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -static void onewire_cli_wrapper(Cli* cli, FuriString* args, void* context) { - cli_plugin_wrapper("onewire", cli, args, context); -} - -void onewire_on_system_start(void) { - Cli* cli = furi_record_open(RECORD_CLI); - cli_add_command(cli, "onewire", CliCommandFlagDefault, onewire_cli_wrapper, cli); - furi_record_close(RECORD_CLI); -} diff --git a/applications/services/cli/cli.c b/applications/services/cli/cli.c index c9d074257..c2a0b9cb1 100644 --- a/applications/services/cli/cli.c +++ b/applications/services/cli/cli.c @@ -4,10 +4,6 @@ #include #include -#include -#include -#include - #define TAG "CliSrv" #define CLI_INPUT_LEN_LIMIT 256 @@ -486,19 +482,3 @@ int32_t cli_srv(void* p) { return 0; } - -void cli_plugin_wrapper(const char* name, Cli* cli, FuriString* args, void* context) { - PluginManager* manager = - plugin_manager_alloc(CLI_PLUGIN_APP_ID, CLI_PLUGIN_API_VERSION, firmware_api_interface); - FuriString* path = - furi_string_alloc_printf(EXT_PATH("apps_data/cli/plugins/%s_cli.fal"), name); - PluginManagerError error = plugin_manager_load_single(manager, furi_string_get_cstr(path)); - if(error == PluginManagerErrorNone) { - const CliCallback handler = plugin_manager_get_ep(manager, 0); - handler(cli, args, context); - } else { - printf("CLI plugin failed (code %" PRIu16 "), update firmware or check logs\r\n", error); - } - furi_string_free(path); - plugin_manager_free(manager); -} diff --git a/applications/services/cli/cli_i.h b/applications/services/cli/cli_i.h index c7ec8cf6e..ca126dacd 100644 --- a/applications/services/cli/cli_i.h +++ b/applications/services/cli/cli_i.h @@ -63,13 +63,6 @@ void cli_putc(Cli* cli, char c); void cli_stdout_callback(void* _cookie, const char* data, size_t size); -// Wraps CLI commands to load from plugin file -// Must call from CLI context, like dummy CLI command callback -// You need to setup the plugin to compile correctly separately -#define CLI_PLUGIN_APP_ID "cli" -#define CLI_PLUGIN_API_VERSION 1 -void cli_plugin_wrapper(const char* name, Cli* cli, FuriString* args, void* context); - #ifdef __cplusplus } #endif