1 | Config *
|
2 | start_param ()
|
3 | {
|
4 | Config * Config_PTR = NULL;
|
5 | Config_PTR = (Config *) malloc (sizeof(Config));
|
6 | while (Config_PTR == NULL)
|
7 | {
|
8 | printf ("No Space left in RAM!");
|
9 | Config_PTR = (Config *) malloc (sizeof(Config));
|
10 | }
|
11 | load_default_param (Config_PTR);
|
12 | return (Config_PTR);
|
13 | }
|
14 |
|
15 | int_fast8_t
|
16 | init_param (Config * const Config_PTR)
|
17 | {
|
18 | int_fast8_t Loaded = 0;
|
19 | char * Param_Target = build_target (Config_PTR->ParamFile_Path,
|
20 | Config_PTR->ParamFile_File);
|
21 | FILE * Start_Param = NULL;
|
22 | Start_Param = fopen (Param_Target, "r");
|
23 | free (Param_Target);
|
24 | Param_Target = NULL;
|
25 | if (Start_Param == NULL) load_default_param (Config_PTR);
|
26 | else
|
27 | {
|
28 | while (Loaded == 0)
|
29 | {
|
30 | Loaded = load_param_file (Config_PTR, Start_Param);
|
31 | if (Loaded == 0)
|
32 | {
|
33 | load_default_param (Config_PTR);
|
34 | break;
|
35 | }
|
36 | }
|
37 | }
|
38 | if (Start_Param != NULL)
|
39 | {
|
40 | fclose (Start_Param);
|
41 | Start_Param = NULL;
|
42 | }
|
43 | return (Loaded);
|
44 | }
|
45 |
|
46 | void
|
47 | load_default_param (Config * const Config_PTR)
|
48 | {
|
49 | Config_PTR->SD_Only = Default_SD_Only_INT;
|
50 | Config_PTR->Clean_SD_Messdata = Default_Clean_SD_Messdata_INT;
|
51 | Config_PTR->Time_Lap = Default_Time_Lap;
|
52 | .
|
53 | .
|
54 | .
|
55 | }
|
56 |
|
57 | int_fast8_t
|
58 | load_param_file (Config * const Config_PTR, FILE* Start_Param)
|
59 | {
|
60 | int8_t OPTSDONLY = 0, OPTSDCLEAN = 0, OPTTIMELAP = 0, OPTHOSTPORT = 0,
|
61 | OPTHOSTIP = 0, OPTUSERSFTP = 0, OPTPWSFTP = 0, OPTMESSPATH = 0,
|
62 | OPTFIRMPATH = 0, OPTFIRMFILE = 0, OPTFIRMFILESHA1 = 0, OPTPARAMPATH = 0,
|
63 | OPTPARAMFILE = 0, OPTPARAMFILESHA1 = 0,/* OPTPARNAM = 0,*/OPTFIRMNAM = 0;
|
64 | const char delim[] =
|
65 | { '=', ';' };
|
66 | volatile char * TMP = NULL;
|
67 | volatile char * TMP2 = NULL;
|
68 | volatile char * tok_buf;
|
69 | TMP = malloc (sizeof(char) * MAX);
|
70 | while (TMP == NULL)
|
71 | {
|
72 | printf ("No Space left in RAM!");
|
73 | TMP = malloc (sizeof(char) * MAX);
|
74 | }
|
75 | /*tok_buf = malloc(sizeof(char) * MAX);
|
76 | while (tok_buf == NULL) {
|
77 | printf("No Space left in RAM!");
|
78 | tok_buf = malloc(sizeof(char) * MAX);
|
79 | }*/
|
80 | /* TMP2 = malloc (sizeof(char) * MAX);
|
81 | while(TMP"" == NULL)
|
82 | {
|
83 | printf("No Space left in RAM!");
|
84 | TMP2 = malloc (sizeof(char) * MAX);
|
85 | }*/
|
86 | while (!OPTOK)
|
87 | {
|
88 | if ((fgets (TMP, (sizeof(char) * MAX), Start_Param) == NULL) && !OPTOK)
|
89 | {
|
90 | free (TMP);
|
91 | TMP = NULL;
|
92 | TMP2 = NULL;
|
93 | return (0);
|
94 | }
|
95 | del_n (TMP);
|
96 | TMP2 = strtok_r (TMP, delim, &tok_buf);
|
97 | if (TMP2 == NULL && !OPTOK)
|
98 | {
|
99 | printf ("Nothing in Token!\n");
|
100 | free (TMP);
|
101 | TMP = NULL;
|
102 | TMP2 = NULL;
|
103 | return (0);
|
104 | }
|
105 | if (!(strncmp (TMP2, "SDOnly", (sizeof(char) * strnlen ("SDOnly", NMAX)))))
|
106 | {
|
107 | TMP2 = strtok_r (NULL, delim, &tok_buf);
|
108 | if (!(strncmp (TMP2, "YES", (sizeof(char) * strnlen ("YES", NMAX))))) Config_PTR->SD_Only =
|
109 | 1;
|
110 | else if (!(strncmp (TMP2, "NO", (sizeof(char) * strnlen ("NO", NMAX))))) Config_PTR->SD_Only =
|
111 | 0;
|
112 | else Config_PTR->SD_Only = Default_SD_Only_INT;
|
113 | OPTSDONLY = 1;
|
114 | continue;
|
115 | }
|
116 | else if (!strncmp (TMP2, "CleanSDMessdata",
|
117 | (sizeof(char) * strnlen ("CleanSDMessdata", NMAX))))
|
118 | {
|
119 | TMP2 = strtok_r (NULL, delim, &tok_buf);
|
120 | if (!(strncmp (TMP2, "YES", (sizeof(char) * strnlen ("YES", NMAX))))) Config_PTR->Clean_SD_Messdata =
|
121 | 1;
|
122 | else if (!(strncmp (TMP2, "NO", (sizeof(char) * strnlen ("NO", NMAX))))) Config_PTR->Clean_SD_Messdata =
|
123 | 0;
|
124 | else Config_PTR->Clean_SD_Messdata = Default_Clean_SD_Messdata_INT;
|
125 | OPTSDCLEAN = 1;
|
126 | continue;
|
127 | }
|
128 | else if (!strncmp (TMP2, "TimeLap",
|
129 | (sizeof(char) * strnlen ("TimeLap", NMAX))))
|
130 | {
|
131 | TMP2 = strtok_r (NULL, delim, &tok_buf);
|
132 | Config_PTR->Time_Lap = (uint32_t) atoi (TMP2);
|
133 | OPTTIMELAP = 1;
|
134 | continue;
|
135 | }
|
136 | .
|
137 | .
|
138 | .
|
139 | }
|