This is an automated email from the ASF dual-hosted git repository.

jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git

commit e56b35e0b2768b258048f539055ca8b9e0cbf95e
Author: Jerzy Kasenberg <[email protected]>
AuthorDate: Fri Jun 6 18:15:49 2025 +0200

    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 <[email protected]>
---
 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 4dcee5810..9e0c79967 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 @@ done:
     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 f755923dc..b13ea1d6d 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 a165f1702..0c2b48f5b 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 acd95fae1..b935681d0 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 @@ err:
     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 @@ next_entry:
     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 5796356f4..0d47731df 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);

Reply via email to