FreeCalypso > hg > freecalypso-tools
annotate rvinterf/etmsync/fsnew.c @ 344:e0260c2982b6
fcup-atinterf: brown paper bag
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sun, 04 Feb 2018 08:23:54 +0000 | 
| parents | 0cb766828d7a | 
| children | 003e48f8ebe1 | 
| 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) { | 
| 
0cb766828d7a
fc-fsio: implemented write-battery-table and write-charging-config commands
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 execl(compiletool, compiletool, asciisrc, tmpfile, 0); | 
| 
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 } | 
