From 95b9ef2f7c265b420c755536e8b5a00f70f36fc3 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sat, 31 May 2025 18:48:07 +0200 Subject: [PATCH 01/26] fs/fs_cli: Register commands statically Now fs cli commands are register at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- fs/fs/pkg.yml | 2 ++ fs/fs/src/fs_cli.c | 42 ++++++------------------------------------ fs/fs/src/fs_mount.c | 11 ----------- fs/fs/src/fs_priv.h | 3 --- 4 files changed, 8 insertions(+), 50 deletions(-) diff --git a/fs/fs/pkg.yml b/fs/fs/pkg.yml index b2217498bd..54ddaab29c 100644 --- a/fs/fs/pkg.yml +++ b/fs/fs/pkg.yml @@ -34,3 +34,5 @@ pkg.deps.FS_CLI: pkg.deps.FS_MGMT: - "@apache-mynewt-mcumgr/cmd/fs/port/mynewt" + +pkg.whole_archive: true diff --git a/fs/fs/src/fs_cli.c b/fs/fs/src/fs_cli.c index 257586093e..9fa932a222 100644 --- a/fs/fs/src/fs_cli.c +++ b/fs/fs/src/fs_cli.c @@ -29,33 +29,6 @@ #include "fs/fs.h" -static int fs_ls_cmd(int argc, char **argv); -static int fs_rm_cmd(int argc, char **argv); -static int fs_mkdir_cmd(int argc, char **argv); -static int fs_mv_cmd(int argc, char **argv); -static int fs_cat_cmd(int argc, char **argv); - -static struct shell_cmd fs_ls_struct = { - .sc_cmd = "ls", - .sc_cmd_func = fs_ls_cmd -}; -static struct shell_cmd fs_rm_struct = { - .sc_cmd = "rm", - .sc_cmd_func = fs_rm_cmd -}; -static struct shell_cmd fs_mkdir_struct = { - .sc_cmd = "mkdir", - .sc_cmd_func = fs_mkdir_cmd -}; -static struct shell_cmd fs_mv_struct = { - .sc_cmd = "mv", - .sc_cmd_func = fs_mv_cmd -}; -static struct shell_cmd fs_cat_struct = { - .sc_cmd = "cat", - .sc_cmd_func = fs_cat_cmd -}; - static void fs_ls_file(const char *name, struct fs_file *file) { @@ -220,13 +193,10 @@ fs_cat_cmd(int argc, char **argv) return 0; } -void -fs_cli_init(void) -{ - shell_cmd_register(&fs_ls_struct); - shell_cmd_register(&fs_rm_struct); - shell_cmd_register(&fs_mkdir_struct); - shell_cmd_register(&fs_mv_struct); - shell_cmd_register(&fs_cat_struct); -} +MAKE_SHELL_CMD(ls, fs_ls_cmd, NULL) +MAKE_SHELL_CMD(rm, fs_rm_cmd, NULL) +MAKE_SHELL_CMD(mkdir, fs_mkdir_cmd, NULL) +MAKE_SHELL_CMD(mv, fs_mv_cmd, NULL) +MAKE_SHELL_CMD(cat, fs_cat_cmd, NULL) + #endif /* MYNEWT_VAL(FS_CLI) */ diff --git a/fs/fs/src/fs_mount.c b/fs/fs/src/fs_mount.c index 5319aed7bc..c687cf47c8 100644 --- a/fs/fs/src/fs_mount.c +++ b/fs/fs/src/fs_mount.c @@ -28,10 +28,6 @@ static SLIST_HEAD(, fs_ops) root_fops = SLIST_HEAD_INITIALIZER(); -#if MYNEWT_VAL(FS_CLI) -static uint8_t g_cli_initialized; -#endif - #if MYNEWT_VAL(FS_MGMT) static uint8_t g_mgmt_initialized; #endif @@ -49,13 +45,6 @@ fs_register(struct fs_ops *fops) SLIST_INSERT_HEAD(&root_fops, fops, sc_next); -#if MYNEWT_VAL(FS_CLI) - if (!g_cli_initialized) { - fs_cli_init(); - g_cli_initialized = 1; - } -#endif - #if MYNEWT_VAL(FS_MGMT) if (!g_mgmt_initialized) { fs_mgmt_register_group(); diff --git a/fs/fs/src/fs_priv.h b/fs/fs/src/fs_priv.h index 0e6345db57..d5138c938c 100644 --- a/fs/fs/src/fs_priv.h +++ b/fs/fs/src/fs_priv.h @@ -29,9 +29,6 @@ struct fs_ops; struct fs_ops *fs_ops_for(const char *fs_name); struct fs_ops *safe_fs_ops_for(const char *fs_name); -#if MYNEWT_VAL(FS_CLI) -void fs_cli_init(void); -#endif #ifdef __cplusplus } From 220ad30399e10772fde8cb01fd2c5c094b64c3bd Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sat, 31 May 2025 19:01:47 +0200 Subject: [PATCH 02/26] sys/stats: Register commands statically Now stat cli commands are register at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- sys/stats/full/include/stats/stats.h | 3 --- sys/stats/full/pkg.yml | 7 +++++++ sys/stats/full/src/stats.c | 7 ------- sys/stats/full/src/stats_shell.c | 23 +++-------------------- 4 files changed, 10 insertions(+), 30 deletions(-) diff --git a/sys/stats/full/include/stats/stats.h b/sys/stats/full/include/stats/stats.h index 82621fa0d1..ef86e9b7c7 100644 --- a/sys/stats/full/include/stats/stats.h +++ b/sys/stats/full/include/stats/stats.h @@ -217,9 +217,6 @@ struct stats_hdr *stats_group_find(const char *name); #if MYNEWT_VAL(STATS_MGMT) int stats_mgmt_register_group(void); #endif -#if MYNEWT_VAL(STATS_CLI) -int stats_shell_register(void); -#endif #if MYNEWT_VAL(STATS_PERSIST) diff --git a/sys/stats/full/pkg.yml b/sys/stats/full/pkg.yml index 6833246745..fc320c7bbd 100644 --- a/sys/stats/full/pkg.yml +++ b/sys/stats/full/pkg.yml @@ -33,9 +33,16 @@ pkg.deps.STATS_CLI: pkg.deps.STATS_MGMT: - "@apache-mynewt-mcumgr/cmd/stat_mgmt" +pkg.whole_archive: true + pkg.init: stats_module_init: 'MYNEWT_VAL(STATS_SYSINIT_STAGE)' +pkg.source_files: + - src/stats.c +pkg.source_files.STATS_CLI: + - src/stats_shell.c + pkg.init.STATS_PERSIST: stats_conf_init: 'MYNEWT_VAL(STATS_SYSINIT_STAGE_CONF)' diff --git a/sys/stats/full/src/stats.c b/sys/stats/full/src/stats.c index 0a6494492b..fc8410b7b1 100644 --- a/sys/stats/full/src/stats.c +++ b/sys/stats/full/src/stats.c @@ -157,13 +157,6 @@ stats_module_init_internal(void) return rc; } -#if MYNEWT_VAL(STATS_CLI) - rc = stats_shell_register(); - if (rc) { - return rc; - } -#endif - return rc; } diff --git a/sys/stats/full/src/stats_shell.c b/sys/stats/full/src/stats_shell.c index b9cf8c5b7e..5fd7b5b568 100644 --- a/sys/stats/full/src/stats_shell.c +++ b/sys/stats/full/src/stats_shell.c @@ -33,14 +33,8 @@ static int shell_stats_display(const struct shell_cmd *cmd, int argc, char **argv, struct streamer *streamer); -static struct shell_cmd shell_stats_cmd = - SHELL_CMD_EXT("stat", shell_stats_display, NULL); - -uint8_t stats_shell_registered; - -static int -stats_shell_display_entry(struct stats_hdr *hdr, void *arg, char *name, - uint16_t stat_off) +static int +stats_shell_display_entry(struct stats_hdr *hdr, void *arg, char *name, uint16_t stat_off) { struct streamer *streamer; void *stat_val; @@ -114,17 +108,6 @@ shell_stats_display(const struct shell_cmd *cmd, int argc, char **argv, return (rc); } - -int -stats_shell_register(void) -{ - if (!stats_shell_registered) { - stats_shell_registered = 1; - shell_cmd_register(&shell_stats_cmd); - } - - return (0); -} - +MAKE_SHELL_EXT_CMD(stat, shell_stats_display, NULL) #endif From 595f5dfbedde2a1a075923f0b09655e1e671832a Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sat, 31 May 2025 19:19:22 +0200 Subject: [PATCH 03/26] test/flash_test: Register commands statically Now flash_test commands are register at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- test/flash_test/pkg.yml | 3 +-- test/flash_test/src/flash_test.c | 22 ++-------------------- test/flash_test/syscfg.yml | 4 ---- 3 files changed, 3 insertions(+), 26 deletions(-) diff --git a/test/flash_test/pkg.yml b/test/flash_test/pkg.yml index ca20450608..8dfa350261 100644 --- a/test/flash_test/pkg.yml +++ b/test/flash_test/pkg.yml @@ -30,5 +30,4 @@ pkg.deps: pkg.req_apis: - console -pkg.init: - flash_test_init: 'MYNEWT_VAL(FLASH_TEST_SYSINIT_STAGE)' +pkg.whole_archive: true diff --git a/test/flash_test/src/flash_test.c b/test/flash_test/src/flash_test.c index f9a89d48af..acfae8fbfc 100644 --- a/test/flash_test/src/flash_test.c +++ b/test/flash_test/src/flash_test.c @@ -29,17 +29,6 @@ #include #include -static int flash_cli_cmd(const struct shell_cmd *cmd, int argc, char **argv, - struct streamer *streamer); -static int flash_speed_test_cli(const struct shell_cmd *cmd, int argc, - char **argv, struct streamer *streamer); - -static struct shell_cmd flash_cmd_struct = - SHELL_CMD_EXT("flash", flash_cli_cmd, NULL); - -static struct shell_cmd flash_speed_cli_struct = - SHELL_CMD_EXT("flash_speed", flash_speed_test_cli, NULL); - static void dump_sector_range_info(struct streamer *streamer, int start_sector, uint32_t start_address, int sector_count, uint32_t sector_size) @@ -370,12 +359,5 @@ flash_speed_test_cli(const struct shell_cmd *cmd, int argc, char **argv, return 0; } -/* - * Initialize the package. Only called from sysinit(). - */ -void -flash_test_init(void) -{ - shell_cmd_register(&flash_cmd_struct); - shell_cmd_register(&flash_speed_cli_struct); -} +MAKE_SHELL_EXT_CMD(flash, flash_cli_cmd, NULL) +MAKE_SHELL_EXT_CMD(flash_speed, flash_speed_test_cli, NULL); diff --git a/test/flash_test/syscfg.yml b/test/flash_test/syscfg.yml index c16dcc8bd5..9d3c811a81 100644 --- a/test/flash_test/syscfg.yml +++ b/test/flash_test/syscfg.yml @@ -18,7 +18,3 @@ # syscfg.defs: - FLASH_TEST_SYSINIT_STAGE: - description: > - Sysinit stage for flash test functionality. - value: 500 From 17bc4b58214aca5b1fd6c5c67eb8feb2ca7bbedf Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sat, 31 May 2025 19:21:45 +0200 Subject: [PATCH 04/26] util/coremark: Register commands statically Now coremark shell commands are register at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- util/coremark/pkg.yml | 5 ++--- util/coremark/src/coremark_shell.c | 16 +--------------- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/util/coremark/pkg.yml b/util/coremark/pkg.yml index fc9e8025db..ceb98ce6f0 100644 --- a/util/coremark/pkg.yml +++ b/util/coremark/pkg.yml @@ -33,11 +33,10 @@ pkg.deps: pkg.cflags: +pkg.whole_archive: true + pkg.source_files: - src/core_portme.c pkg.source_files.COREMARK_SHELL: - src/coremark_shell.c - -pkg.init.COREMARK_SHELL: - coremark_shell_init_pkg: $after:shell_init diff --git a/util/coremark/src/coremark_shell.c b/util/coremark/src/coremark_shell.c index 4d5ef7c5f7..ccbe3753aa 100644 --- a/util/coremark/src/coremark_shell.c +++ b/util/coremark/src/coremark_shell.c @@ -48,18 +48,4 @@ static const struct shell_cmd_help coremark_help = { .usage = NULL, }; -static const struct shell_cmd coremark_shell_cmd_struct = { - .sc_cmd = "coremark", - .sc_cmd_func = coremark_shell_cmd, - .help = &coremark_help, -}; - -void -coremark_shell_init_pkg(void) -{ -#if MYNEWT_VAL(SHELL_COMPAT) - int rc; - rc = shell_cmd_register(&coremark_shell_cmd_struct); - SYSINIT_PANIC_ASSERT(rc == 0); -#endif -} +MAKE_SHELL_CMD(coremark, coremark_shell_cmd, &coremark_help) From d5e5313b4ae407a28d87e96f0a9dde216c41b081 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sat, 31 May 2025 22:58:03 +0200 Subject: [PATCH 05/26] sys/log: Register commands statically Now log shell commands are register at link time to reduce memory footprint. No change in functionality. Remove unfinished code depending on non-existing flag LOG_FCB_SLOT1. Signed-off-by: Jerzy Kasenberg --- sys/log/full/pkg.yml | 3 +-- sys/log/full/src/log.c | 33 --------------------------------- sys/log/full/src/log_shell.c | 18 +++++++++--------- 3 files changed, 10 insertions(+), 44 deletions(-) diff --git a/sys/log/full/pkg.yml b/sys/log/full/pkg.yml index 363a3dc1c3..4e438c987c 100644 --- a/sys/log/full/pkg.yml +++ b/sys/log/full/pkg.yml @@ -67,5 +67,4 @@ pkg.req_apis.LOG_STATS: pkg.init: log_init: 'MYNEWT_VAL(LOG_SYSINIT_STAGE_MAIN)' -pkg.init.LOG_CLI_FILL_CMD: - shell_log_fill_register: $after:shell_init +pkg.whole_archive: true diff --git a/sys/log/full/src/log.c b/sys/log/full/src/log.c index c9b1df5afd..e3d365b3bb 100644 --- a/sys/log/full/src/log.c +++ b/sys/log/full/src/log.c @@ -50,30 +50,6 @@ static struct log_module_entry g_log_module_list[ static int g_log_module_count; static uint8_t log_written; -#if MYNEWT_VAL(LOG_CLI) -int shell_log_dump_cmd(int, char **); -struct shell_cmd g_shell_log_cmd = { - .sc_cmd = "log", - .sc_cmd_func = shell_log_dump_cmd -}; - -#if MYNEWT_VAL(LOG_FCB_SLOT1) -int shell_log_slot1_cmd(int, char **); -struct shell_cmd g_shell_slot1_cmd = { - .sc_cmd = "slot1", - .sc_cmd_func = shell_log_slot1_cmd, -}; -#endif - -#if MYNEWT_VAL(LOG_STORAGE_INFO) -int shell_log_storage_cmd(int, char **); -struct shell_cmd g_shell_storage_cmd = { - .sc_cmd = "log-storage", - .sc_cmd_func = shell_log_storage_cmd, -}; -#endif -#endif - #if MYNEWT_VAL(LOG_STATS) STATS_NAME_START(logs) STATS_NAME(logs, writes) @@ -149,15 +125,6 @@ log_init(void) #if MYNEWT_VAL(LOG_GLOBAL_IDX) g_log_info.li_next_index = 0; #endif -#if MYNEWT_VAL(LOG_CLI) - shell_cmd_register(&g_shell_log_cmd); -#if MYNEWT_VAL(LOG_FCB_SLOT1) - shell_cmd_register(&g_shell_slot1_cmd); -#endif -#if MYNEWT_VAL(LOG_STORAGE_INFO) - shell_cmd_register(&g_shell_storage_cmd); -#endif -#endif #if MYNEWT_VAL(LOG_CONSOLE) log_console_init(); diff --git a/sys/log/full/src/log_shell.c b/sys/log/full/src/log_shell.c index c33be9eaea..d89bf64f6c 100644 --- a/sys/log/full/src/log_shell.c +++ b/sys/log/full/src/log_shell.c @@ -381,6 +381,7 @@ shell_log_dump_cmd(int argc, char **argv) return (rc); } +MAKE_SHELL_CMD(log, shell_log_dump_cmd, NULL) #if MYNEWT_VAL(LOG_STORAGE_INFO) int @@ -414,8 +415,13 @@ shell_log_storage_cmd(int argc, char **argv) return (0); } + +SHELL_MODULE_CMD_WITH_NAME(compat, log_storage, "log-storage", 0, + shell_log_storage_cmd, NULL) + #endif +#if MYNEWT_VAL(LOG_CLI_FILL_CMD) static int log_fill_command(int argc, char **argv) { @@ -447,14 +453,8 @@ log_fill_command(int argc, char **argv) return 0; } -static struct shell_cmd log_fill_cmd = { - .sc_cmd = "log-fill", - .sc_cmd_func = log_fill_command -}; +SHELL_MODULE_CMD_WITH_NAME(compat, log_fill, "log-fill", 0, log_fill_command, NULL) + +#endif -void -shell_log_fill_register(void) -{ - shell_cmd_register(&log_fill_cmd); -} #endif From 25c7c7975376139af8bb44c685dcfbdab04f94b7 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sun, 1 Jun 2025 10:17:04 +0200 Subject: [PATCH 06/26] test/crash_test: Register commands statically Now crash shell commands are register at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- test/crash_test/pkg.yml | 2 ++ test/crash_test/src/crash_cli.c | 11 ++--------- test/crash_test/src/crash_test.c | 6 ------ test/crash_test/src/crash_test_priv.h | 3 --- 4 files changed, 4 insertions(+), 18 deletions(-) diff --git a/test/crash_test/pkg.yml b/test/crash_test/pkg.yml index 22ab276d7d..110929da6a 100644 --- a/test/crash_test/pkg.yml +++ b/test/crash_test/pkg.yml @@ -31,5 +31,7 @@ pkg.deps.CRASH_TEST_MGMT: - "@apache-mynewt-core/encoding/json" - "@apache-mynewt-mcumgr/cborattr" +pkg.whole_archive: true + pkg.init: crash_test_init: 'MYNEWT_VAL(CRASH_TEST_SYSINIT_STAGE)' diff --git a/test/crash_test/src/crash_cli.c b/test/crash_test/src/crash_cli.c index 9023012b27..8a547f58ba 100644 --- a/test/crash_test/src/crash_cli.c +++ b/test/crash_test/src/crash_cli.c @@ -20,21 +20,12 @@ #include "os/mynewt.h" #if MYNEWT_VAL(CRASH_TEST_CLI) -#include #include #include -#include #include -#include "crash_test/crash_test.h" #include "crash_test_priv.h" -static int crash_cli_cmd(int argc, char **argv); -struct shell_cmd crash_cmd_struct = { - .sc_cmd = "crash", - .sc_cmd_func = crash_cli_cmd -}; - static int crash_cli_cmd(int argc, char **argv) { @@ -45,4 +36,6 @@ crash_cli_cmd(int argc, char **argv) return 0; } +MAKE_SHELL_CMD(crash, crash_cli_cmd, NULL) + #endif /* MYNEWT_VAL(CRASH_TEST_CLI) */ diff --git a/test/crash_test/src/crash_test.c b/test/crash_test/src/crash_test.c index fa3ec785a6..12f514e62a 100644 --- a/test/crash_test/src/crash_test.c +++ b/test/crash_test/src/crash_test.c @@ -27,9 +27,6 @@ #include "crash_test/crash_test.h" #include "crash_test_priv.h" -#if MYNEWT_VAL(CRASH_TEST_CLI) -#include "shell/shell.h" -#endif #if MYNEWT_VAL(CRASH_TEST_MGMT) #include "mgmt/mgmt.h" #endif @@ -90,9 +87,6 @@ crash_test_init(void) /* Ensure this function only gets called by sysinit. */ SYSINIT_ASSERT_ACTIVE(); -#if MYNEWT_VAL(CRASH_TEST_CLI) - shell_cmd_register(&crash_cmd_struct); -#endif #if MYNEWT_VAL(CRASH_TEST_MGMT) mgmt_register_group(&crash_test_mgmt_group); #endif diff --git a/test/crash_test/src/crash_test_priv.h b/test/crash_test/src/crash_test_priv.h index 7d6bbcb376..e803558572 100644 --- a/test/crash_test/src/crash_test_priv.h +++ b/test/crash_test/src/crash_test_priv.h @@ -23,9 +23,6 @@ extern "C" { #endif -#if MYNEWT_VAL(CRASH_TEST_CLI) -extern struct shell_cmd crash_cmd_struct; -#endif #if MYNEWT_VAL(CRASH_TEST_MGMT) extern struct mgmt_group crash_test_mgmt_group; #endif From fc3d1f7701cf9704fee20491849e67584f05ee5c Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sun, 1 Jun 2025 10:24:46 +0200 Subject: [PATCH 07/26] sys/config: Register commands statically Now config shell command is register at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- sys/config/pkg.yml | 2 ++ sys/config/src/config.c | 4 ---- sys/config/src/config_cli.c | 14 ++------------ sys/config/src/config_priv.h | 1 - 4 files changed, 4 insertions(+), 17 deletions(-) diff --git a/sys/config/pkg.yml b/sys/config/pkg.yml index cfd8fdca11..3866f31f1e 100644 --- a/sys/config/pkg.yml +++ b/sys/config/pkg.yml @@ -39,6 +39,8 @@ pkg.deps.CONFIG_NFFS: pkg.deps.CONFIG_LITTLEFS: - "@apache-mynewt-core/fs/littlefs" +pkg.whole_archive: true + pkg.init: config_pkg_init: 'MYNEWT_VAL(CONFIG_SYSINIT_STAGE_1)' config_pkg_init_stage2: 'MYNEWT_VAL(CONFIG_SYSINIT_STAGE_2)' diff --git a/sys/config/src/config.c b/sys/config/src/config.c index 9d93028591..b03a285e1a 100644 --- a/sys/config/src/config.c +++ b/sys/config/src/config.c @@ -53,10 +53,6 @@ conf_init(void) (void)rc; -#if MYNEWT_VAL(CONFIG_CLI) - rc = conf_cli_register(); - SYSINIT_PANIC_ASSERT(rc == 0); -#endif #if MYNEWT_VAL(CONFIG_MGMT) rc = conf_mgmt_register(); SYSINIT_PANIC_ASSERT(rc == 0); diff --git a/sys/config/src/config_cli.c b/sys/config/src/config_cli.c index bd2fc07579..ebc3ede391 100644 --- a/sys/config/src/config_cli.c +++ b/sys/config/src/config_cli.c @@ -30,13 +30,6 @@ #include #include -static int shell_conf_command(int argc, char **argv); - -static struct shell_cmd shell_conf_cmd = { - .sc_cmd = "config", - .sc_cmd_func = shell_conf_command -}; - #if (MYNEWT_VAL(CONFIG_CLI_RW) & 1) == 1 static void conf_running_one(char *name, char *val) @@ -149,10 +142,7 @@ shell_conf_command(int argc, char **argv) return 0; } -int -conf_cli_register(void) -{ - return shell_cmd_register(&shell_conf_cmd); -} +MAKE_SHELL_CMD(config, shell_conf_command, NULL) + #endif diff --git a/sys/config/src/config_priv.h b/sys/config/src/config_priv.h index 6b0178cba6..f7d1e7fc21 100644 --- a/sys/config/src/config_priv.h +++ b/sys/config/src/config_priv.h @@ -24,7 +24,6 @@ extern "C" { #endif -int conf_cli_register(void); int conf_mgmt_register(void); struct mgmt_cbuf; From e78670f7e661e9cc10483dbcb427646f67f04de0 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sun, 1 Jun 2025 10:41:46 +0200 Subject: [PATCH 08/26] mgmt/imgmgr: Register commands statically Now imgr shell command is register at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- mgmt/imgmgr/pkg.yml | 2 ++ mgmt/imgmgr/src/imgmgr.c | 8 -------- mgmt/imgmgr/src/imgmgr_cli.c | 12 ++---------- mgmt/imgmgr/src/imgmgr_priv.h | 1 - 4 files changed, 4 insertions(+), 19 deletions(-) diff --git a/mgmt/imgmgr/pkg.yml b/mgmt/imgmgr/pkg.yml index 08bdde84d6..6dabb27ea2 100644 --- a/mgmt/imgmgr/pkg.yml +++ b/mgmt/imgmgr/pkg.yml @@ -45,5 +45,7 @@ pkg.deps.IMGMGR_CLI: - "@apache-mynewt-core/sys/shell" - "@apache-mynewt-core/util/parse" +pkg.whole_archive: true + pkg.init: imgmgr_module_init: 'MYNEWT_VAL(IMGMGR_SYSINIT_STAGE)' diff --git a/mgmt/imgmgr/src/imgmgr.c b/mgmt/imgmgr/src/imgmgr.c index d240937ce3..69d8f838c6 100644 --- a/mgmt/imgmgr/src/imgmgr.c +++ b/mgmt/imgmgr/src/imgmgr.c @@ -276,16 +276,8 @@ imgr_erase_state(struct mgmt_ctxt *ctxt) void imgmgr_module_init(void) { - int rc; /* Ensure this function only gets called by sysinit. */ SYSINIT_ASSERT_ACTIVE(); mgmt_register_group(&imgr_mgmt_group); - -#if MYNEWT_VAL(IMGMGR_CLI) - rc = imgr_cli_register(); - SYSINIT_PANIC_ASSERT(rc == 0); -#else - (void) rc; -#endif } diff --git a/mgmt/imgmgr/src/imgmgr_cli.c b/mgmt/imgmgr/src/imgmgr_cli.c index 2dc39d0a61..2d8b1e34fd 100644 --- a/mgmt/imgmgr/src/imgmgr_cli.c +++ b/mgmt/imgmgr/src/imgmgr_cli.c @@ -52,11 +52,6 @@ static const struct shell_cmd_help imgr_cli_help = { }; #endif -static struct shell_cmd shell_imgr_cmd[] = { - SHELL_CMD_EXT("imgr", imgr_cli_cmd, &imgr_cli_help), - { 0 }, -}; - static void imgr_cli_too_few_args(struct streamer *streamer) { @@ -261,9 +256,6 @@ imgr_cli_cmd(const struct shell_cmd *cmd, int argc, char **argv, struct streamer return 0; } -int -imgr_cli_register(void) -{ - return shell_cmd_register(shell_imgr_cmd); -} +MAKE_SHELL_EXT_CMD(imgr, imgr_cli_cmd, &imgr_cli_help) + #endif /* MYNEWT_VAL(IMGMGR_CLI) */ diff --git a/mgmt/imgmgr/src/imgmgr_priv.h b/mgmt/imgmgr/src/imgmgr_priv.h index 9f52610d5d..e57910be19 100644 --- a/mgmt/imgmgr/src/imgmgr_priv.h +++ b/mgmt/imgmgr/src/imgmgr_priv.h @@ -87,7 +87,6 @@ int imgr_core_load(struct mgmt_ctxt *); int imgr_core_erase(struct mgmt_ctxt *); int imgr_find_by_ver(struct image_version *find, uint8_t *hash); int imgr_find_by_hash(uint8_t *find, struct image_version *ver); -int imgr_cli_register(void); #ifdef __cplusplus } From f9c98865378c5e813923a1f311f2c571e5f493e0 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sun, 1 Jun 2025 12:17:09 +0200 Subject: [PATCH 09/26] tinyusb: Register shell module statically Now usb shell module is register at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- hw/usb/tinyusb/shell/pkg.yml | 3 +-- hw/usb/tinyusb/shell/src/tinyusb_cli.c | 9 +-------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/hw/usb/tinyusb/shell/pkg.yml b/hw/usb/tinyusb/shell/pkg.yml index db26eafbe3..916b66b5c0 100644 --- a/hw/usb/tinyusb/shell/pkg.yml +++ b/hw/usb/tinyusb/shell/pkg.yml @@ -29,5 +29,4 @@ pkg.deps: - "@apache-mynewt-core/kernel/os" - "@apache-mynewt-core/hw/usb/tinyusb" -pkg.init: - tinyusb_cli_init: 'MYNEWT_VAL(SHELL_SYSINIT_STAGE) + 1' +pkg.whole_archive: true diff --git a/hw/usb/tinyusb/shell/src/tinyusb_cli.c b/hw/usb/tinyusb/shell/src/tinyusb_cli.c index df49fd4ee5..7c6bc33269 100644 --- a/hw/usb/tinyusb/shell/src/tinyusb_cli.c +++ b/hw/usb/tinyusb/shell/src/tinyusb_cli.c @@ -50,13 +50,6 @@ usb_cli_stop_cmd(const struct shell_cmd *cmd, int argc, char **argv, static const struct shell_cmd usb_cli_commands[] = { SHELL_CMD_EXT("start", usb_cli_start_cmd, NULL), SHELL_CMD_EXT("stop", usb_cli_stop_cmd, NULL), - { }, }; -int -tinyusb_cli_init(void) -{ - shell_register("usb", usb_cli_commands); - - return 0; -} +SHELL_MODULE_WITH_TABLE(usb, usb_cli_commands) From 6de09f79a0b7e31dfba0bf5fc13db8e2a4ace2d7 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sun, 1 Jun 2025 12:37:07 +0200 Subject: [PATCH 10/26] test/spiflash_stress_test: Register command statically Now flashstress shell command is register at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- test/spiflash_stress_test/pkg.yml | 2 ++ test/spiflash_stress_test/src/spiflash_stress_test.c | 10 ++-------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/test/spiflash_stress_test/pkg.yml b/test/spiflash_stress_test/pkg.yml index 201236c328..f5a1a38418 100644 --- a/test/spiflash_stress_test/pkg.yml +++ b/test/spiflash_stress_test/pkg.yml @@ -29,6 +29,8 @@ pkg.deps: pkg.req_apis: - console +pkg.whole_archive: true + pkg.init: spiflash_stress_test_init: 500 diff --git a/test/spiflash_stress_test/src/spiflash_stress_test.c b/test/spiflash_stress_test/src/spiflash_stress_test.c index 633313376a..c435fd80b9 100644 --- a/test/spiflash_stress_test/src/spiflash_stress_test.c +++ b/test/spiflash_stress_test/src/spiflash_stress_test.c @@ -142,12 +142,6 @@ void flash_test_task1(void *arg) } } -static int spiflash_stress_test_cli_cmd(int argc, char **argv); -static struct shell_cmd spiflash_stress_cmd_struct = { - .sc_cmd = "flashstress", - .sc_cmd_func = spiflash_stress_test_cli_cmd -}; - static int spiflash_stress_test_cli_cmd(int argc, char **argv) { @@ -164,6 +158,8 @@ spiflash_stress_test_cli_cmd(int argc, char **argv) return 0; } +MAKE_SHELL_CMD(flashstress, spiflash_stress_test_cli_cmd, NULL) + /* * Initialize the package. Only called from sysinit(). */ @@ -174,6 +170,4 @@ spiflash_stress_test_init(void) runtest_init_task(flash_test_task1, MYNEWT_VAL(OS_MAIN_TASK_PRIO) + 1); runtest_init_task(flash_test_task1, MYNEWT_VAL(OS_MAIN_TASK_PRIO) + 2); runtest_init_task(flash_test_task1, MYNEWT_VAL(OS_MAIN_TASK_PRIO) + 3); - - shell_cmd_register(&spiflash_stress_cmd_struct); } From dea92e37f926d8388c8f3312f864bf9bad6be98d Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sun, 1 Jun 2025 12:46:46 +0200 Subject: [PATCH 11/26] sys/fault: Register command statically Now fault shell command is register at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- sys/fault/fault_cli/pkg.yml | 3 +-- sys/fault/fault_cli/src/fault_cli.c | 17 +---------------- sys/fault/fault_cli/syscfg.yml | 4 ---- 3 files changed, 2 insertions(+), 22 deletions(-) diff --git a/sys/fault/fault_cli/pkg.yml b/sys/fault/fault_cli/pkg.yml index 7245af4556..d2b1ad89b9 100644 --- a/sys/fault/fault_cli/pkg.yml +++ b/sys/fault/fault_cli/pkg.yml @@ -28,5 +28,4 @@ pkg.deps: - "@apache-mynewt-core/sys/shell" - "@apache-mynewt-core/util/parse" -pkg.init: - fault_cli_init: 'MYNEWT_VAL(FAULT_CLI_SYSINIT_STAGE)' +pkg.whole_archive: true diff --git a/sys/fault/fault_cli/src/fault_cli.c b/sys/fault/fault_cli/src/fault_cli.c index 37fc2c1307..126860f22f 100644 --- a/sys/fault/fault_cli/src/fault_cli.c +++ b/sys/fault/fault_cli/src/fault_cli.c @@ -27,8 +27,6 @@ #include "shell/shell.h" #include "fault/fault.h" -static int fault_cli_cmd_fn(int argc, char **argv); - static const struct shell_cmd_help fault_cli_help = { .summary = "Fault management", .usage = @@ -49,12 +47,6 @@ static const struct shell_cmd_help fault_cli_help = { " Simulates a fatal success for the given domain.\n", }; -static const struct shell_cmd fault_cli_cmd = { - .sc_cmd = "fault", - .sc_cmd_func = fault_cli_cmd_fn, - .help = &fault_cli_help, -}; - static int fault_cli_parse_domain(const char *arg) { @@ -248,11 +240,4 @@ fault_cli_cmd_fn(int argc, char **argv) return SYS_EINVAL; } -void -fault_cli_init(void) -{ - int rc; - - rc = shell_cmd_register(&fault_cli_cmd); - SYSINIT_PANIC_ASSERT(rc == 0); -} +MAKE_SHELL_CMD(fault, fault_cli_cmd_fn, &fault_cli_help) diff --git a/sys/fault/fault_cli/syscfg.yml b/sys/fault/fault_cli/syscfg.yml index 70b0268812..9d3c811a81 100644 --- a/sys/fault/fault_cli/syscfg.yml +++ b/sys/fault/fault_cli/syscfg.yml @@ -18,7 +18,3 @@ # syscfg.defs: - FAULT_CLI_SYSINIT_STAGE: - description: > - Sysinit stage for the fault CLI. - value: 520 From d8120c2ef038d26366579028f65f00bb50255ae2 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sun, 1 Jun 2025 12:52:39 +0200 Subject: [PATCH 12/26] test/i2c_scan: Register command statically Now i2c_scan shell command is register at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- test/i2c_scan/pkg.yml | 3 +-- test/i2c_scan/src/i2c_scan.c | 13 +------------ test/i2c_scan/syscfg.yml | 4 ---- 3 files changed, 2 insertions(+), 18 deletions(-) diff --git a/test/i2c_scan/pkg.yml b/test/i2c_scan/pkg.yml index c19ddb361c..6854d51ae1 100644 --- a/test/i2c_scan/pkg.yml +++ b/test/i2c_scan/pkg.yml @@ -31,5 +31,4 @@ pkg.deps: pkg.req_apis: - console -pkg.init: - i2c_scan_init: 'MYNEWT_VAL(I2C_SCAN_SYSINIT_STAGE)' +pkg.whole_archive: true diff --git a/test/i2c_scan/src/i2c_scan.c b/test/i2c_scan/src/i2c_scan.c index 00cffdaf40..8986a67b28 100644 --- a/test/i2c_scan/src/i2c_scan.c +++ b/test/i2c_scan/src/i2c_scan.c @@ -27,13 +27,6 @@ #include #endif -static int i2c_scan_cli_cmd(int argc, char **argv); - -static struct shell_cmd i2c_scan_cmd_struct = { - .sc_cmd = "i2c_scan", - .sc_cmd_func = i2c_scan_cli_cmd -}; - #if MYNEWT_VAL(BUS_DRIVER_PRESENT) static int i2c_scan_probe(int i2c_num, uint16_t address, uint32_t timeout) @@ -108,8 +101,4 @@ i2c_scan_cli_cmd(int argc, char **argv) return 0; } -void -i2c_scan_init(void) -{ - shell_cmd_register(&i2c_scan_cmd_struct); -} +MAKE_SHELL_CMD(i2c_scan, i2c_scan_cli_cmd, NULL) diff --git a/test/i2c_scan/syscfg.yml b/test/i2c_scan/syscfg.yml index b23bac85e8..9d3c811a81 100644 --- a/test/i2c_scan/syscfg.yml +++ b/test/i2c_scan/syscfg.yml @@ -18,7 +18,3 @@ # syscfg.defs: - I2C_SCAN_SYSINIT_STAGE: - description: > - Sysinit stage for I2C scan test functionality. - value: 500 From 3aac3ccfbe707009074eec1de31f4278cc35171e Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sun, 1 Jun 2025 14:42:22 +0200 Subject: [PATCH 13/26] stm32f4/mcu_cli: Register shell module statically Now mcu shell module is register at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- hw/mcu/stm/stm32f4xx/mcu_cli/pkg.yml | 3 +-- hw/mcu/stm/stm32f4xx/mcu_cli/src/mcu_cli.c | 9 +-------- hw/mcu/stm/stm32f4xx/mcu_cli/syscfg.yml | 4 ---- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/hw/mcu/stm/stm32f4xx/mcu_cli/pkg.yml b/hw/mcu/stm/stm32f4xx/mcu_cli/pkg.yml index cff88acead..baa9d50c5e 100644 --- a/hw/mcu/stm/stm32f4xx/mcu_cli/pkg.yml +++ b/hw/mcu/stm/stm32f4xx/mcu_cli/pkg.yml @@ -31,5 +31,4 @@ pkg.deps: pkg.req_apis: - console -pkg.init: - mcu_cli_init: 'MYNEWT_VAL(MCU_CLI_SYSINIT_STAGE)' +pkg.whole_archive: true diff --git a/hw/mcu/stm/stm32f4xx/mcu_cli/src/mcu_cli.c b/hw/mcu/stm/stm32f4xx/mcu_cli/src/mcu_cli.c index 349fe01b04..d009114b33 100644 --- a/hw/mcu/stm/stm32f4xx/mcu_cli/src/mcu_cli.c +++ b/hw/mcu/stm/stm32f4xx/mcu_cli/src/mcu_cli.c @@ -424,13 +424,6 @@ static const struct shell_cmd_help mcu_cli_info_help = { static const struct shell_cmd mcu_cli_commands[] = { SHELL_CMD_EXT("info", mcu_cli_info_cmd, &mcu_cli_info_help), - { }, }; -int -mcu_cli_init(void) -{ - shell_register("mcu", mcu_cli_commands); - - return 0; -} +SHELL_MODULE_WITH_TABLE(mcu, mcu_cli_commands) diff --git a/hw/mcu/stm/stm32f4xx/mcu_cli/syscfg.yml b/hw/mcu/stm/stm32f4xx/mcu_cli/syscfg.yml index d45c500937..9d3c811a81 100644 --- a/hw/mcu/stm/stm32f4xx/mcu_cli/syscfg.yml +++ b/hw/mcu/stm/stm32f4xx/mcu_cli/syscfg.yml @@ -18,7 +18,3 @@ # syscfg.defs: - MCU_CLI_SYSINIT_STAGE: - description: > - Sysinit stage for mcu cli. - value: 501 From 50236ba4f4b8ead7365905809de14acc822a8223 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Sun, 1 Jun 2025 14:43:27 +0200 Subject: [PATCH 14/26] stm32f1/mcu_cli: Register shell module statically Now mcu shell module is register at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- hw/mcu/stm/stm32f1xx/mcu_cli/pkg.yml | 3 +-- hw/mcu/stm/stm32f1xx/mcu_cli/src/mcu_cli.c | 9 +-------- hw/mcu/stm/stm32f1xx/mcu_cli/syscfg.yml | 4 ---- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/hw/mcu/stm/stm32f1xx/mcu_cli/pkg.yml b/hw/mcu/stm/stm32f1xx/mcu_cli/pkg.yml index 916c15b3dd..6c4d3183cc 100644 --- a/hw/mcu/stm/stm32f1xx/mcu_cli/pkg.yml +++ b/hw/mcu/stm/stm32f1xx/mcu_cli/pkg.yml @@ -28,5 +28,4 @@ pkg.deps: pkg.req_apis: - console -pkg.init: - mcu_cli_init: 'MYNEWT_VAL(MCU_CLI_SYSINIT_STAGE)' +pkg.whole_archive: true diff --git a/hw/mcu/stm/stm32f1xx/mcu_cli/src/mcu_cli.c b/hw/mcu/stm/stm32f1xx/mcu_cli/src/mcu_cli.c index c0bc3577d8..3e836cc7db 100644 --- a/hw/mcu/stm/stm32f1xx/mcu_cli/src/mcu_cli.c +++ b/hw/mcu/stm/stm32f1xx/mcu_cli/src/mcu_cli.c @@ -277,13 +277,6 @@ static const struct shell_cmd_help mcu_cli_info_help = { static const struct shell_cmd mcu_cli_commands[] = { SHELL_CMD_EXT("info", mcu_cli_info_cmd, &mcu_cli_info_help), - { }, }; -int -mcu_cli_init(void) -{ - shell_register("mcu", mcu_cli_commands); - - return 0; -} +SHELL_MODULE_WITH_TABLE(mcu, mcu_cli_commands) diff --git a/hw/mcu/stm/stm32f1xx/mcu_cli/syscfg.yml b/hw/mcu/stm/stm32f1xx/mcu_cli/syscfg.yml index 44c28e3cef..02e0ccc96c 100644 --- a/hw/mcu/stm/stm32f1xx/mcu_cli/syscfg.yml +++ b/hw/mcu/stm/stm32f1xx/mcu_cli/syscfg.yml @@ -15,7 +15,3 @@ # syscfg.defs: - MCU_CLI_SYSINIT_STAGE: - description: > - Sysinit stage for mcu cli. - value: 501 From 342fa387da2905f7b2604be01aeafdf076a0a842 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Wed, 4 Jun 2025 17:57:36 +0200 Subject: [PATCH 15/26] drivers/bq27z561: Register command statically Now BQ27Z561 shell command is registered at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- hw/drivers/bq27z561/include/bq27z561/bq27z561.h | 9 --------- hw/drivers/bq27z561/pkg.yml | 4 ++-- hw/drivers/bq27z561/src/bq27z561.c | 9 --------- hw/drivers/bq27z561/src/bq27z561_shell.c | 11 +---------- hw/drivers/bq27z561/syscfg.yml | 4 ---- 5 files changed, 3 insertions(+), 34 deletions(-) diff --git a/hw/drivers/bq27z561/include/bq27z561/bq27z561.h b/hw/drivers/bq27z561/include/bq27z561/bq27z561.h index 07f5478b34..f56210fec3 100644 --- a/hw/drivers/bq27z561/include/bq27z561/bq27z561.h +++ b/hw/drivers/bq27z561/include/bq27z561/bq27z561.h @@ -634,15 +634,6 @@ int bq27z561_config(struct bq27z561 * bq27z561, struct bq27z561_cfg * cfg); */ int bq27z561_init(struct os_dev * dev, void * arg); -#if MYNEWT_VAL(BQ27Z561_CLI) -/** - * Initialize the BQ27Z561 shell extensions. - * - * @return 0 on success, non-zero on failure. - */ -int bq27z561_shell_init(void); -#endif - #if MYNEWT_VAL(BUS_DRIVER_PRESENT) /** * Create I2C bus node for BQ27Z561 diff --git a/hw/drivers/bq27z561/pkg.yml b/hw/drivers/bq27z561/pkg.yml index 04b1dbfb42..06725762b9 100644 --- a/hw/drivers/bq27z561/pkg.yml +++ b/hw/drivers/bq27z561/pkg.yml @@ -38,8 +38,8 @@ pkg.deps.BUS_DRIVER_PRESENT: pkg.req_apis: - stats +pkg.whole_archive: true + pkg.deps.BQ27Z561_CLI: - "@apache-mynewt-core/util/parse" -pkg.init: - bq27z561_pkg_init: 'MYNEWT_VAL(BQ27Z561_SYSINIT_STAGE)' diff --git a/hw/drivers/bq27z561/src/bq27z561.c b/hw/drivers/bq27z561/src/bq27z561.c index 0b21f757d1..52e4ebc32f 100644 --- a/hw/drivers/bq27z561/src/bq27z561.c +++ b/hw/drivers/bq27z561/src/bq27z561.c @@ -1348,15 +1348,6 @@ bq27z561_init(struct os_dev *dev, void *arg) return 0; } -int bq27z561_pkg_init(void) -{ -#if MYNEWT_VAL(BQ27Z561_CLI) - return bq27z561_shell_init(); -#else - return 0; -#endif -} - #if MYNEWT_VAL(BUS_DRIVER_PRESENT) static void init_node_cb(struct bus_node *bnode, void *arg) diff --git a/hw/drivers/bq27z561/src/bq27z561_shell.c b/hw/drivers/bq27z561/src/bq27z561_shell.c index 64ea59c801..2f3e94e534 100644 --- a/hw/drivers/bq27z561/src/bq27z561_shell.c +++ b/hw/drivers/bq27z561/src/bq27z561_shell.c @@ -113,15 +113,6 @@ bq27z561_shell_cmd(int argc, char * argv[]) return 0; } -static const struct shell_cmd bq27z561_shell_cmd_desc = { - .sc_cmd = "bq27z561", - .sc_cmd_func = bq27z561_shell_cmd, -}; - -int -bq27z561_shell_init(void) -{ - return shell_cmd_register(&bq27z561_shell_cmd_desc); -} +MAKE_SHELL_CMD(bq27z561, bq27z561_shell_cmd, NULL) #endif diff --git a/hw/drivers/bq27z561/syscfg.yml b/hw/drivers/bq27z561/syscfg.yml index 49f388bce0..7098d3e9fe 100644 --- a/hw/drivers/bq27z561/syscfg.yml +++ b/hw/drivers/bq27z561/syscfg.yml @@ -39,10 +39,6 @@ syscfg.defs: description: > Number of OS ticks to wait for each I2C transaction to complete. value: 6 - BQ27Z561_SYSINIT_STAGE: - description: > - Sysinit stage for the BQ27Z561 driver. - value: 500 ### Log settings. From f38611e563706c1a3acbf09db0a81c91ad7864fd Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Wed, 4 Jun 2025 18:42:07 +0200 Subject: [PATCH 16/26] drivers/ina219: Register command statically Now ina219 shell command is registered at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- .../sensors/ina219/include/ina219/ina219.h | 10 ---------- hw/drivers/sensors/ina219/pkg.yml | 5 ++--- hw/drivers/sensors/ina219/src/ina219_shell.c | 20 ++----------------- hw/drivers/sensors/ina219/syscfg.yml | 3 --- 4 files changed, 4 insertions(+), 34 deletions(-) diff --git a/hw/drivers/sensors/ina219/include/ina219/ina219.h b/hw/drivers/sensors/ina219/include/ina219/ina219.h index 94e131e4fc..9cf11df207 100644 --- a/hw/drivers/sensors/ina219/include/ina219/ina219.h +++ b/hw/drivers/sensors/ina219/include/ina219/ina219.h @@ -228,16 +228,6 @@ int ina219_start_continuous_mode(struct ina219_dev *ina219, enum ina219_oper_mod */ int ina219_stop_continuous_mode(struct ina219_dev *ina219); -#if MYNEWT_VAL(INA219_CLI) -/** - * Initialize the INA219 shell extensions. - * - * @return 0 on success, non-zero on failure. - */ -int ina219_shell_init(void); -#endif - - #ifdef __cplusplus } #endif diff --git a/hw/drivers/sensors/ina219/pkg.yml b/hw/drivers/sensors/ina219/pkg.yml index 17c62c1742..9f05fbafca 100644 --- a/hw/drivers/sensors/ina219/pkg.yml +++ b/hw/drivers/sensors/ina219/pkg.yml @@ -33,8 +33,7 @@ pkg.deps: pkg.req_apis: - stats +pkg.whole_archive: true + pkg.deps.INA219_CLI: - "@apache-mynewt-core/util/parse" - -pkg.init.INA219_CLI: - ina219_shell_init: 'MYNEWT_VAL(INA219_CLI_SYSINIT_STAGE)' diff --git a/hw/drivers/sensors/ina219/src/ina219_shell.c b/hw/drivers/sensors/ina219/src/ina219_shell.c index e6ea4c2a65..cbac0ce49a 100644 --- a/hw/drivers/sensors/ina219/src/ina219_shell.c +++ b/hw/drivers/sensors/ina219/src/ina219_shell.c @@ -30,13 +30,6 @@ static enum ina219_adc_mode smod = MYNEWT_VAL(INA219_DEFAULT_VSHUNT_ADC_MODE); static enum ina219_vbus_full_scale fs = MYNEWT_VAL(INA219_DEFAULT_VBUS_FULL_SACLE); static uint8_t soft_avg = 1; -static int ina219_shell_cmd(int argc, char **argv); - -static struct shell_cmd ina219_shell_cmd_struct = { - .sc_cmd = "ina219", - .sc_cmd_func = ina219_shell_cmd -}; - static int ina219_shell_err_too_many_args(char *cmd_name) { @@ -64,7 +57,7 @@ ina219_shell_err_invalid_arg(char *cmd_name) static int ina219_shell_help(void) { - console_printf("%s cmd [flags...]\n", ina219_shell_cmd_struct.sc_cmd); + console_printf("ina219 cmd [flags...]\n"); console_printf("cmd:\n"); console_printf("\tr [n_samples]\n"); console_printf("\tfs [0..1]\n"); @@ -238,15 +231,6 @@ ina219_shell_cmd(int argc, char **argv) return ina219_shell_err_unknown_arg(argv[1]); } -int -ina219_shell_init(void) -{ - int rc; - - rc = shell_cmd_register(&ina219_shell_cmd_struct); - SYSINIT_PANIC_ASSERT(rc == 0); - - return rc; -} +MAKE_SHELL_CMD(ina219, ina219_shell_cmd, NULL) #endif diff --git a/hw/drivers/sensors/ina219/syscfg.yml b/hw/drivers/sensors/ina219/syscfg.yml index 6436c0dde3..88de518032 100644 --- a/hw/drivers/sensors/ina219/syscfg.yml +++ b/hw/drivers/sensors/ina219/syscfg.yml @@ -52,9 +52,6 @@ syscfg.defs: INA219_LOG_LVL: description: 'Minimum level for the INA219 log.' value: 1 - INA219_CLI_SYSINIT_STAGE: - description: 'Sysinit stage for the INA219 shell' - value: 500 syscfg.logs: INA219_LOG: module: MYNEWT_VAL(INA219_LOG_MODULE) From be4a0512fb379c6a84c14e271721bac49e7abcb0 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Wed, 4 Jun 2025 18:52:11 +0200 Subject: [PATCH 17/26] drivers/ina226: Register command statically Now ina226 shell command is registered at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- hw/drivers/sensors/ina226/pkg.yml | 5 ++--- hw/drivers/sensors/ina226/src/ina226_shell.c | 20 ++------------------ hw/drivers/sensors/ina226/syscfg.yml | 3 --- 3 files changed, 4 insertions(+), 24 deletions(-) diff --git a/hw/drivers/sensors/ina226/pkg.yml b/hw/drivers/sensors/ina226/pkg.yml index 595b16e570..e81368ae88 100644 --- a/hw/drivers/sensors/ina226/pkg.yml +++ b/hw/drivers/sensors/ina226/pkg.yml @@ -33,8 +33,7 @@ pkg.deps: pkg.req_apis: - stats +pkg.whole_archive: true + pkg.deps.INA226_CLI: - "@apache-mynewt-core/util/parse" - -pkg.init.INA226_CLI: - ina226_shell_init: 'MYNEWT_VAL(INA226_CLI_SYSINIT_STAGE)' diff --git a/hw/drivers/sensors/ina226/src/ina226_shell.c b/hw/drivers/sensors/ina226/src/ina226_shell.c index 3ecf8c6480..36e04fab83 100644 --- a/hw/drivers/sensors/ina226/src/ina226_shell.c +++ b/hw/drivers/sensors/ina226/src/ina226_shell.c @@ -30,13 +30,6 @@ static enum ina226_ct sct; static enum ina226_avg_mode avg; static uint8_t soft_avg = 1; -static int ina226_shell_cmd(int argc, char **argv); - -static struct shell_cmd ina226_shell_cmd_struct = { - .sc_cmd = "ina226", - .sc_cmd_func = ina226_shell_cmd -}; - static int ina226_shell_err_too_many_args(char *cmd_name) { @@ -64,7 +57,7 @@ ina226_shell_err_invalid_arg(char *cmd_name) static int ina226_shell_help(void) { - console_printf("%s cmd [flags...]\n", ina226_shell_cmd_struct.sc_cmd); + console_printf("ina226 cmd [flags...]\n"); console_printf("cmd:\n"); console_printf("\tr [n_samples]\n"); console_printf("\tavg n\n"); @@ -240,15 +233,6 @@ ina226_shell_cmd(int argc, char **argv) return ina226_shell_err_unknown_arg(argv[1]); } -int -ina226_shell_init(void) -{ - int rc; - - rc = shell_cmd_register(&ina226_shell_cmd_struct); - SYSINIT_PANIC_ASSERT(rc == 0); - - return rc; -} +MAKE_SHELL_CMD(ina226, ina226_shell_cmd, NULL) #endif diff --git a/hw/drivers/sensors/ina226/syscfg.yml b/hw/drivers/sensors/ina226/syscfg.yml index ec71cd095f..12000226f0 100644 --- a/hw/drivers/sensors/ina226/syscfg.yml +++ b/hw/drivers/sensors/ina226/syscfg.yml @@ -54,9 +54,6 @@ syscfg.defs: INA226_LOG_LVL: description: 'Minimum level for the INA226 log.' value: 1 - INA226_CLI_SYSINIT_STAGE: - description: 'Sysinit stage for the INA226 shell' - value: 500 syscfg.logs: INA226_LOG: module: MYNEWT_VAL(INA226_LOG_MODULE) From 3cde3127486d0ec6b38c67cd8e32f120cbe68426 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Wed, 4 Jun 2025 19:30:15 +0200 Subject: [PATCH 18/26] hw/battery: Register module statically Now bat shell module is registered at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- hw/battery/include/battery/battery.h | 4 -- hw/battery/pkg.yml | 2 + hw/battery/src/battery.c | 4 -- hw/battery/src/battery_shell.c | 84 +--------------------------- 4 files changed, 3 insertions(+), 91 deletions(-) diff --git a/hw/battery/include/battery/battery.h b/hw/battery/include/battery/battery.h index 50500a37a5..de635e88a3 100644 --- a/hw/battery/include/battery/battery.h +++ b/hw/battery/include/battery/battery.h @@ -301,10 +301,6 @@ int battery_get_driver_count(struct os_dev *battery); struct battery_driver *get_battery_driver(struct os_dev *battery, const char *dev_name); -#if MYNEWT_VAL(BATTERY_SHELL) -void battery_shell_register(void); -#endif - /** * }@ */ diff --git a/hw/battery/pkg.yml b/hw/battery/pkg.yml index dd0799b9b6..bce2de6b1c 100644 --- a/hw/battery/pkg.yml +++ b/hw/battery/pkg.yml @@ -28,5 +28,7 @@ pkg.deps: pkg.req_apis: - console +pkg.whole_archive: true + pkg.init: battery_pkg_init: 'MYNEWT_VAL(BATTERY_SYSINIT_STAGE)' diff --git a/hw/battery/src/battery.c b/hw/battery/src/battery.c index 892f2d2987..61f03ac7ca 100644 --- a/hw/battery/src/battery.c +++ b/hw/battery/src/battery.c @@ -142,10 +142,6 @@ battery_pkg_init(void) SYSINIT_ASSERT_ACTIVE(); battery_mgr_init(); - -#if MYNEWT_VAL(BATTERY_SHELL) - battery_shell_register(); -#endif } int diff --git a/hw/battery/src/battery_shell.c b/hw/battery/src/battery_shell.c index 3455ec6045..3ce2b1db62 100644 --- a/hw/battery/src/battery_shell.c +++ b/hw/battery/src/battery_shell.c @@ -30,8 +30,6 @@ #include #include -static int bat_compat_cmd(int argc, char **argv); - #if MYNEWT_VAL(SHELL_CMD_HELP) #define HELP(a) &(a) @@ -78,37 +76,6 @@ static const struct shell_cmd_help bat_monitor_help = { #define HELP(a) NULL #endif -static const struct shell_cmd bat_cli_cmd = { - .sc_cmd = "bat", - .sc_cmd_func = bat_compat_cmd, -}; - -/** - * cmd bat help - * - * Help for the bat command. - * - */ -static void -cmd_bat_help(void) -{ - console_printf("Usage: bat [options]\n"); - console_printf("Available bat commands:\n"); - console_printf(" pollrate \n"); - console_printf(" monitor [] [off]\n"); - console_printf(" list\n"); - console_printf(" read [] | all\n"); - console_printf(" write \n"); - - console_printf("Examples:\n"); - console_printf(" list\n"); - console_printf(" monitor VoltageADC\n"); - console_printf(" monitor off\n"); - console_printf(" read Voltage\n"); - console_printf(" read all\n"); - console_printf(" write VoltageLoAlarmSet\n"); -} - static const char *bat_status[] = { "???", "charging", @@ -482,57 +449,8 @@ static const struct shell_cmd bat_cli_commands[] = { SHELL_CMD("list", cmd_bat_list, &bat_list_help), SHELL_CMD("pollrate", cmd_bat_poll_rate, &bat_poll_rate_help), SHELL_CMD("monitor", cmd_bat_monitor, &bat_monitor_help), - { 0 }, }; -/** - * bat cmd - * - * Main processing function for K4 cli bat command - * - * @param argc Number of arguments - * @param argv Argument list - * - * @return int 0: success, -1 error - */ -static int -bat_compat_cmd(int argc, char **argv) -{ - int rc; - int i; - - if (argc < 2) { - rc = SYS_EINVAL; - } else { - for (i = 0; bat_cli_commands[i].sc_cmd; ++i) { - if (strcmp(bat_cli_commands[i].sc_cmd, argv[1]) == 0) { - rc = bat_cli_commands[i].sc_cmd_func(argc - 1, argv + 1); - break; - } - } - /* No command found */ - if (bat_cli_commands[i].sc_cmd == NULL) { - console_printf("Invalid command.\n"); - rc = -1; - } - } - - /* Print help in case of error */ - if (rc) { - cmd_bat_help(); - } - - return rc; -} - -void -battery_shell_register(void) -{ - int rc; - - rc = shell_register("bat", bat_cli_commands); - rc = shell_cmd_register(&bat_cli_cmd); - SYSINIT_PANIC_ASSERT_MSG(rc == 0, "Failed to register battery shell"); -} +SHELL_MODULE_WITH_TABLE(bat, bat_cli_commands) #endif From ddf90d2cf869075b4462291700dc8299f6eb2566 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Fri, 6 Jun 2025 18:15:49 +0200 Subject: [PATCH 19/26] net/lora: Register commands statically Now loar shell commands are registered at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- hw/sensor/src/sensor_shell.c | 9 +--- net/lora/node/include/node/lora_priv.h | 1 - net/lora/node/pkg.yml | 2 + net/lora/node/src/lora_cli.c | 65 ++++---------------------- net/lora/node/src/lora_node.c | 8 +--- 5 files changed, 14 insertions(+), 71 deletions(-) diff --git a/hw/sensor/src/sensor_shell.c b/hw/sensor/src/sensor_shell.c index 4dcee5810d..9e0c799672 100644 --- a/hw/sensor/src/sensor_shell.c +++ b/hw/sensor/src/sensor_shell.c @@ -44,12 +44,6 @@ #include "hal/hal_i2c.h" #include "parse/parse.h" -static int sensor_cmd_exec(int, char **); -static struct shell_cmd shell_sensor_cmd = { - .sc_cmd = "sensor", - .sc_cmd_func = sensor_cmd_exec -}; - struct sensor_poll_data { int spd_nsamples; int spd_poll_itvl; @@ -1074,6 +1068,7 @@ sensor_cmd_exec(int argc, char **argv) return (rc); } +MAKE_SHELL_CMD(sensor, sensor_cmd_exec, NULL) int sensor_shell_register(void) @@ -1082,8 +1077,6 @@ sensor_shell_register(void) g_spd.spd_read_ev.ev_cb = sensor_shell_read_ev_cb; os_cputime_timer_init(&g_spd.spd_read_timer, sensor_shell_read_timer_cb, NULL); - shell_cmd_register((struct shell_cmd *) &shell_sensor_cmd); - return (0); } diff --git a/net/lora/node/include/node/lora_priv.h b/net/lora/node/include/node/lora_priv.h index f755923dca..b13ea1d6d5 100644 --- a/net/lora/node/include/node/lora_priv.h +++ b/net/lora/node/include/node/lora_priv.h @@ -203,7 +203,6 @@ extern struct lora_mac_obj g_lora_mac_data; #define LM_F_REPEATER_SUPP() (g_lora_mac_data.lmflags.lmfbit.repeater_supp) #define LM_F_LAST_TX_IS_JOIN_REQ() (g_lora_mac_data.lmflags.lmfbit.last_tx_join) -void lora_cli_init(void); void lora_app_init(void); struct os_mbuf; diff --git a/net/lora/node/pkg.yml b/net/lora/node/pkg.yml index a165f17023..0c2b48f5b2 100644 --- a/net/lora/node/pkg.yml +++ b/net/lora/node/pkg.yml @@ -41,5 +41,7 @@ pkg.deps.LORA_NODE_LOG_CLI: pkg.req_apis: - lora_node_driver +pkg.whole_archive: true + pkg.init: lora_node_init: 'MYNEWT_VAL(LORA_NODE_SYSINIT_STAGE)' diff --git a/net/lora/node/src/lora_cli.c b/net/lora/node/src/lora_cli.c index acd95fae1a..b935681d07 100644 --- a/net/lora/node/src/lora_cli.c +++ b/net/lora/node/src/lora_cli.c @@ -30,7 +30,6 @@ #if MYNEWT_VAL(LORA_NODE_CLI) -static int lora_cli_cmd_fn(int argc, char **argv); static int lora_cli_set_freq(int argc, char **argv); static int lora_cli_tx_cfg(int argc, char **argv); static int lora_cli_rx_cfg(int argc, char **argv); @@ -38,36 +37,13 @@ static int lora_cli_tx(int argc, char **argv); static int lora_cli_rx(int argc, char **argv); static int lora_cli_max_payload_len(int argc, char **argv); -static struct shell_cmd lora_cli_cmd = { - .sc_cmd = "lora", - .sc_cmd_func = lora_cli_cmd_fn, -}; - -static struct shell_cmd lora_cli_subcmds[] = { - { - .sc_cmd = "set_freq", - .sc_cmd_func = lora_cli_set_freq, - }, - { - .sc_cmd = "tx_cfg", - .sc_cmd_func = lora_cli_tx_cfg, - }, - { - .sc_cmd = "rx_cfg", - .sc_cmd_func = lora_cli_rx_cfg, - }, - { - .sc_cmd = "tx", - .sc_cmd_func = lora_cli_tx, - }, - { - .sc_cmd = "rx", - .sc_cmd_func = lora_cli_rx, - }, - { - .sc_cmd = "max_payload_len", - .sc_cmd_func = lora_cli_max_payload_len, - }, +static const struct shell_cmd lora_cli_subcmds[] = { + SHELL_CMD("set_freq", lora_cli_set_freq, NULL), + SHELL_CMD("tx_cfg", lora_cli_tx_cfg, NULL), + SHELL_CMD("rx_cfg", lora_cli_rx_cfg, NULL), + SHELL_CMD("tx", lora_cli_tx, NULL), + SHELL_CMD("rx", lora_cli_rx, NULL), + SHELL_CMD("max_payload_len", lora_cli_max_payload_len, NULL), }; static int @@ -557,18 +533,11 @@ lora_cli_max_payload_len(int argc, char **argv) return rc; } -#endif /* MYNEWT_VAL(LORA_NODE_CLI) */ +MAKE_SHELL_CMD(lora, lora_cli_cmd_fn, NULL) -#if MYNEWT_VAL(LORA_NODE_LOG_CLI) == 1 +#endif /* MYNEWT_VAL(LORA_NODE_CLI) */ #if MYNEWT_VAL(LORA_NODE_LOG_CLI) == 1 -static int lora_cli_log_cmd(int argc, char **argv); - -static struct shell_cmd lora_node_log_cmd = { - .sc_cmd = "ln_log", - .sc_cmd_func = lora_cli_log_cmd -}; -#endif int lora_cli_log_cmd(int argc, char **argv) @@ -704,21 +673,7 @@ lora_cli_log_cmd(int argc, char **argv) return 0; } -#endif /* MYNEWT_VAL(LORA_NODE_LOG_CLI) */ - -void -lora_cli_init(void) -{ - int rc; +MAKE_SHELL_CMD(ln_log, lora_cli_log_cmd, NULL) - (void)rc; -#if MYNEWT_VAL(LORA_NODE_CLI) - rc = shell_cmd_register(&lora_cli_cmd); - SYSINIT_PANIC_ASSERT_MSG(rc == 0, "Failed to register lora CLI command"); -#endif -#if MYNEWT_VAL(LORA_NODE_LOG_CLI) - rc = shell_cmd_register(&lora_node_log_cmd); - assert(rc == 0); #endif /* MYNEWT_VAL(LORA_NODE_LOG_CLI) */ -} diff --git a/net/lora/node/src/lora_node.c b/net/lora/node/src/lora_node.c index 5796356f45..0d47731df1 100644 --- a/net/lora/node/src/lora_node.c +++ b/net/lora/node/src/lora_node.c @@ -642,16 +642,10 @@ lora_node_init(void) STATS_NAME_INIT_PARMS(lora_mac_stats), "lora_mac"); SYSINIT_PANIC_ASSERT(rc == 0); -#if MYNEWT_VAL(LORA_NODE_CLI) - lora_cli_init(); -#else +#if !MYNEWT_VAL(LORA_NODE_CLI) /* Init app */ lora_app_init(); -#if MYNEWT_VAL(LORA_NODE_LOG_CLI) == 1 - lora_cli_init(); -#endif - /*--- MAC INIT ---*/ /* Initialize eventq */ os_eventq_init(&g_lora_mac_data.lm_evq); From 930c1dd97e449b069783665c0dcd92bbb6f8bc52 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Fri, 6 Jun 2025 19:21:44 +0200 Subject: [PATCH 20/26] drivers/adp5061: Register command statically Now adp5061 shell command is registered at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- hw/drivers/chg_ctrl/adp5061/pkg.yml | 2 ++ hw/drivers/chg_ctrl/adp5061/src/adp5061.c | 5 ----- hw/drivers/chg_ctrl/adp5061/src/adp5061_shell.c | 17 ++++------------- 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/hw/drivers/chg_ctrl/adp5061/pkg.yml b/hw/drivers/chg_ctrl/adp5061/pkg.yml index 8bc3c8df4b..41af0bf6a6 100644 --- a/hw/drivers/chg_ctrl/adp5061/pkg.yml +++ b/hw/drivers/chg_ctrl/adp5061/pkg.yml @@ -39,3 +39,5 @@ pkg.deps.!BUS_DRIVER_PRESENT||ADP5061_USE_CHARGE_CONTROL: pkg.deps.ADP5061_CLI: - '@apache-mynewt-core/sys/shell' - '@apache-mynewt-core/util/parse' + +pkg.whole_archive: true diff --git a/hw/drivers/chg_ctrl/adp5061/src/adp5061.c b/hw/drivers/chg_ctrl/adp5061/src/adp5061.c index 8b06fe4699..7a15a77e07 100644 --- a/hw/drivers/chg_ctrl/adp5061/src/adp5061.c +++ b/hw/drivers/chg_ctrl/adp5061/src/adp5061.c @@ -23,7 +23,6 @@ #include #include -#include #include #if MYNEWT_VAL(BUS_DRIVER_PRESENT) #include "bus/drivers/i2c_common.h" @@ -675,10 +674,6 @@ adp5061_init(struct os_dev *dev, void *arg) } #endif /* ADP5061_USE_CHARGE_CONTROL */ -#if MYNEWT_VAL(ADP5061_CLI) - adp5061_shell_init(adp5061); -#endif - return 0; err: return rc; diff --git a/hw/drivers/chg_ctrl/adp5061/src/adp5061_shell.c b/hw/drivers/chg_ctrl/adp5061/src/adp5061_shell.c index 184b78732a..0cad5dbe1d 100644 --- a/hw/drivers/chg_ctrl/adp5061/src/adp5061_shell.c +++ b/hw/drivers/chg_ctrl/adp5061/src/adp5061_shell.c @@ -624,13 +624,6 @@ static const struct adp5061_reg adp5061_device_regs[] = { #define NUM_DEVICE_REGS (sizeof(adp5061_device_regs)\ /sizeof(adp5061_device_regs[0])) -static int adp5061_shell_cmd(int argc, char **argv); - -static const struct shell_cmd adp5061_shell_cmd_struct = { - .sc_cmd = "adp5061", - .sc_cmd_func = adp5061_shell_cmd -}; - static int adp5061_shell_err_too_many_args(const char *cmd_name) { @@ -665,7 +658,7 @@ adp5061_shell_err_missing_arg(const char *cmd_name) static int adp5061_shell_help(void) { - console_printf("%s cmd\n", adp5061_shell_cmd_struct.sc_cmd); + console_printf("adp5061 cmd\n"); console_printf("cmd:\n"); console_printf("\thelp\n"); #if MYNEWT_VAL(ADP5061_CLI_DECODE) @@ -970,16 +963,14 @@ adp5061_shell_cmd(int argc, char **argv) return adp5061_shell_err_unknown_arg(argv[1]); } +MAKE_SHELL_CMD(adp5061, adp5061_shell_cmd, NULL); + int adp5061_shell_init(struct adp5061_dev *dev) { - int rc; - adp5061_dev = dev; - rc = shell_cmd_register(&adp5061_shell_cmd_struct); - SYSINIT_PANIC_ASSERT(rc == 0); - return rc; + return 0; } #endif From 00947cb1a39714e9d960e8cc2fb95b98878127e6 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Fri, 6 Jun 2025 19:34:21 +0200 Subject: [PATCH 21/26] drivers/lsm6dso: Register command statically Now lsm6dso shell command is registered at link time to reduce memory footprint. Command was register before by function lsm6dso_shell_init() that is not removed and replaced by syscfg value LSM6DSO_SHELL Signed-off-by: Jerzy Kasenberg --- .../sensors/lsm6dso/include/lsm6dso/lsm6dso.h | 7 ------- hw/drivers/sensors/lsm6dso/pkg.yml | 8 ++++++++ .../sensors/lsm6dso/src/lsm6dso_shell.c | 19 ++----------------- hw/drivers/sensors/lsm6dso/syscfg.yml | 3 +++ 4 files changed, 13 insertions(+), 24 deletions(-) diff --git a/hw/drivers/sensors/lsm6dso/include/lsm6dso/lsm6dso.h b/hw/drivers/sensors/lsm6dso/include/lsm6dso/lsm6dso.h index 168d3e8503..b8ff2c9ddf 100644 --- a/hw/drivers/sensors/lsm6dso/include/lsm6dso/lsm6dso.h +++ b/hw/drivers/sensors/lsm6dso/include/lsm6dso/lsm6dso.h @@ -314,13 +314,6 @@ int lsm6dso_init(struct os_dev *dev, void *arg); */ int lsm6dso_config(struct lsm6dso *, struct lsm6dso_cfg *); -/** - * Init shell - * - * @return 0 on success, non-zero on failure. - */ -int lsm6dso_shell_init(void); - /** * Read acc/gyro data * diff --git a/hw/drivers/sensors/lsm6dso/pkg.yml b/hw/drivers/sensors/lsm6dso/pkg.yml index 714b978156..219af0df21 100644 --- a/hw/drivers/sensors/lsm6dso/pkg.yml +++ b/hw/drivers/sensors/lsm6dso/pkg.yml @@ -33,3 +33,11 @@ pkg.deps: pkg.req_apis: - stats + +pkg.source_files: + - src/lsm6dso.c + +pkg.source_files.LSM6DSO_SHELL: + - src/lsm6dso_shell.c + +pkg.whole_archive: true diff --git a/hw/drivers/sensors/lsm6dso/src/lsm6dso_shell.c b/hw/drivers/sensors/lsm6dso/src/lsm6dso_shell.c index f5c39b27b6..5b8267575a 100644 --- a/hw/drivers/sensors/lsm6dso/src/lsm6dso_shell.c +++ b/hw/drivers/sensors/lsm6dso/src/lsm6dso_shell.c @@ -32,8 +32,6 @@ typedef struct { char *regname; } reg_name_t; -static int lsm6dso_shell_cmd(int argc, char **argv); - /* Human readable register map for page 0 */ static const reg_name_t reg_name[] = { { .add = 0x02, .regname = "PIN_CTRL" }, @@ -71,11 +69,6 @@ static const reg_name_t reg_name[] = { { .add = 0x5f, .regname = "MD2_CFG" }, }; -static struct shell_cmd lsm6dso_shell_cmd_struct = { - .sc_cmd = "lsm6dso", - .sc_cmd_func = lsm6dso_shell_cmd -}; - static struct sensor_itf *g_sensor_itf; static struct lsm6dso *g_lsm6dso; @@ -119,7 +112,7 @@ static int lsm6dso_shell_err_unknown_arg(char *cmd_name) static void lsm6dso_shell_help(void) { - console_printf("%s cmd [flags...]\n", lsm6dso_shell_cmd_struct.sc_cmd); + console_printf("lsm6dso cmd [flags...]\n"); console_printf("cmd:\n"); console_printf("\tdump\tSTART\tEND\n"); console_printf("\tread\tADD\n"); @@ -278,12 +271,4 @@ static int lsm6dso_shell_cmd(int argc, char **argv) return lsm6dso_shell_err_unknown_arg(argv[1]); } -int lsm6dso_shell_init(void) -{ - int rc; - - rc = shell_cmd_register(&lsm6dso_shell_cmd_struct); - SYSINIT_PANIC_ASSERT(rc == 0); - - return rc; -} +MAKE_SHELL_CMD(lsm6dso, lsm6dso_shell_cmd, NULL) diff --git a/hw/drivers/sensors/lsm6dso/syscfg.yml b/hw/drivers/sensors/lsm6dso/syscfg.yml index f4790e357c..2ac1eefe1b 100644 --- a/hw/drivers/sensors/lsm6dso/syscfg.yml +++ b/hw/drivers/sensors/lsm6dso/syscfg.yml @@ -30,6 +30,9 @@ syscfg.defs: description: > Number of OS ticks to wait for each I2C transaction to complete. value: 3 + LSM6DSO_SHELL: + description: 'Add lsm6dso command to shell' + value: 0 LSM6DSO_SHELL_DEV_NAME: description: 'Name of LSM6DSO device to use in shell' value: '"lsm6dso_0"' From f13b4a1409f2ab19e80dbb37a1a1b680230455d0 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Fri, 6 Jun 2025 19:43:35 +0200 Subject: [PATCH 22/26] drivers/ds3231: Register command statically Now ds3231 shell command is registered at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- hw/drivers/rtc/ds3231/include/ds3231/ds3231.h | 11 ---------- hw/drivers/rtc/ds3231/pkg.yml | 9 +++++++-- hw/drivers/rtc/ds3231/src/ds3231_shell.c | 20 +++---------------- 3 files changed, 10 insertions(+), 30 deletions(-) diff --git a/hw/drivers/rtc/ds3231/include/ds3231/ds3231.h b/hw/drivers/rtc/ds3231/include/ds3231/ds3231.h index 5440da8ccb..c9a11f3647 100644 --- a/hw/drivers/rtc/ds3231/include/ds3231/ds3231.h +++ b/hw/drivers/rtc/ds3231/include/ds3231/ds3231.h @@ -166,17 +166,6 @@ int ds3231_read_regs(struct ds3231_dev *ds3231, uint8_t addr, uint8_t *regs, uin */ int ds3231_write_regs(struct ds3231_dev *ds3231, uint8_t addr, uint8_t *vals, uint8_t count); - -#if MYNEWT_VAL(DS3231_CLI) -/** - * Initialize the DS3231 shell extensions. - * - * @return 0 on success, non-zero on failure. - */ -void ds3231_shell_init(void); -#endif - - #ifdef __cplusplus } #endif diff --git a/hw/drivers/rtc/ds3231/pkg.yml b/hw/drivers/rtc/ds3231/pkg.yml index cba0923761..8477bc5708 100644 --- a/hw/drivers/rtc/ds3231/pkg.yml +++ b/hw/drivers/rtc/ds3231/pkg.yml @@ -36,5 +36,10 @@ pkg.req_apis: pkg.init: ds3231_pkg_init: 601 -pkg.init.DS3231_CLI: - ds3231_shell_init: 1000 +pkg.whole_archive: true + +pkg.source_files: + - src/ds3231.c + +pkg.source_files.DS3231_CLI: + - src/ds3231_shell.c diff --git a/hw/drivers/rtc/ds3231/src/ds3231_shell.c b/hw/drivers/rtc/ds3231/src/ds3231_shell.c index 4434c86dbd..83b52c6ee5 100644 --- a/hw/drivers/rtc/ds3231/src/ds3231_shell.c +++ b/hw/drivers/rtc/ds3231/src/ds3231_shell.c @@ -23,13 +23,6 @@ #if MYNEWT_VAL(DS3231_CLI) -static int ds3231_shell_cmd(int argc, char **argv); - -static struct shell_cmd ds3231_shell_cmd_struct = { - .sc_cmd = "ds3231", - .sc_cmd_func = ds3231_shell_cmd -}; - static int ds3231_shell_err_unknown_arg(char *cmd_name) { @@ -41,7 +34,7 @@ ds3231_shell_err_unknown_arg(char *cmd_name) static int ds3231_shell_help(void) { - console_printf("%s cmd [flags...]\n", ds3231_shell_cmd_struct.sc_cmd); + console_printf("ds3231 cmd [flags...]\n"); console_printf("cmd:\n"); console_printf("\tdate [date-time]\n"); console_printf("\ttemp\n"); @@ -71,7 +64,7 @@ ds3231_shell_cmd_date(int argc, char **argv) console_printf("Invalid time format\n"); } else { timeval_to_clocktime(&tv, &tz, &ct); - ds3231_write_time(ds3231, &ct); + rc = ds3231_write_time(ds3231, &ct); if (rc) { console_printf("write time failed %d\n", rc); } @@ -217,13 +210,6 @@ ds3231_shell_cmd(int argc, char **argv) return ds3231_shell_err_unknown_arg(argv[1]); } -void -ds3231_shell_init(void) -{ - int rc; - - rc = shell_cmd_register(&ds3231_shell_cmd_struct); - SYSINIT_PANIC_ASSERT(rc == 0); -} +MAKE_SHELL_CMD(ds3231, ds3231_shell_cmd, NULL) #endif From 810fa5cf8151f6f387de9f6bab6e3e5f480064fa Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Fri, 6 Jun 2025 20:23:32 +0200 Subject: [PATCH 23/26] drivers/bme280: Register command statically Now bme280 shell command is registered at link time to reduce memory footprint. Signed-off-by: Jerzy Kasenberg --- hw/drivers/sensors/bme280/pkg.yml | 8 ++++++++ hw/drivers/sensors/bme280/src/bme280_shell.c | 15 ++++----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/hw/drivers/sensors/bme280/pkg.yml b/hw/drivers/sensors/bme280/pkg.yml index c206c44617..ccf7927d26 100644 --- a/hw/drivers/sensors/bme280/pkg.yml +++ b/hw/drivers/sensors/bme280/pkg.yml @@ -39,6 +39,14 @@ pkg.deps.!BUS_DRIVER_PRESENT: pkg.req_apis: - stats +pkg.source_files: + - src/bme280.c + +pkg.source_files.BME280_CLI: + - src/bme280_shell.c + +pkg.whole_archive: true + pkg.deps.BME280_CLI: - "@apache-mynewt-core/util/parse" diff --git a/hw/drivers/sensors/bme280/src/bme280_shell.c b/hw/drivers/sensors/bme280/src/bme280_shell.c index c7f0fe324b..7bed5e8196 100644 --- a/hw/drivers/sensors/bme280/src/bme280_shell.c +++ b/hw/drivers/sensors/bme280/src/bme280_shell.c @@ -30,13 +30,6 @@ #include "parse/parse.h" #include "bsp/bsp.h" -static int bme280_shell_cmd(int argc, char **argv); - -static struct shell_cmd bme280_shell_cmd_struct = { - .sc_cmd = "bme280", - .sc_cmd_func = bme280_shell_cmd -}; - #if MYNEWT_VAL(BUS_DRIVER_PRESENT) static struct sensor_itf g_sensor_itf; #else @@ -74,7 +67,7 @@ bme280_shell_err_invalid_arg(char *cmd_name) static int bme280_shell_help(void) { - console_printf("%s cmd [flags...]\n", bme280_shell_cmd_struct.sc_cmd); + console_printf("bme280 cmd [flags...]\n"); console_printf("cmd:\n"); console_printf("\tr [n_samples]\n"); console_printf("\tmode [0-sleep | 1/2-forced | 3-normal]\n"); @@ -414,10 +407,12 @@ static const struct bus_spi_node_cfg bme280_raw_cfg = { #endif +MAKE_SHELL_CMD(bme280, bme280_shell_cmd, NULL) + int bme280_shell_init(void) { - int rc; + int rc = 0; #if MYNEWT_VAL(BUS_DRIVER_PRESENT) struct os_dev *dev = NULL; @@ -437,8 +432,6 @@ bme280_shell_init(void) console_printf("Failed to create bme280_raw device\n"); } #endif - rc = shell_cmd_register(&bme280_shell_cmd_struct); - SYSINIT_PANIC_ASSERT(rc == 0); return rc; } From e9e05617f268d6feda2026ddcbb7872cbd0f1d03 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Fri, 6 Jun 2025 20:31:05 +0200 Subject: [PATCH 24/26] drivers/bmp280: Register command statically Now bmp280 shell command is registered at link time to reduce memory footprint. Signed-off-by: Jerzy Kasenberg --- hw/drivers/sensors/bmp280/pkg.yml | 8 ++++++++ hw/drivers/sensors/bmp280/src/bmp280_shell.c | 15 ++++----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/hw/drivers/sensors/bmp280/pkg.yml b/hw/drivers/sensors/bmp280/pkg.yml index c5065306d6..003c272e78 100644 --- a/hw/drivers/sensors/bmp280/pkg.yml +++ b/hw/drivers/sensors/bmp280/pkg.yml @@ -42,5 +42,13 @@ pkg.deps.BUS_DRIVER_PRESENT: pkg.req_apis: - stats +pkg.whole_archive: true + +pkg.source_files: + - src/bmp280.c + +pkg.source_files.BMP280_CLI: + - src/bmp280_shell.c + pkg.deps.BMP280_CLI: - "@apache-mynewt-core/util/parse" diff --git a/hw/drivers/sensors/bmp280/src/bmp280_shell.c b/hw/drivers/sensors/bmp280/src/bmp280_shell.c index 3b0c0e5583..573a5d1c29 100644 --- a/hw/drivers/sensors/bmp280/src/bmp280_shell.c +++ b/hw/drivers/sensors/bmp280/src/bmp280_shell.c @@ -31,13 +31,6 @@ #include "shell/shell.h" #include "parse/parse.h" -static int bmp280_shell_cmd(int argc, char **argv); - -static struct shell_cmd bmp280_shell_cmd_struct = { - .sc_cmd = "bmp280", - .sc_cmd_func = bmp280_shell_cmd -}; - #if MYNEWT_VAL(BUS_DRIVER_PRESENT) static struct sensor_itf g_sensor_itf; #else @@ -76,7 +69,7 @@ bmp280_shell_err_invalid_arg(char *cmd_name) static int bmp280_shell_help(void) { - console_printf("%s cmd [flags...]\n", bmp280_shell_cmd_struct.sc_cmd); + console_printf("bmp280 cmd [flags...]\n"); console_printf("cmd:\n"); console_printf("\tr [n_samples]\n"); console_printf("\tmode [0-sleep | 1/2-forced | 3-normal]\n"); @@ -434,10 +427,12 @@ static const struct bus_spi_node_cfg bmp280_raw_cfg = { #endif +MAKE_SHELL_CMD(bmp280, bmp280_shell_cmd, NULL) + int bmp280_shell_init(void) { - int rc; + int rc = 0; #if MYNEWT_VAL(BUS_DRIVER_PRESENT) struct os_dev *dev = NULL; @@ -457,8 +452,6 @@ bmp280_shell_init(void) console_printf("Failed to create bmp280_raw device\n"); } #endif - rc = shell_cmd_register(&bmp280_shell_cmd_struct); - SYSINIT_PANIC_ASSERT(rc == 0); return rc; } From 23e654f373d20aa4e82c720f7e3f3f0b5bdd59c4 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Fri, 6 Jun 2025 20:37:58 +0200 Subject: [PATCH 25/26] drivers/ds1307: Register command statically Now ds1307 shell command is registered at link time to reduce memory footprint. No change in functionality. Signed-off-by: Jerzy Kasenberg --- hw/drivers/rtc/ds1307/pkg.yml | 11 ++++++++--- hw/drivers/rtc/ds1307/src/ds1307_shell.c | 18 ++---------------- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/hw/drivers/rtc/ds1307/pkg.yml b/hw/drivers/rtc/ds1307/pkg.yml index 03b0108315..9dea617da8 100644 --- a/hw/drivers/rtc/ds1307/pkg.yml +++ b/hw/drivers/rtc/ds1307/pkg.yml @@ -35,8 +35,13 @@ pkg.req_apis: - log - stats +pkg.whole_archive: true + +pkg.source_files: + - src/ds1307.c + +pkg.source_files.DS1307_CLI: + - src/ds1307_shell.c + pkg.init: ds1307_pkg_init: 601 - -pkg.init.DS1307_CLI: - ds1307_shell_init: 1000 diff --git a/hw/drivers/rtc/ds1307/src/ds1307_shell.c b/hw/drivers/rtc/ds1307/src/ds1307_shell.c index 6d6b126241..672528fb5a 100644 --- a/hw/drivers/rtc/ds1307/src/ds1307_shell.c +++ b/hw/drivers/rtc/ds1307/src/ds1307_shell.c @@ -24,17 +24,10 @@ #if MYNEWT_VAL(DS1307_CLI) -static int ds1307_shell_cmd(int argc, char **argv); - -static struct shell_cmd ds1307_shell_cmd_struct = { - .sc_cmd = "ds1307", - .sc_cmd_func = ds1307_shell_cmd -}; - static int ds1307_shell_help(void) { - console_printf("%s cmd [args]\n", ds1307_shell_cmd_struct.sc_cmd); + console_printf("ds1307 cmd [args]\n"); console_printf("cmd:\n"); console_printf("\tdate [date-time]\n"); console_printf("\tr addr\n"); @@ -161,13 +154,6 @@ ds1307_shell_cmd(int argc, char **argv) return 0; } -void -ds1307_shell_init(void) -{ - int rc; - - rc = shell_cmd_register(&ds1307_shell_cmd_struct); - SYSINIT_PANIC_ASSERT(rc == 0); -} +MAKE_SHELL_CMD(ds1307, ds1307_shell_cmd, NULL) #endif From b77d8f2a6d10dca30abdc595ce550da45be36c14 Mon Sep 17 00:00:00 2001 From: Jerzy Kasenberg Date: Fri, 6 Jun 2025 20:57:05 +0200 Subject: [PATCH 26/26] drivers/adxl345: Register command statically Now adxl345 shell command is registered at link time to reduce memory footprint. Command was register before by function adxl345_shell_init() Now command is added when syscfg value ADXL345_CLI is 1 Signed-off-by: Jerzy Kasenberg --- .../sensors/adxl345/include/adxl345/adxl345.h | 4 ---- hw/drivers/sensors/adxl345/pkg.yml | 8 ++++++++ .../sensors/adxl345/src/adxl345_shell.c | 20 ++----------------- 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/hw/drivers/sensors/adxl345/include/adxl345/adxl345.h b/hw/drivers/sensors/adxl345/include/adxl345/adxl345.h index d40a2ab15a..a58e94dd98 100644 --- a/hw/drivers/sensors/adxl345/include/adxl345/adxl345.h +++ b/hw/drivers/sensors/adxl345/include/adxl345/adxl345.h @@ -193,10 +193,6 @@ int adxl345_config(struct adxl345 *, struct adxl345_cfg *); int adxl345_get_accel_data(struct sensor_itf *itf, struct sensor_accel_data *sad); -#if MYNEWT_VAL(ADXL345_CLI) -int adxl345_shell_init(void); -#endif - #if MYNEWT_VAL(BUS_DRIVER_PRESENT) int adxl345_create_i2c_sensor_dev(struct bus_i2c_node *node, const char *name, const struct bus_i2c_node_cfg *i2c_cfg, diff --git a/hw/drivers/sensors/adxl345/pkg.yml b/hw/drivers/sensors/adxl345/pkg.yml index bdbc836434..cf3776926a 100644 --- a/hw/drivers/sensors/adxl345/pkg.yml +++ b/hw/drivers/sensors/adxl345/pkg.yml @@ -37,5 +37,13 @@ pkg.deps: pkg.req_apis: - stats +pkg.whole_archive: true + +pkg.srouce_files: + - src/ds1307.c + +pkg.srouce_files.ADXL345_CLI: + - src/ds1307_shell.c + pkg.deps.ADXL345_CLI: - "@apache-mynewt-core/util/parse" diff --git a/hw/drivers/sensors/adxl345/src/adxl345_shell.c b/hw/drivers/sensors/adxl345/src/adxl345_shell.c index 2e7edbb294..ab803304ed 100644 --- a/hw/drivers/sensors/adxl345/src/adxl345_shell.c +++ b/hw/drivers/sensors/adxl345/src/adxl345_shell.c @@ -29,13 +29,6 @@ #if MYNEWT_VAL(ADXL345_CLI) -static int adxl345_shell_cmd(int argc, char **argv); - -static struct shell_cmd adxl345_shell_cmd_struct = { - .sc_cmd = "adxl345", - .sc_cmd_func = adxl345_shell_cmd -}; - static struct sensor_itf g_sensor_itf = { .si_type = MYNEWT_VAL(ADXL345_SHELL_ITF_TYPE), .si_num = MYNEWT_VAL(ADXL345_SHELL_ITF_NUM), @@ -70,7 +63,7 @@ adxl345_shell_err_invalid_arg(char *cmd_name) static int adxl345_shell_help(void) { - console_printf("%s cmd [flags...]\n", adxl345_shell_cmd_struct.sc_cmd); + console_printf("adxl345 cmd [flags...]\n"); console_printf("cmd:\n"); console_printf("\tr [n_samples]\n"); console_printf("\tchipid\n"); @@ -249,15 +242,6 @@ adxl345_shell_cmd(int argc, char **argv) return adxl345_shell_err_unknown_arg(argv[1]); } -int -adxl345_shell_init(void) -{ - int rc; - - rc = shell_cmd_register(&adxl345_shell_cmd_struct); - SYSINIT_PANIC_ASSERT(rc == 0); - - return rc; -} +MAKE_SHELL_CMD(adxl345, adxl345_shell_cmd, NULL) #endif