2 * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
23 #include "configuration.h"
27 int gt_config_help(void *data)
29 printf("Configuration help function\n");
33 struct gt_config_create_data {
36 struct gt_setting *attrs;
40 static void gt_config_create_destructor(void *data)
42 struct gt_config_create_data *dt;
46 dt = (struct gt_config_create_data *)data;
47 gt_setting_list_cleanup(dt->attrs);
51 static int gt_config_create_func(void *data)
53 struct gt_config_create_data *dt;
54 struct gt_setting *ptr;
56 dt = (struct gt_config_create_data *)data;
57 printf("Config create called successfully. Not implemented.\n");
58 printf("gadget = %s, config = %s, force = %d",
59 dt->gadget, dt->config, !!(dt->opts & GT_FORCE));
62 while (ptr->variable) {
63 printf(", %s = %s", ptr->variable, ptr->value);
71 static int gt_config_create_help(void *data)
73 printf("Config create help.\n");
77 static void gt_parse_config_create(const Command *cmd, int argc, char **argv,
78 ExecutableCommand *exec, void *data)
82 struct gt_config_create_data *dt;
83 int avaible_opts = GT_FORCE;
85 dt = zalloc(sizeof(*dt));
88 ind = gt_get_options(&dt->opts, avaible_opts, argc, argv);
95 dt->gadget = argv[ind++];
96 dt->config = argv[ind++];
97 c = gt_parse_setting_list(&dt->attrs, argc - ind, argv + ind);
101 executable_command_set(exec, gt_config_create_func,
102 (void *)dt, gt_config_create_destructor);
106 gt_config_create_destructor((void *)dt);
107 executable_command_set(exec, cmd->printHelp, data, NULL);
110 struct gt_config_rm_data {
116 static int gt_config_rm_func(void *data)
118 struct gt_config_rm_data *dt;
120 dt = (struct gt_config_rm_data *)data;
121 printf("Config rm called successfully. Not implemented.\n");
122 printf("gadget = %s, config = %s, force = %d, recursive = %d\n",
123 dt->gadget, dt->config, !!(dt->opts & GT_FORCE),
124 !!(dt->opts & GT_RECURSIVE));
129 static int gt_config_rm_help(void *data)
131 printf("Config rm help.\n");
135 static void gt_parse_config_rm(const Command *cmd, int argc, char **argv,
136 ExecutableCommand *exec, void *data)
139 struct gt_config_rm_data *dt;
140 int avaible_opts = GT_FORCE | GT_RECURSIVE;
142 dt = zalloc(sizeof(*dt));
145 ind = gt_get_options(&dt->opts, avaible_opts, argc, argv);
152 dt->gadget = argv[ind++];
153 dt->config = argv[ind++];
154 executable_command_set(exec, gt_config_rm_func, (void *)dt, free);
159 executable_command_set(exec, cmd->printHelp, data, NULL);
162 struct gt_config_get_data {
168 static void gt_config_get_destructor(void *data)
170 struct gt_config_get_data *dt;
174 dt = (struct gt_config_get_data *)data;
179 static int gt_config_get_func(void *data)
181 struct gt_config_get_data *dt;
184 dt = (struct gt_config_get_data *)data;
185 printf("Config get called successfully. Not implemented.\n");
186 printf("gadget = %s, config = %s, attrs = ",
187 dt->gadget, dt->config);
190 printf("%s, ", *ptr);
197 static int gt_config_get_help(void *data)
199 printf("Config get help.\n");
203 static void gt_parse_config_get(const Command *cmd, int argc, char **argv,
204 ExecutableCommand *exec, void *data)
206 struct gt_config_get_data *dt = NULL;
212 dt = zalloc(sizeof(*dt));
216 dt->gadget = argv[0];
217 dt->config = argv[1];
219 dt->attrs = calloc(argc - 1, sizeof(char *));
220 if (dt->attrs == NULL)
224 for (i = 0; argv[i]; i++)
225 dt->attrs[i] = argv[i];
227 executable_command_set(exec, gt_config_get_func, (void *)dt,
228 gt_config_get_destructor);
231 gt_config_get_destructor((void *)dt);
232 executable_command_set(exec, cmd->printHelp, data, NULL);
235 struct gt_config_set_data {
238 struct gt_setting *attrs;
241 static void gt_config_set_destructor(void *data)
243 struct gt_config_set_data *dt;
247 dt = (struct gt_config_set_data *)data;
248 gt_setting_list_cleanup(dt->attrs);
252 static int gt_config_set_func(void *data)
254 struct gt_config_set_data *dt;
255 struct gt_setting *ptr;
257 dt = (struct gt_config_set_data *)data;
258 printf("Config set called successfully. Not implemented.\n");
259 printf("gadget = %s, config = %s", dt->gadget, dt->config);
261 while (ptr->variable) {
262 printf(", %s = %s", ptr->variable, ptr->value);
270 static int gt_config_set_help(void *data)
272 printf("Config set help.\n");
276 static void gt_parse_config_set(const Command *cmd, int argc, char **argv,
277 ExecutableCommand *exec, void *data)
279 struct gt_config_set_data *dt = NULL;
284 dt = zalloc(sizeof(*dt));
288 dt->gadget = argv[0];
289 dt->config = argv[1];
290 tmp = gt_parse_setting_list(&dt->attrs, argc - 2, argv + 2);
294 executable_command_set(exec, gt_config_set_func, (void *)dt,
295 gt_config_set_destructor);
298 gt_config_set_destructor((void *)dt);
299 executable_command_set(exec, cmd->printHelp, data, NULL);
301 const Command *gt_config_get_children(const Command *cmd)
303 static Command commands[] = {
304 {"create", NEXT, gt_parse_config_create, NULL,
305 gt_config_create_help},
306 {"rm", NEXT, gt_parse_config_rm, NULL, gt_config_rm_help},
307 {"get", NEXT, gt_parse_config_get, NULL, gt_config_get_help},
308 {"set", NEXT, gt_parse_config_set, NULL, gt_config_set_help},
309 // {"add", AGAIN, gt_parse_config_add, NULL, gt_config_add_help},
310 // {"del", AGAIN, gt_parse_config_del, NULL, gt_config_del_help},
311 // {"template", NEXT, command_parse,
312 // gt_config_template_get_children,
313 // gt_config_template_help},
314 // {NULL, PREV, gt_parse_config_config, NULL,
315 // gt_config_config_help},