(Experimental) External CLI plugins -29kb DFU

Idea and plugin loader implementation by @akopachov, thanks!
All commands done except storage and rpc for latency reasons
This commit is contained in:
Willy-JL
2024-03-16 03:36:40 +00:00
parent cdba35a15a
commit 197fef54e2
38 changed files with 429 additions and 110 deletions

View File

@@ -17,6 +17,15 @@ App(
sdk_headers=["bt_service/bt.h", "bt_settings.h"],
)
App(
appid="bt_cli",
targets=["f7"],
apptype=FlipperAppType.PLUGIN,
entry_point="bt_cli_plugin_ep",
requires=["cli"],
sources=["bt_cli.c"],
)
App(
appid="bt_start",
apptype=FlipperAppType.STARTUP,

View File

@@ -227,12 +227,14 @@ static void bt_cli(Cli* cli, FuriString* args, void* context) {
furi_record_close(RECORD_BT);
}
void bt_on_system_start() {
#ifdef SRV_CLI
Cli* cli = furi_record_open(RECORD_CLI);
cli_add_command(cli, RECORD_BT, CliCommandFlagDefault, bt_cli, NULL);
furi_record_close(RECORD_CLI);
#else
UNUSED(bt_cli);
#endif
#include <flipper_application/flipper_application.h>
static const FlipperAppPluginDescriptor plugin_descriptor = {
.appid = "bt_cli",
.ep_api_version = 1,
.entry_point = &bt_cli,
};
const FlipperAppPluginDescriptor* bt_cli_plugin_ep() {
return &plugin_descriptor;
}

View File

@@ -0,0 +1,12 @@
#include <cli/cli_i.h>
#include "bt_service/bt.h"
static void bt_cli_wrapper(Cli* cli, FuriString* args, void* context) {
cli_plugin_wrapper("bt_cli", 1, cli, args, context);
}
void bt_on_system_start() {
Cli* cli = furi_record_open(RECORD_CLI);
cli_add_command(cli, RECORD_BT, CliCommandFlagDefault, bt_cli_wrapper, NULL);
furi_record_close(RECORD_CLI);
}