2 * Copyright (c) 2018 Samsung Electronics Co., Ltd. All rights reserved.
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.
22 #include <sys/socket.h>
32 extern struct menu_data menu_mdg_manager[];
34 extern GList *found_group_list;
35 extern GList *found_device_list;
36 extern GList *found_invited_device_list;
39 #define CASE_TO_STR(x) case x: return #x;
41 void receive_request_result(char *cmd, char *device_id, unsigned char *arg,
42 int len, int ret, void *user_data);
44 const char* mdg_error_to_string(mdg_error_e err)
47 /* CHECK: List all enum values here */
48 CASE_TO_STR(MDG_ERROR_NONE)
49 CASE_TO_STR(MDG_ERROR_IO_ERROR)
50 CASE_TO_STR(MDG_ERROR_INVALID_PARAMETER)
51 CASE_TO_STR(MDG_ERROR_OUT_OF_MEMORY)
52 CASE_TO_STR(MDG_ERROR_PERMISSION_DENIED)
53 CASE_TO_STR(MDG_ERROR_NOT_SUPPORTED)
54 CASE_TO_STR(MDG_ERROR_OPERATION_FAILED)
55 CASE_TO_STR(MDG_ERROR_NO_DATA)
56 CASE_TO_STR(MDG_ERROR_ALREADY_REGISTERED)
57 CASE_TO_STR(MDG_ERROR_IN_PROGRESS)
58 CASE_TO_STR(MDG_ERROR_COMM_ERROR)
59 CASE_TO_STR(MDG_ERROR_NOT_STARTED)
60 CASE_TO_STR(MDG_ERROR_DB)
61 CASE_TO_STR(MDG_ERROR_NOT_PROPER_GROUP)
62 CASE_TO_STR(MDG_ERROR_NOT_PROPER_DEVICE)
65 return "MDG_ERROR_UNKNOWN";
69 const char *mdg_group_type_to_string(mdg_group_type_e e)
72 CASE_TO_STR(MDG_GROUP_TYPE_LOCAL)
73 CASE_TO_STR(MDG_GROUP_TYPE_REMOTE)
75 return "Unknown station type";
80 static int __init_func(MManager *mm, struct menu_data *menu)
84 ret = mdg_initialize(&handle);
86 msg("Failed to initialize mdgd: [%s(0x%X)]",
87 mdg_error_to_string(ret), ret);
91 ret = mdg_request_result_callback(handle, receive_request_result,
94 msg("Failed to request result callback: [%s(0x%X)]",
95 mdg_error_to_string(ret), ret);
102 static struct menu_data menu_main[] = {
103 { "1", "Mdg-Manager", menu_mdg_manager, NULL, NULL },
107 static gboolean __create_init_menu(struct menu_data init_menu[1])
109 init_menu[0].key = "1";
110 init_menu[0].title = "Init";
111 init_menu[0].sub_menu = menu_main;
112 init_menu[0].callback = __init_func;
113 init_menu[0].data = NULL;
118 void _free_group(gpointer data)
120 mdg_group_info_destroy(data);
123 void _free_device(gpointer data)
125 mdg_device_info_destroy(data);
128 int main(int arg, char **argv)
130 GMainLoop *mainloop = NULL;
131 GIOChannel *channel = g_io_channel_unix_new(STDIN_FILENO);
133 struct menu_data init_menu[1+1] = { {NULL, NULL, } };
135 #if !GLIB_CHECK_VERSION(2, 35, 0)
138 mainloop = g_main_loop_new(NULL, FALSE);
141 msg("* Mdg-Manager Test application ");
142 msg("* Build On: %s %s", __DATE__, __TIME__);
144 if (__create_init_menu(init_menu) == FALSE)
147 manager = menu_manager_new(init_menu, mainloop);
151 menu_manager_run(manager);
153 g_io_add_watch(channel, (G_IO_IN | G_IO_ERR | G_IO_HUP | G_IO_NVAL),
154 on_menu_manager_keyboard, manager);
155 g_main_loop_run(mainloop);
158 if (found_group_list)
159 g_list_free_full(found_group_list, _free_group);
160 if (found_device_list)
161 g_list_free_full(found_device_list, _free_device);
162 if (found_invited_device_list)
163 g_list_free_full(found_invited_device_list, _free_device);
165 mdg_deinitialize(handle);
167 g_main_loop_unref(mainloop);
168 msg("******* Bye bye *******");