]> rtime.felk.cvut.cz Git - fpga/lx-cpu1/lx-dad.git/commitdiff
Added commands to control echo mode and check commands FIFOs round-trip.
authorPavel Pisa <pisa@cmp.felk.cvut.cz>
Tue, 27 Oct 2015 20:57:24 +0000 (21:57 +0100)
committerPavel Pisa <pisa@cmp.felk.cvut.cz>
Tue, 27 Oct 2015 20:57:24 +0000 (21:57 +0100)
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
sw/app/lx_dad/Makefile.omk
sw/app/lx_dad/appl_cmdproc.c
sw/app/lx_dad/appl_cmds.c [new file with mode: 0644]

index 9a2569287762af2fbeb8a612dec2c07e5b6db7f7..100fb63862c6abf7c04ff5dfb35d1e30a23b22af 100644 (file)
@@ -72,7 +72,9 @@ endif
 endif
 
 ifeq ($(CONFIG_OC_CMDPROC),y)
-lx_dad_SOURCES += appl_cmdproc.c cmd_uartcon.c
+lx_dad_SOURCES += cmd_uartcon.c
+lx_dad_SOURCES += appl_cmdproc.c
+lx_dad_SOURCES += appl_cmds.c
 ifneq ($(CONFIG_APP_LX_DAD_WITH_SIM_POSIX),y)
 lx_dad_SOURCES += appl_tests.c
 endif
index 6df81144ab5b76c2f6138f580597a23377b51369..3c810548ca0d726ce1eee564dd12306cbbb3b7cc 100644 (file)
@@ -7,6 +7,7 @@
 #include "appl_defs.h"
 
 extern cmd_des_t const *cmd_pxmc_base[];
+extern cmd_des_t const *cmd_appl_specific[];
 extern cmd_des_t const *cmd_appl_tests[];
 extern cmd_des_t const *cmd_pxmc_ptable[];
 
@@ -21,6 +22,7 @@ cmd_des_t const cmd_des_help={
 cmd_des_t const *cmd_list_main[]={
   &cmd_des_help,
   CMD_DES_INCLUDE_SUBLIST(cmd_appl_tests),
+  CMD_DES_INCLUDE_SUBLIST(cmd_appl_specific),
  #ifdef CONFIG_PXMC
   CMD_DES_INCLUDE_SUBLIST(cmd_pxmc_base),
   CMD_DES_INCLUDE_SUBLIST(cmd_pxmc_ptable),
diff --git a/sw/app/lx_dad/appl_cmds.c b/sw/app/lx_dad/appl_cmds.c
new file mode 100644 (file)
index 0000000..18ab1d7
--- /dev/null
@@ -0,0 +1,80 @@
+/*******************************************************************
+  Motion and Robotic System (MARS) aplication components
+
+  appl_cmds.c - application specific commands 
+
+  Copyright (C) 2001-2015 by Pavel Pisa - originator
+                          pisa@cmp.felk.cvut.cz
+            (C) 2001-2015 by PiKRON Ltd. - originator
+                    http://www.pikron.com
+
+  This file can be used and copied according to next
+  license alternatives
+   - GPL - GNU Public License
+   - other license provided by project originators
+
+ *******************************************************************/
+
+#include <cpu_def.h>
+#include <system_def.h>
+#include <stdlib.h>
+#include <string.h>
+#include <cmd_proc.h>
+#include <utils.h>
+
+#include "appl_defs.h"
+
+#ifndef __STRINGIFY
+#define __STRINGIFY(x)     #x              /* stringify without expanding x */
+#endif
+#ifndef STRINGIFY
+#define STRINGIFY(x)    __STRINGIFY(x)        /* expand x, then stringify */
+#endif
+
+int cmd_do_ioecho(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
+{
+  int val;
+  int opchar;
+
+  if((opchar=cmd_opchar_check(cmd_io, des, param))<0) return opchar;
+  if(opchar == ':') {
+    val = *param[3];
+    if (val == '0')
+      cmd_io->priv.ed_line.in->flg &= ~FL_ELB_ECHO;
+    else if(val == '1')
+      cmd_io->priv.ed_line.in->flg |= FL_ELB_ECHO;
+    else return -CMDERR_BADPAR;
+  }else{
+    cmd_io_write(cmd_io, param[0], param[2]-param[0]);
+    cmd_io_putc(cmd_io,'=');
+    cmd_io_putc(cmd_io,cmd_io->priv.ed_line.in->flg & FL_ELB_ECHO?'1':'0');
+  }
+  return 0;
+}
+
+const char software_ver[]="LX_DAD v"STRINGIFY(SW_VER_MAJOR)"."STRINGIFY(SW_VER_MINOR)
+           " build Pi "__DATE__" "__TIME__;
+
+int cmd_do_ver(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
+{
+  if(*param[2]!='?') return -CMDERR_OPCHAR;
+  cmd_io_write(cmd_io,param[0],param[2]-param[0]);
+  cmd_io_putc(cmd_io,'=');
+  cmd_io_write(cmd_io,software_ver,strlen(software_ver));
+  return 0;
+}
+
+cmd_des_t const cmd_des_stamp={0, CDESM_OPCHR,
+                       "STAMP","host communication stamp",
+                       cmd_do_stamp,{}};
+cmd_des_t const cmd_des_echo={0, CDESM_OPCHR|CDESM_RW,
+                       "ECHO","enable echoing of received character",cmd_do_ioecho,{}};
+cmd_des_t const cmd_des_ver={0, CDESM_OPCHR|CDESM_RD,
+                       "VER","software version",cmd_do_ver,{}};
+
+cmd_des_t const *const cmd_appl_specific[]={
+  &cmd_des_stamp,
+  &cmd_des_echo,
+  &cmd_des_ver,
+  NULL
+};