FreeCalypso > hg > freecalypso-tools
annotate loadtools/ltmisc.c @ 828:502aec4c1e8e
fc-buzplay: implement playt command for PWT melodies
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sun, 30 May 2021 20:54:02 +0000 | 
| parents | dfe6ba3611cd | 
| children | 
| rev | line source | 
|---|---|
| 0 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /* | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 * This module is a place to implement little miscellaneous fc-loadtool | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 * commands which don't belong anywhere else. | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 */ | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 #include <sys/types.h> | 
| 646 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 7 #include <sys/time.h> | 
| 0 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 #include <stdio.h> | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 #include <stdint.h> | 
| 640 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 10 #include <stdlib.h> | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 11 | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 12 cmd_crc32(argc, argv) | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 13 char **argv; | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 14 { | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 15 u_long area_base, area_len; | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 16 char *strtoul_endp; | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 17 u_long crc_result; | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 18 int stat; | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 19 | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 20 area_base = strtoul(argv[1], &strtoul_endp, 16); | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 21 if (*strtoul_endp) { | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 22 inv: fprintf(stderr, "usage: crc32 hex-start hex-len\n"); | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 23 return(-1); | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 24 } | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 25 area_len = strtoul(argv[2], &strtoul_endp, 16); | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 26 if (*strtoul_endp) | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 27 goto inv; | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 28 stat = crc32_on_target(area_base, area_len, &crc_result); | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 29 if (stat == 0) | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 30 printf("%08lX\n", crc_result); | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 31 return(stat); | 
| 
5385aca4d813
fc-loadtool module refactoring: CRC-32 functions split out
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 32 } | 
| 0 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 cmd_dieid(argc, argv) | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 char **argv; | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 { | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 static uint32_t addrs[4] = {0xFFFEF010, 0xFFFEF012, 0xFFFEF014, | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 0xFFFEF016}; | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 uint16_t data[4]; | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 int i, stat; | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 FILE *of; | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 for (i = 0; i < 4; i++) { | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 stat = do_r16(addrs[i], data + i); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 if (stat) | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 return(stat); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 printf("%08lX: %04X\n", (u_long)addrs[i], (int)data[i]); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 } | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 if (argc < 2) | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 return(0); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 of = fopen(argv[1], "w"); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 if (!of) { | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 perror(argv[1]); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 return(-1); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 } | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 for (i = 0; i < 4; i++) | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 fprintf(of, "%08lX: %04X\n", (u_long)addrs[i], (int)data[i]); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 fclose(of); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 printf("Saved to %s\n", argv[1]); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 return(0); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 } | 
| 646 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 62 | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 63 cmd_timeout_cal(argc, argv) | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 64 char **argv; | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 65 { | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 66 char *targv[3]; | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 67 struct timeval time1, time2, diff; | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 68 int rc; | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 69 | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 70 targv[0] = "sertimeout"; | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 71 targv[1] = argv[1]; | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 72 targv[2] = 0; | 
| 647 
dfe6ba3611cd
loadtool timeout-cal command: stupid bug
 Mychaela Falconia <falcon@freecalypso.org> parents: 
646diff
changeset | 73 if (tpinterf_make_cmd(targv) < 0) { | 
| 646 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 74 fprintf(stderr, "error: unable to form target command\n"); | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 75 return(-1); | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 76 } | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 77 if (tpinterf_send_cmd() < 0) | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 78 return(-1); | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 79 gettimeofday(&time1, 0); | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 80 rc = tpinterf_pass_output(60); | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 81 gettimeofday(&time2, 0); | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 82 if (rc) | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 83 return(rc); | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 84 timersub(&time2, &time1, &diff); | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 85 printf("%u.%06u s\n", (unsigned) diff.tv_sec, (unsigned) diff.tv_usec); | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 86 return(0); | 
| 
0d199c6a6ea4
fc-loadtool: timeout-cal internal developer command implemented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
640diff
changeset | 87 } | 
