comparison rvinterf/tmsh/abb.c @ 69:2159f260ed13

fc-tmsh: all commands internally return values in preparation for adding one-shot mode of operation
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 26 Oct 2016 23:17:03 +0000
parents e7502631a0f9
children
comparison
equal deleted inserted replaced
68:585f63e5bca6 69:2159f260ed13
9 #include <stdlib.h> 9 #include <stdlib.h>
10 #include "pktmux.h" 10 #include "pktmux.h"
11 #include "limits.h" 11 #include "limits.h"
12 #include "localtypes.h" 12 #include "localtypes.h"
13 #include "etm.h" 13 #include "etm.h"
14 #include "exitcodes.h"
14 15
15 extern u_char rvi_msg[]; 16 extern u_char rvi_msg[];
16 extern int rvi_msg_len; 17 extern int rvi_msg_len;
17 18
18 void
19 cmd_abbr(argc, argv) 19 cmd_abbr(argc, argv)
20 char **argv; 20 char **argv;
21 { 21 {
22 u32 page, reg; 22 u32 page, reg;
23 u_char cmdpkt[5]; 23 u_char cmdpkt[5];
24 24
25 page = strtoul(argv[1], 0, 0); 25 page = strtoul(argv[1], 0, 0);
26 reg = strtoul(argv[2], 0, 0); 26 reg = strtoul(argv[2], 0, 0);
27 if (page > 1 || reg > 31) { 27 if (page > 1 || reg > 31) {
28 printf("error: argument(s) out of range\n"); 28 printf("error: argument(s) out of range\n");
29 return; 29 return(ERROR_USAGE);
30 } 30 }
31 cmdpkt[1] = ETM_CORE; 31 cmdpkt[1] = ETM_CORE;
32 cmdpkt[2] = TMCORE_OPC_CODEC_RD; 32 cmdpkt[2] = TMCORE_OPC_CODEC_RD;
33 cmdpkt[3] = page << 5 | reg; 33 cmdpkt[3] = page << 5 | reg;
34 send_etm_cmd(cmdpkt, 3); 34 send_etm_cmd(cmdpkt, 3);
35 return(0);
35 } 36 }
36 37
37 void 38 void
38 abbr_response() 39 abbr_response()
39 { 40 {
53 val = rvi_msg[6] | rvi_msg[7] << 8; 54 val = rvi_msg[6] | rvi_msg[7] << 8;
54 sprintf(buf, "abbr %u %u: %03X", pg, reg, val); 55 sprintf(buf, "abbr %u %u: %03X", pg, reg, val);
55 async_msg_output(buf); 56 async_msg_output(buf);
56 } 57 }
57 58
58 void
59 cmd_abbw(argc, argv) 59 cmd_abbw(argc, argv)
60 char **argv; 60 char **argv;
61 { 61 {
62 u32 page, reg, val; 62 u32 page, reg, val;
63 u_char cmdpkt[7]; 63 u_char cmdpkt[7];
65 page = strtoul(argv[1], 0, 0); 65 page = strtoul(argv[1], 0, 0);
66 reg = strtoul(argv[2], 0, 0); 66 reg = strtoul(argv[2], 0, 0);
67 val = strtoul(argv[3], 0, 16); 67 val = strtoul(argv[3], 0, 16);
68 if (page > 1 || reg > 31 || val > 0x3FF) { 68 if (page > 1 || reg > 31 || val > 0x3FF) {
69 printf("error: argument(s) out of range\n"); 69 printf("error: argument(s) out of range\n");
70 return; 70 return(ERROR_USAGE);
71 } 71 }
72 cmdpkt[1] = ETM_CORE; 72 cmdpkt[1] = ETM_CORE;
73 cmdpkt[2] = TMCORE_OPC_CODEC_WR; 73 cmdpkt[2] = TMCORE_OPC_CODEC_WR;
74 cmdpkt[3] = page << 5 | reg; 74 cmdpkt[3] = page << 5 | reg;
75 cmdpkt[4] = val; 75 cmdpkt[4] = val;
76 cmdpkt[5] = val >> 8; 76 cmdpkt[5] = val >> 8;
77 send_etm_cmd(cmdpkt, 5); 77 send_etm_cmd(cmdpkt, 5);
78 return(0);
78 } 79 }
79 80
80 void 81 void
81 abbw_response() 82 abbw_response()
82 { 83 {