Commit ff94bedd authored by Adam Wujek's avatar Adam Wujek

shell: add shell commands at compile time (no linker)

Signed-off-by: 's avatarAdam Wujek <adam.wujek@creotech.pl>
parent 9f34bfff
Pipeline #943 failed with stage
in 34 seconds
......@@ -6,11 +6,18 @@ obj-$(CONFIG_TARGET_SIS8300KU) += boards/sis8300ku/board.o
obj-$(CONFIG_TARGET_ERTM14) += boards/ertm14/board.o boards/ertm14/ertm15_rf_distr.o boards/ertm14/phy_calibration.o boards/ertm14/rf_frame_transceiver.o boards/ertm14/cmd_ertm14.o
obj-$(CONFIG_TARGET_PXIE_FMC) += boards/pxie-fmc/board.o
cflags-$(CONFIG_TARGET_GENERIC_PHY_8BIT) += -Iboards/generic
cflags-$(CONFIG_TARGET_GENERIC_PHY_16BIT) += -Iboards/generic
cflags-$(CONFIG_TARGET_WR_SWITCH) += -Iboards/wr-switch
cflags-$(CONFIG_TARGET_AFCZ) += -Iboards/afcz
cflags-$(CONFIG_TARGET_SIS8300KU) += -Iboards/sis8300ku
cflags-$(CONFIG_TARGET_ERTM14) += -Iboards/ertm14
cflags-$(CONFIG_TARGET_PXIE_FMC) += -Iboards/pxie-fmc
REQUIRE_AUTOCONF_PPSI+= \
boards/ertm14/board.o \
boards/ertm14/cmd_ertm14.o \
#boards/sis8300ku/board.o: boards/sis8300ku/sdbfs-image.h
#./tools/gensdbfs -c boards/sis8300ku/sdbfs-image.h boards/sis8300ku/sdbfs boards/sis8300ku/sdbfs-image.bin
......
DECLARE_WRC_COMMAND(ertm)
DECLARE_WRC_COMMAND(ertm_ui)
REGISTER_WRC_COMMAND(ertm),
REGISTER_WRC_COMMAND(ertm_ui),
......@@ -391,6 +391,4 @@ DEFINE_WRC_COMMAND(ertm_ui) = {
void ertm14_shell_init()
{
shell_register_command( &__wrc_cmd_ertm );
shell_register_command( &__wrc_cmd_ertm_ui );
}
......@@ -39,9 +39,7 @@ extern int shell_is_interacting;
void shell_boot_script(void);
void shell_show_build_init(void);
void shell_register_command( struct wrc_shell_cmd* cmd );
void shell_list_cmds(void);
void shell_register_commands(void);
void shell_activate_ui_command( int (*callback)(void) );
#endif
......@@ -65,8 +65,85 @@ static int cmd_pos = 0, cmd_len = 0;
static int state = SH_PROMPT;
static int current_key = 0;
static struct wrc_shell_cmd *cmds[ SHELL_MAX_COMMANDS ];
static int n_cmds = 0;
#define DECLARE_WRC_COMMAND(_name) \
extern struct wrc_shell_cmd __wrc_cmd_ ## _name;
#define REGISTER_WRC_COMMAND(_name) \
&__wrc_cmd_ ## _name
DECLARE_WRC_COMMAND(gui)
DECLARE_WRC_COMMAND(ps)
DECLARE_WRC_COMMAND(pll)
DECLARE_WRC_COMMAND(ptp)
DECLARE_WRC_COMMAND(verbose)
DECLARE_WRC_COMMAND(mode)
DECLARE_WRC_COMMAND(mac)
DECLARE_WRC_COMMAND(sdb)
DECLARE_WRC_COMMAND(calibration)
DECLARE_WRC_COMMAND(help)
DECLARE_WRC_COMMAND(diag)
DECLARE_WRC_COMMAND(init)
DECLARE_WRC_COMMAND(sfp)
DECLARE_WRC_COMMAND(stat)
DECLARE_WRC_COMMAND(ver)
DECLARE_WRC_COMMAND(ptrack)
DECLARE_WRC_COMMAND(time)
#if HAS_IP == 1
DECLARE_WRC_COMMAND(ip)
#endif
#if HAS_VLANS == 1
DECLARE_WRC_COMMAND(vlan)
#endif
#if HAS_CMD_PPS == 1
DECLARE_WRC_COMMAND(pps)
#endif
#if HAS_CMD_LEAPSEC == 1
DECLARE_WRC_COMMAND(leapsec)
#endif
#if HAS_CMD_NETCONSOLE == 1
DECLARE_WRC_COMMAND(netconsole)
#endif
#include <board_cmd_decl.h>
static struct wrc_shell_cmd *cmds[] = {
REGISTER_WRC_COMMAND(gui),
REGISTER_WRC_COMMAND(ps),
REGISTER_WRC_COMMAND(pll),
REGISTER_WRC_COMMAND(ptp),
REGISTER_WRC_COMMAND(verbose),
REGISTER_WRC_COMMAND(mode),
REGISTER_WRC_COMMAND(mac),
REGISTER_WRC_COMMAND(sdb),
REGISTER_WRC_COMMAND(calibration),
REGISTER_WRC_COMMAND(help),
REGISTER_WRC_COMMAND(diag),
REGISTER_WRC_COMMAND(init),
REGISTER_WRC_COMMAND(sfp),
REGISTER_WRC_COMMAND(stat),
REGISTER_WRC_COMMAND(ver),
REGISTER_WRC_COMMAND(ptrack),
REGISTER_WRC_COMMAND(time),
#if HAS_IP == 1
REGISTER_WRC_COMMAND(ip),
#endif
#if HAS_VLANS == 1
REGISTER_WRC_COMMAND(vlan),
#endif
#if HAS_CMD_PPS == 1
REGISTER_WRC_COMMAND(pps),
#endif
#if HAS_CMD_LEAPSEC == 1
REGISTER_WRC_COMMAND(leapsec),
#endif
#if HAS_CMD_NETCONSOLE == 1
REGISTER_WRC_COMMAND(netconsole),
#endif
#include <board_cmd_reg.h>
};
static int n_cmds = ARRAY_SIZE(cmds);
int shell_is_interacting;
int (*shell_ui_callback)(void);
......@@ -342,18 +419,6 @@ void shell_show_build_init(void)
pp_printf("(empty)\n");
}
void shell_register_command( struct wrc_shell_cmd* cmd )
{
if( n_cmds >= SHELL_MAX_COMMANDS )
{
pp_printf("can't register shell command '%s', increase SHELL_MAX_COMMANDS\n", cmd->name );
return;
}
cmds[ n_cmds ] = cmd;
n_cmds++;
}
void shell_list_cmds()
{
int i;
......@@ -373,36 +438,3 @@ void shell_activate_ui_command( int (*callback)(void) )
cmd_len = 0;
}
#define REGISTER_WRC_COMMAND(_name) \
{ extern struct wrc_shell_cmd __wrc_cmd_ ## _name; shell_register_command( &__wrc_cmd_ ## _name ); }
void shell_register_commands(void)
{
REGISTER_WRC_COMMAND(gui);
REGISTER_WRC_COMMAND(ps);
REGISTER_WRC_COMMAND(pll);
REGISTER_WRC_COMMAND(ptp);
REGISTER_WRC_COMMAND(verbose);
REGISTER_WRC_COMMAND(mode);
REGISTER_WRC_COMMAND(mac);
REGISTER_WRC_COMMAND(sdb);
REGISTER_WRC_COMMAND(calibration);
REGISTER_WRC_COMMAND(help);
REGISTER_WRC_COMMAND(diag);
REGISTER_WRC_COMMAND(init);
REGISTER_WRC_COMMAND(sfp);
REGISTER_WRC_COMMAND(stat);
REGISTER_WRC_COMMAND(ver);
REGISTER_WRC_COMMAND(ptrack);
REGISTER_WRC_COMMAND(time);
if (HAS_IP)
REGISTER_WRC_COMMAND(ip);
if (HAS_VLANS)
REGISTER_WRC_COMMAND(vlan);
if (HAS_CMD_PPS)
REGISTER_WRC_COMMAND(pps);
if (HAS_CMD_LEAPSEC)
REGISTER_WRC_COMMAND(leapsec);
if (HAS_CMD_NETCONSOLE)
REGISTER_WRC_COMMAND(netconsole);
}
......@@ -108,7 +108,6 @@ static void wrc_initialize(void)
/* try reading t24 phase transition from EEPROM */
calib_t24p(WRC_MODE_MASTER, &cal_phase_transition);
shell_init();
shell_register_commands();
_endram = ENDRAM_MAGIC;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment