From: Pavel Pisa Date: Tue, 27 Oct 2015 20:57:24 +0000 (+0100) Subject: Added commands to control echo mode and check commands FIFOs round-trip. X-Git-Url: https://rtime.felk.cvut.cz/gitweb/fpga/lx-cpu1/lx-dad.git/commitdiff_plain/d42f4be4d159ad9956321ceb3bd70f9fc8a071c4 Added commands to control echo mode and check commands FIFOs round-trip. Signed-off-by: Pavel Pisa --- diff --git a/sw/app/lx_dad/Makefile.omk b/sw/app/lx_dad/Makefile.omk index 9a25692..100fb63 100644 --- a/sw/app/lx_dad/Makefile.omk +++ b/sw/app/lx_dad/Makefile.omk @@ -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 diff --git a/sw/app/lx_dad/appl_cmdproc.c b/sw/app/lx_dad/appl_cmdproc.c index 6df8114..3c81054 100644 --- a/sw/app/lx_dad/appl_cmdproc.c +++ b/sw/app/lx_dad/appl_cmdproc.c @@ -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 index 0000000..18ab1d7 --- /dev/null +++ b/sw/app/lx_dad/appl_cmds.c @@ -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 +#include +#include +#include +#include +#include + +#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 +};