annotate rvinterf/etmsync/fsnew.c @ 497:74610c4f10f7

target-utils: added 10 ms delay at the end of abb_power_off() The deosmification of the ABB access code (replacement of osmo_delay_ms() bogus delays with correctly-timed ones, which are significantly shorter) had one annoying side effect: when executing the poweroff command from any of the programs, one last '=' prompt character was being sent (and received by the x86 host) as the Calypso board powers off. With delays being shorter now, the abb_power_off() function was returning and the standalone program's main loop was printing its prompt before the Iota chip fully executed the switch-off sequence! I thought about inserting an endless tight loop at the end of the abb_power_off() function, but the implemented solution of a 10 ms delay is a little nicer IMO because if the DEVOFF operation doesn't happen for some reason in a manual hacking scenario, there won't be an artificial blocker in the form of a tight loop keeping us from further poking around.
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 25 May 2019 20:44:05 +0000
parents 003e48f8ebe1
children 2cd5ac909e23
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
321
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * In this module we are going to implement the commands that upload
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * new FreeCalypso-invented stuff into the FFS of our FC devices.
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 */
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <sys/wait.h>
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <stdio.h>
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <stdlib.h>
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <unistd.h>
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include "exitcodes.h"
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 char batterytab_compile_tool[] = "/opt/freecalypso/bin/compile-fc-batt";
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 char charging_compile_tool[] = "/opt/freecalypso/bin/compile-fc-chg";
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 upload_fc_table_from_ascii(asciisrc, compiletool, ffs_pathname)
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 char *asciisrc, *compiletool, *ffs_pathname;
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 {
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 char tmpfile[] = "/tmp/fc-fsioXXXXXX";
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 int tmpfd;
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 pid_t child, waitres;
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 int status, rc;
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 tmpfd = mkstemp(tmpfile);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 if (tmpfd < 0) {
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 fprintf(stderr, "unable to get temp file via mkstemp()\n");
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 return(ERROR_UNIX);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 }
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 close(tmpfd);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 child = vfork();
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 if (child < 0) {
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 fprintf(stderr, "unable to vfork to run compiler tool\n");
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 unlink(tmpfile);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 return(ERROR_UNIX);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 }
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 if (!child) {
465
003e48f8ebe1 rvinterf/etmsync/fsnew.c: cast 0 to (char *) for execl sentinel
Mychaela Falconia <falcon@freecalypso.org>
parents: 321
diff changeset
36 execl(compiletool, compiletool, asciisrc, tmpfile, (char *) 0);
321
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 perror(compiletool);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 _exit(ERROR_UNIX);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 }
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 waitres = waitpid(child, &status, 0);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 if (waitres != child || !WIFEXITED(status)) {
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 fprintf(stderr, "unexpected wait result after compiler run\n");
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 unlink(tmpfile);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 return(ERROR_UNIX);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 }
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 rc = WEXITSTATUS(status);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 if (rc) {
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 unlink(tmpfile);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 return rc;
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 }
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 rc = fwrite_from_file(ffs_pathname, tmpfile);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 unlink(tmpfile);
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 return rc;
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 }
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 cmd_write_battery_table(argc, argv)
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 char **argv;
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 {
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 return upload_fc_table_from_ascii(argv[1], batterytab_compile_tool,
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 "/etc/batterytab");
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 }
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 cmd_write_charging_config(argc, argv)
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 char **argv;
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 {
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 return upload_fc_table_from_ascii(argv[1], charging_compile_tool,
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 "/etc/charging");
0cb766828d7a fc-fsio: implemented write-battery-table and write-charging-config commands
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 }