FreeCalypso > hg > freecalypso-sw
annotate loadtools/ltmain.c @ 295:3dd74b16df82
fc-fsio: pathname recursion handling revamped
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sat, 01 Mar 2014 08:01:08 +0000 |
parents | ccc5161848c7 |
children | 5e0e9bb26060 |
rev | line source |
---|---|
22
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
1 /* |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
2 * This module contains the main() function for fc-loadtool |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
3 */ |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
4 |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
5 #include <sys/types.h> |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
6 #include <stdint.h> |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
7 #include <stdio.h> |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
8 #include <stdlib.h> |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
9 #include <unistd.h> |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
10 #include "srecreader.h" |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
11 |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
12 extern char *target_ttydev; |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
13 extern struct srecreader iramimage; |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
14 extern char default_loadagent_image[]; |
29
dacf45e3d20f
loadtool: scripting functionality implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
27
diff
changeset
|
15 extern char hw_init_script[]; |
27
ae6294b8a015
loadtool: exit jump0 implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
23
diff
changeset
|
16 extern void (*default_exit)(); |
84
ccc5161848c7
loadtools: support building for GTA0x AP
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
51
diff
changeset
|
17 extern int gta_modem_poweron; |
27
ae6294b8a015
loadtool: exit jump0 implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
23
diff
changeset
|
18 |
22
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
19 main(argc, argv) |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
20 char **argv; |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
21 { |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
22 extern char *optarg; |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
23 extern int optind; |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
24 int c; |
29
dacf45e3d20f
loadtool: scripting functionality implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
27
diff
changeset
|
25 char command[512]; |
22
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
26 |
84
ccc5161848c7
loadtools: support building for GTA0x AP
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
51
diff
changeset
|
27 while ((c = getopt(argc, argv, "a:b:h:H:i:n")) != EOF) |
22
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
28 switch (c) { |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
29 case 'a': |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
30 iramimage.filename = optarg; |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
31 continue; |
51
aa62352647f7
loadtools: -b option works in fc-loadtool
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
45
diff
changeset
|
32 case 'b': |
aa62352647f7
loadtools: -b option works in fc-loadtool
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
45
diff
changeset
|
33 set_romload_baudrate(optarg); |
aa62352647f7
loadtools: -b option works in fc-loadtool
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
45
diff
changeset
|
34 continue; |
22
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
35 case 'h': |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
36 read_hwparam_file_shortname(optarg); |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
37 continue; |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
38 case 'H': |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
39 read_hwparam_file_fullpath(optarg); |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
40 continue; |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
41 case 'i': |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
42 set_beacon_interval(optarg); |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
43 continue; |
84
ccc5161848c7
loadtools: support building for GTA0x AP
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
51
diff
changeset
|
44 case 'n': |
ccc5161848c7
loadtools: support building for GTA0x AP
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
51
diff
changeset
|
45 gta_modem_poweron = 0; |
ccc5161848c7
loadtools: support building for GTA0x AP
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
51
diff
changeset
|
46 continue; |
22
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
47 case '?': |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
48 default: |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
49 usage: fprintf(stderr, |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
50 "usage: fc-loadtool [options] ttyport\n"); |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
51 exit(1); |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
52 } |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
53 if (argc - optind != 1) |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
54 goto usage; |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
55 target_ttydev = argv[optind]; |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
56 if (!iramimage.filename) |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
57 iramimage.filename = default_loadagent_image; |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
58 |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
59 open_target_serial(); |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
60 perform_romload(); |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
61 putchar('\n'); |
23
aca1948e9713
loadtool: initial version compiles and links
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
22
diff
changeset
|
62 if (tpinterf_pass_output(1) < 0) |
22
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
63 exit(1); |
29
dacf45e3d20f
loadtool: scripting functionality implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
27
diff
changeset
|
64 putchar('\n'); |
45
16315ed6401a
init-script logic implemented in fc-xram
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
29
diff
changeset
|
65 if (hw_init_script[0]) { |
29
dacf45e3d20f
loadtool: scripting functionality implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
27
diff
changeset
|
66 printf("Executing init script %s\n", hw_init_script); |
dacf45e3d20f
loadtool: scripting functionality implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
27
diff
changeset
|
67 loadtool_exec_script(hw_init_script); |
dacf45e3d20f
loadtool: scripting functionality implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
27
diff
changeset
|
68 } |
22
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
69 for (;;) { |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
70 if (isatty(0)) { |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
71 fputs("loadtool> ", stdout); |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
72 fflush(stdout); |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
73 } |
29
dacf45e3d20f
loadtool: scripting functionality implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
27
diff
changeset
|
74 if (!fgets(command, sizeof command, stdin)) |
27
ae6294b8a015
loadtool: exit jump0 implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
23
diff
changeset
|
75 default_exit(); |
29
dacf45e3d20f
loadtool: scripting functionality implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
27
diff
changeset
|
76 loadtool_dispatch_cmd(command, 0); |
22
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
77 } |
e658a84b37df
loadtool coming along
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
78 } |