diff --git a/nshlib/Kconfig b/nshlib/Kconfig index a1f2810321b..cb782f56d1a 100644 --- a/nshlib/Kconfig +++ b/nshlib/Kconfig @@ -569,6 +569,11 @@ config NSH_DISABLE_ROUTE depends on FS_PROCFS && NET_ROUTE && !FS_PROCFS_EXCLUDE_NET && !FS_PROCFS_EXCLUDE_ROUTE default DEFAULT_SMALL +config NSH_DISABLE_RPMSG + bool "Disable rpmsg" + default DEFAULT_SMALL + depends on RPMSG + config NSH_DISABLE_RPTUN bool "Disable rptun" default DEFAULT_SMALL diff --git a/nshlib/nsh.h b/nshlib/nsh.h index 8b0bbfb7924..96346ee9e30 100644 --- a/nshlib/nsh.h +++ b/nshlib/nsh.h @@ -1141,6 +1141,10 @@ int cmd_switchboot(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv); FAR char **argv); #endif +#if defined(CONFIG_RPMSG) && !defined(CONFIG_NSH_DISABLE_RPMSG) + int cmd_rpmsg(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv); +#endif + #if defined(CONFIG_RPTUN) && !defined(CONFIG_NSH_DISABLE_RPTUN) int cmd_rptun(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv); #endif diff --git a/nshlib/nsh_command.c b/nshlib/nsh_command.c index 9da47ef3eba..e15b8c6728c 100644 --- a/nshlib/nsh_command.c +++ b/nshlib/nsh_command.c @@ -523,6 +523,12 @@ static const struct cmdmap_s g_cmdmap[] = #endif #endif +#if defined(CONFIG_RPMSG) && !defined(CONFIG_NSH_DISABLE_RPMSG) + CMD_MAP("rpmsg", cmd_rpmsg, 2, 7, + " " + " [value|times length ack sleep]"), +#endif + #if defined(CONFIG_RPTUN) && !defined(CONFIG_NSH_DISABLE_RPTUN) CMD_MAP("rptun", cmd_rptun, 2, 7, " " diff --git a/nshlib/nsh_syscmds.c b/nshlib/nsh_syscmds.c index 9882099a26f..b5fa7af080f 100644 --- a/nshlib/nsh_syscmds.c +++ b/nshlib/nsh_syscmds.c @@ -510,15 +510,15 @@ int cmd_reset_cause(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) #endif /**************************************************************************** - * Name: cmd_rptun + * Name: cmd_rpmsg ****************************************************************************/ -#if defined(CONFIG_RPTUN) && !defined(CONFIG_NSH_DISABLE_RPTUN) -static int cmd_rptun_once(FAR struct nsh_vtbl_s *vtbl, +#if defined(CONFIG_RPMSG) && !defined(CONFIG_NSH_DISABLE_RPMSG) +static int cmd_rpmsg_once(FAR struct nsh_vtbl_s *vtbl, FAR const char *path, FAR char **argv) { -#ifdef CONFIG_RPTUN_PING - struct rptun_ping_s ping; +#ifdef CONFIG_RPMSG_PING + struct rpmsg_ping_s ping; #endif unsigned long val = 0; int cmd; @@ -526,26 +526,26 @@ static int cmd_rptun_once(FAR struct nsh_vtbl_s *vtbl, if (strcmp(argv[1], "start") == 0) { - cmd = RPTUNIOC_START; + cmd = RPMSGIOC_START; } else if (strcmp(argv[1], "stop") == 0) { - cmd = RPTUNIOC_STOP; + cmd = RPMSGIOC_STOP; } else if (strcmp(argv[1], "reset") == 0) { val = atoi(argv[3]); - cmd = RPTUNIOC_RESET; + cmd = RPMSGIOC_RESET; } else if (strcmp(argv[1], "panic") == 0) { - cmd = RPTUNIOC_PANIC; + cmd = RPMSGIOC_PANIC; } else if (strcmp(argv[1], "dump") == 0) { - cmd = RPTUNIOC_DUMP; + cmd = RPMSGIOC_DUMP; } -#ifdef CONFIG_RPTUN_PING +#ifdef CONFIG_RPMSG_PING else if (strcmp(argv[1], "ping") == 0) { if (argv[3] == 0 || argv[4] == 0 || @@ -560,7 +560,7 @@ static int cmd_rptun_once(FAR struct nsh_vtbl_s *vtbl, ping.ack = atoi(argv[5]); ping.sleep = atoi(argv[6]); - cmd = RPTUNIOC_PING; + cmd = RPMSGIOC_PING; val = (unsigned long)&ping; } #endif @@ -584,7 +584,7 @@ static int cmd_rptun_once(FAR struct nsh_vtbl_s *vtbl, return cmd; } -static int cmd_rptun_recursive(FAR struct nsh_vtbl_s *vtbl, +static int cmd_rpmsg_recursive(FAR struct nsh_vtbl_s *vtbl, FAR const char *dirpath, FAR struct dirent *entryp, FAR void *pvarg) @@ -600,36 +600,68 @@ static int cmd_rptun_recursive(FAR struct nsh_vtbl_s *vtbl, path = nsh_getdirpath(vtbl, dirpath, entryp->d_name); if (path) { - ret = cmd_rptun_once(vtbl, path, pvarg); + ret = cmd_rpmsg_once(vtbl, path, pvarg); free(path); } return ret; } -int cmd_rptun(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) +static int cmd_rpmsg_help(FAR struct nsh_vtbl_s *vtbl, int argc, + FAR char **argv) +{ + nsh_output(vtbl, "%s \n", argv[0]); + nsh_output(vtbl, "%s ping " + "\n\n", argv[0]); + nsh_output(vtbl, " Times of rptun ping.\n"); + nsh_output(vtbl, " The length of each ping packet.\n"); + nsh_output(vtbl, " Whether the peer acknowlege or " + "check data.\n"); + nsh_output(vtbl, " 0 - No acknowledge and check.\n"); + nsh_output(vtbl, " 1 - Acknowledge, no data check.\n"); + nsh_output(vtbl, " 2 - Acknowledge and data check.\n"); + nsh_output(vtbl, " ping period (ms) \n"); + nsh_output(vtbl, " Rpmsg device path.\n\n"); + return OK; +} + +int cmd_rpmsg(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) { if (argc >= 2 && strcmp(argv[1], "-h") == 0) { - nsh_output(vtbl, "usage:\n"); - nsh_output(vtbl, " rptun " - "\n"); - nsh_output(vtbl, " rptun \n"); -#ifdef CONFIG_RPTUN_PING - nsh_output(vtbl, " rptun ping " - "\n\n"); - nsh_output(vtbl, " Rptun device path.\n"); - nsh_output(vtbl, " Times of rptun ping.\n"); - nsh_output(vtbl, " The length of each ping packet.\n"); - nsh_output(vtbl, " Whether the peer acknowlege or " - "check data.\n"); - nsh_output(vtbl, " 0 - No acknowledge and check.\n"); - nsh_output(vtbl, " 1 - Acknowledge, no data check.\n"); - nsh_output(vtbl, " 2 - Acknowledge and data check.\n"); - nsh_output(vtbl, " ping period (ms) \n\n"); + nsh_output(vtbl, "usage:\n\n"); + return cmd_rpmsg_help(vtbl, argc, argv); + } + + if (argc < 3) + { + nsh_output(vtbl, g_fmtargrequired, argv[0]); + return ERROR; + } + + if (strcmp(argv[2], "all") == 0) + { + return nsh_foreach_direntry(vtbl, "rpmsg", "/dev/rpmsg", + cmd_rpmsg_recursive, argv); + } + + return cmd_rpmsg_once(vtbl, argv[2], argv); +} #endif - return OK; +/**************************************************************************** + * Name: cmd_rptun + ****************************************************************************/ + +#if defined(CONFIG_RPTUN) && !defined(CONFIG_NSH_DISABLE_RPTUN) +int cmd_rptun(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) +{ + if (argc >= 2 && strcmp(argv[1], "-h") == 0) + { + nsh_output(vtbl, "usage:\n\n"); + nsh_output(vtbl, "rptun \n"); + nsh_output(vtbl, "rptun \n"); + return cmd_rpmsg_help(vtbl, argc, argv); } if (argc < 3) @@ -641,10 +673,10 @@ int cmd_rptun(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) if (strcmp(argv[2], "all") == 0) { return nsh_foreach_direntry(vtbl, "rptun", "/dev/rptun", - cmd_rptun_recursive, argv); + cmd_rpmsg_recursive, argv); } - return cmd_rptun_once(vtbl, argv[2], argv); + return cmd_rpmsg_once(vtbl, argv[2], argv); } #endif