14 _method_success_check(void *data, DBusMessage *msg __UNUSED__, DBusError *error)
16 const char *name = data;
18 if ((!error) || (!dbus_error_is_set(error)))
20 printf("SUCCESS: method %s() finished successfully.\n", name);
24 printf("FAILURE: method %s() finished with error: %s %s\n",
25 name, error->name, error->message);
26 dbus_error_free(error);
30 _elements_print(E_Ofono_Element **elements, unsigned int count)
33 for (i = 0; i < count; i++)
35 printf("--- element %d:\n", i);
36 e_ofono_element_print(stdout, elements[i]);
39 printf("END: all elements count = %u\n", count);
43 _on_element_add(void *data __UNUSED__, int type __UNUSED__, void *info)
45 E_Ofono_Element *element = info;
46 printf(">>> %s %s\n", element->path, element->interface);
51 _on_element_del(void *data __UNUSED__, int type __UNUSED__, void *info)
53 E_Ofono_Element *element = info;
54 printf("<<< %s %s\n", element->path, element->interface);
59 _on_element_updated(void *data __UNUSED__, int type __UNUSED__, void *info)
61 E_Ofono_Element *element = info;
62 printf("!!! %s %s\n", element->path, element->interface);
63 e_ofono_element_print(stderr, element);
67 _on_cmd_quit(char *cmd __UNUSED__, char *args __UNUSED__)
69 fputs("Bye!\n", stderr);
70 ecore_main_loop_quit();
75 _on_cmd_sync(char *cmd __UNUSED__, char *args __UNUSED__)
77 e_ofono_manager_sync_elements();
99 _on_cmd_get_all(char *cmd __UNUSED__, char *args)
101 E_Ofono_Element **elements;
112 ret = e_ofono_elements_get_all_type(type, &count, &elements);
114 ret = e_ofono_elements_get_all(&count, &elements);
117 fputs("ERROR: could not get elements\n", stderr);
120 printf("BEG: all elements type=%s count = %d\n", type, count);
121 _elements_print(elements, count);
127 static E_Ofono_Element *
128 _element_from_args(char *interface, char *args, char **next_args)
130 E_Ofono_Element *element;
134 fputs("ERROR: missing element path\n", stderr);
141 interface = _tok(args);
142 *next_args = _tok(interface);
145 *next_args = _tok(args);
147 element = e_ofono_element_get(args, interface);
149 fprintf(stderr, "ERROR: no element called \"%s %s\".\n", args, interface);
155 _on_cmd_print(char *cmd __UNUSED__, char *args)
158 E_Ofono_Element *element = _element_from_args(NULL, args, &next_args);
160 e_ofono_element_print(stdout, element);
165 _on_cmd_get_properties(char *cmd __UNUSED__, char *args)
168 E_Ofono_Element *element = _element_from_args(NULL, args, &next_args);
170 e_ofono_element_properties_sync(element);
175 _on_cmd_property_set(char *cmd __UNUSED__, char *args)
177 char *next_args, *name, *p;
178 E_Ofono_Element *element = _element_from_args(NULL, args, &next_args);
190 fputs("ERROR: missing parameters name, type and value.\n", stderr);
198 fputs("ERROR: missing parameters type and value.\n", stderr);
205 fputs("ERROR: missing parameter value.\n", stderr);
212 case DBUS_TYPE_BOOLEAN:
213 vlong = !!atol(next_args);
215 fprintf(stderr, "DBG: boolean is: %ld\n", vlong);
217 case DBUS_TYPE_UINT16:
218 vu16 = strtol(next_args, &p, 0);
221 fprintf(stderr, "ERROR: invalid number \"%s\".\n", next_args);
225 fprintf(stderr, "DBG: u16 is: %hu\n", vu16);
227 case DBUS_TYPE_UINT32:
228 vu32 = strtol(next_args, &p, 0);
231 fprintf(stderr, "ERROR: invalid number \"%s\".\n", next_args);
235 fprintf(stderr, "DBG: u16 is: %u\n", vu32);
237 case DBUS_TYPE_STRING:
238 case DBUS_TYPE_OBJECT_PATH:
239 p = next_args + strlen(next_args);
242 while (p > next_args && isspace(*p))
246 fprintf(stderr, "ERROR: invalid string \"%s\".\n", next_args);
250 fprintf(stderr, "DBG: string is: \"%s\"\n", next_args);
253 fprintf(stderr, "ERROR: don't know how to parse type '%c' (%d)\n",
258 fprintf(stderr, "set_property %s [%p] %s %c %p...\n",
259 args, element, name, type, value);
260 if (!e_ofono_element_property_set(element, name, type, value))
261 fputs("ERROR: error setting property.\n", stderr);
266 /* Manager Commands */
269 _on_cmd_manager_get(char *cmd __UNUSED__, char *args __UNUSED__)
271 E_Ofono_Element *element;
272 element = e_ofono_manager_get();
273 e_ofono_element_print(stderr, element);
278 _on_cmd_manager_modems_get(char *cmd __UNUSED__, char *args __UNUSED__)
281 Eina_Array_Iterator iterator;
283 Eina_Array *modems = NULL;
285 if(e_ofono_manager_modems_get(&modems))
289 EINA_ARRAY_ITER_NEXT(modems, i, path, iterator)
300 _on_cmd_modem_set_powered(char *cmd __UNUSED__, char *args)
304 E_Ofono_Element *element = _element_from_args("org.ofono.Modem", args, &next_args);
311 fputs("ERROR: missing the powered value\n", stderr);
315 powered = !!atol(next_args);
317 if (e_ofono_modem_powered_set
318 (element, powered, _method_success_check, "modem_set_powered"))
319 printf(":::Modem %s Powered set to %hhu\n", element->path, powered);
321 fputs("ERROR: can't set Modem Powered\n", stderr);
328 _on_cmd_sms_sca_set(char *cmd __UNUSED__, char *args)
330 char *next_args, *sca;
331 E_Ofono_Element *element = _element_from_args("org.ofono.SmsManager", args,
339 fputs("ERROR: missing service center address\n", stderr);
344 if (e_ofono_sms_sca_set(element, sca, _method_success_check,
346 printf(":::Service Center Address on modem %s set to %s\n",
349 fputs("ERROR: couldn't change Service Center Address\n", stderr);
355 _on_cmd_sms_send_message(char *cmd __UNUSED__, char *args)
357 char *next_args, *number, *message;
358 E_Ofono_Element *element = _element_from_args("org.ofono.SmsManager", args,
367 fputs("ERROR: missing recipient number and message text.\n", stderr);
371 message = _tok(number);
374 fputs("ERROR: missing message text.\n", stderr);
378 if (!e_ofono_sms_send_message(element, number, message,
379 _method_success_check, "sms_send_message"))
380 fputs("ERROR: error setting property.\n", stderr);
386 _on_input(void *data __UNUSED__, Ecore_Fd_Handler *fd_handler)
392 Eina_Bool (*cb)(char *cmd, char *args);
394 {"quit", _on_cmd_quit},
395 {"sync", _on_cmd_sync},
396 {"get_all", _on_cmd_get_all},
397 {"print", _on_cmd_print},
398 {"get_properties", _on_cmd_get_properties},
399 {"set_property", _on_cmd_property_set},
400 {"manager_get", _on_cmd_manager_get},
401 {"manager_modems_get", _on_cmd_manager_modems_get},
402 {"modem_set_powered", _on_cmd_modem_set_powered},
403 {"sms_sca_set", _on_cmd_sms_sca_set},
404 {"sms_send_message", _on_cmd_sms_send_message},
409 if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_ERROR))
411 fputs("ERROR: reading from stdin, exit\n", stderr);
415 if (!ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
417 fputs("ERROR: nothing to read?\n", stderr);
421 if (!fgets(buf, sizeof(buf), stdin))
423 fprintf(stderr, "ERROR: could not read command: %s\n", strerror(errno));
424 ecore_main_loop_quit();
429 while (isspace(*cmd))
432 args = strchr(cmd, ' ');
440 while (isspace(*args))
443 p = args + strlen(args) - 1;
451 p = cmd + strlen(cmd) - 1;
456 if (strcmp(cmd, "help") == 0)
460 printf("Commands with '%s' in the name:\n", args);
461 for (itr = maps; itr->cmd; itr++)
462 if (strstr(itr->cmd, args))
463 printf("\t%s\n", itr->cmd);
467 fputs("Commands:\n", stdout);
468 for (itr = maps; itr->cmd; itr++)
469 printf("\t%s\n", itr->cmd);
475 for (itr = maps; itr->cmd; itr++)
476 if (strcmp(itr->cmd, cmd) == 0)
477 return itr->cb(cmd, args);
479 printf("unknown command \"%s\", args=%s\n", cmd, args);
484 main(int argc __UNUSED__, char *argv[] __UNUSED__)
486 E_DBus_Connection *c;
492 c = e_dbus_bus_get(DBUS_BUS_SYSTEM);
494 printf("ERROR: can't connect to system session\n");
498 e_ofono_system_init(c);
500 ecore_event_handler_add(E_OFONO_EVENT_ELEMENT_ADD, _on_element_add, NULL);
501 ecore_event_handler_add(E_OFONO_EVENT_ELEMENT_DEL, _on_element_del, NULL);
502 ecore_event_handler_add(E_OFONO_EVENT_ELEMENT_UPDATED,
503 _on_element_updated, NULL);
505 ecore_main_fd_handler_add
506 (0, ECORE_FD_READ | ECORE_FD_ERROR, _on_input, NULL, NULL, NULL);
508 ecore_main_loop_begin();
510 e_ofono_system_shutdown();
512 e_dbus_connection_close(c);
517 fputs("DBG: clean exit.\n", stderr);