FreeCalypso > hg > freecalypso-tools
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 { |
