1 /*******************************************************************
2 Motion and Robotic System (MARS) aplication components
4 appl_dprint.c - debug print to the console
6 Copyright (C) 2001-2014 by Pavel Pisa - originator
8 (C) 2001-2014 by PiKRON Ltd. - originator
11 This file can be used and copied according to next
13 - GPL - GNU Public License
14 - other license provided by project originators
16 *******************************************************************/
19 #include <system_def.h>
24 #include <pxmc_cmds.h>
27 #include "appl_defs.h"
29 /* selection of debug messages */
31 #define DBGPF_AXES 0x00ff /* mask for all axes */
32 #define DBGPF_PER_TIME 0x0100 /* periodic time print */
33 #define DBGPF_PER_POS 0x0800 /* periodic position info */
34 #define DBGPF_CMD_PROC 0x1000 /* command proccessing */
35 unsigned dbg_prt_flg=0;
37 typedef struct dbg_prt_des{
43 const dbg_prt_des_t dbg_prt_des[]={
46 {DBGPF_PER_TIME,"time"},
47 {DBGPF_PER_POS, "pos"},
48 {DBGPF_CMD_PROC,"cmd"},
52 void run_dbg_prt(cmd_io_t *cmd_io)
58 if(dbg_prt_flg & DBGPF_PER_POS) {
64 for(i=0,reg_mask=1;i<pxmc_main_list.pxml_cnt; i++,reg_mask<<=1){
65 if(dbg_prt_flg®_mask&DBGPF_AXES){
66 reg_ascii_id[0]='A'+i;
67 cmd_io_puts(cmd_io,reg_ascii_id);
68 mcs=pxmc_main_list.pxml_arr[i];
69 i2str(s,mcs->pxms_ap>>PXMC_SUBDIV(mcs),8,0);
70 cmd_io_puts(cmd_io,s);
71 cmd_io_puts(cmd_io,mcs->pxms_flg&PXMS_ERR_m?" E":
72 mcs->pxms_flg&PXMS_BSY_m?" B":" -");
74 cmd_io_puts(cmd_io," hal");
75 i2str(s,mcs->pxms_hal,2,0);
76 cmd_io_puts(cmd_io,s);
78 cmd_io_puts(cmd_io,mcs->pxms_flg&PXMS_PHA_m?" A":
79 mcs->pxms_flg&PXMS_PTI_m?" I":" -");
81 cmd_io_puts(cmd_io," i");
82 i2str(s,mcs->pxms_ptindx,4,0);
83 cmd_io_puts(cmd_io,s);
85 cmd_io_puts(cmd_io," o");
86 i2str(s,mcs->pxms_ptofs,6,0);
87 cmd_io_puts(cmd_io,s);
89 cmd_io_puts(cmd_io,"\r\n");
95 int cmd_do_switches(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[])
99 dbg_prt_des_t *pdes,*pd;
103 pval=(unsigned*)(des->info[0]);
104 pdes=(dbg_prt_des_t*)(des->info[1]);
105 ps=(des->mode&CDESM_OPCHR)?param[3]:param[1];
109 printf(" %s",pdes->name);
119 else if(*ps=='-'){pm_flag=1;ps++;}
121 if(isdigit((uint8_t)*ps)){if(si_long(&ps,&l,0)<0) return -1;}
123 si_alnumn(&ps,str,20);
126 if(!pd->name) return -1;
127 if(!strcmp(pd->name,str)){
140 cmd_des_t const cmd_des_dprint={0, 0,"dprint","enable debug messages to print, use + - to add remove, list types ?",
142 {(char*)&dbg_prt_flg,(char*)dbg_prt_des}};