FreeCalypso > hg > freecalypso-tools
view loadtools/ltmisc.c @ 783:c136a1a2474b
simagent: initial implementation of APDU exchange
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 13 Mar 2021 22:06:08 +0000 |
parents | dfe6ba3611cd |
children |
line wrap: on
line source
/* * This module is a place to implement little miscellaneous fc-loadtool * commands which don't belong anywhere else. */ #include <sys/types.h> #include <sys/time.h> #include <stdio.h> #include <stdint.h> #include <stdlib.h> cmd_crc32(argc, argv) char **argv; { u_long area_base, area_len; char *strtoul_endp; u_long crc_result; int stat; area_base = strtoul(argv[1], &strtoul_endp, 16); if (*strtoul_endp) { inv: fprintf(stderr, "usage: crc32 hex-start hex-len\n"); return(-1); } area_len = strtoul(argv[2], &strtoul_endp, 16); if (*strtoul_endp) goto inv; stat = crc32_on_target(area_base, area_len, &crc_result); if (stat == 0) printf("%08lX\n", crc_result); return(stat); } cmd_dieid(argc, argv) char **argv; { static uint32_t addrs[4] = {0xFFFEF010, 0xFFFEF012, 0xFFFEF014, 0xFFFEF016}; uint16_t data[4]; int i, stat; FILE *of; for (i = 0; i < 4; i++) { stat = do_r16(addrs[i], data + i); if (stat) return(stat); printf("%08lX: %04X\n", (u_long)addrs[i], (int)data[i]); } if (argc < 2) return(0); of = fopen(argv[1], "w"); if (!of) { perror(argv[1]); return(-1); } for (i = 0; i < 4; i++) fprintf(of, "%08lX: %04X\n", (u_long)addrs[i], (int)data[i]); fclose(of); printf("Saved to %s\n", argv[1]); return(0); } cmd_timeout_cal(argc, argv) char **argv; { char *targv[3]; struct timeval time1, time2, diff; int rc; targv[0] = "sertimeout"; targv[1] = argv[1]; targv[2] = 0; if (tpinterf_make_cmd(targv) < 0) { fprintf(stderr, "error: unable to form target command\n"); return(-1); } if (tpinterf_send_cmd() < 0) return(-1); gettimeofday(&time1, 0); rc = tpinterf_pass_output(60); gettimeofday(&time2, 0); if (rc) return(rc); timersub(&time2, &time1, &diff); printf("%u.%06u s\n", (unsigned) diff.tv_sec, (unsigned) diff.tv_usec); return(0); }