8 #include <glib-object.h>
15 #include <communicator.h>
18 #include <user_request.h>
19 #include <co_network.h>
23 #include "generated-code.h"
27 static char *_get_network_name_by_plmn(CoreObject *o, const char *plmn)
29 struct tcore_network_operator_info *noi = NULL;
36 snprintf(mcc, 4, "%s", plmn);
37 snprintf(mnc, 4, "%s", plmn+3);
42 noi = tcore_network_operator_info_find(o, mcc, mnc);
44 dbg("%s-%s: country=[%s], oper=[%s]", mcc, mnc, noi->country, noi->name);
48 dbg("%s-%s: no network operator name", mcc, mnc);
55 static enum tcore_hook_return on_hook_location_cellinfo(Server *s, CoreObject *source, enum tcore_notification_command command, unsigned int data_len, void *data, void *user_data)
57 const struct tnoti_network_location_cellinfo *info = data;
58 TelephonyNetwork *network = user_data;
61 return TCORE_HOOK_RETURN_CONTINUE;
63 telephony_network_set_lac(network, info->lac);
64 telephony_network_set_cell_id(network, info->cell_id);
66 return TCORE_HOOK_RETURN_CONTINUE;
69 static enum tcore_hook_return on_hook_icon_info(Server *s, CoreObject *source, enum tcore_notification_command command, unsigned int data_len, void *data, void *user_data)
71 const struct tnoti_network_icon_info *info = data;
72 TelephonyNetwork *network = user_data;
75 return TCORE_HOOK_RETURN_CONTINUE;
77 telephony_network_set_rssi(network, info->rssi);
79 return TCORE_HOOK_RETURN_CONTINUE;
82 static enum tcore_hook_return on_hook_registration_status(Server *s, CoreObject *source, enum tcore_notification_command command, unsigned int data_len, void *data, void *user_data)
84 const struct tnoti_network_registration_status *info = data;
85 TelephonyNetwork *network = user_data;
88 return TCORE_HOOK_RETURN_CONTINUE;
90 telephony_network_set_circuit_status(network, info->cs_domain_status);
91 telephony_network_set_packet_status(network, info->ps_domain_status);
92 telephony_network_set_service_type(network, info->service_type);
93 telephony_network_set_roaming_status(network, info->roaming_status);
95 switch (info->service_type) {
96 case NETWORK_SERVICE_TYPE_UNKNOWN:
97 case NETWORK_SERVICE_TYPE_NO_SERVICE:
98 telephony_network_set_network_name(network, "No Service");
101 case NETWORK_SERVICE_TYPE_EMERGENCY:
102 telephony_network_set_network_name(network, "EMERGENCY");
105 case NETWORK_SERVICE_TYPE_SEARCH:
106 telephony_network_set_network_name(network, "Searching...");
113 return TCORE_HOOK_RETURN_CONTINUE;
116 static enum tcore_hook_return on_hook_change(Server *s, CoreObject *source, enum tcore_notification_command command, unsigned int data_len, void *data, void *user_data)
118 const struct tnoti_network_change *info = data;
119 TelephonyNetwork *network = user_data;
120 struct tcore_network_operator_info *noi = NULL;
121 char mcc[4] = { 0, };
122 char mnc[4] = { 0, };
123 enum telephony_network_service_type svc_type;
124 enum tcore_network_name_priority network_name_priority;
128 return TCORE_HOOK_RETURN_CONTINUE;
130 telephony_network_set_plmn(network, info->plmn);
131 telephony_network_set_lac(network, info->gsm.lac);
133 snprintf(mcc, 4, "%s", info->plmn);
134 snprintf(mnc, 4, "%s", info->plmn+3);
139 tcore_network_get_network_name_priority(source, &network_name_priority);
140 telephony_network_set_name_priority(network, network_name_priority);
142 tmp = tcore_network_get_network_name(source, TCORE_NETWORK_NAME_TYPE_SPN);
144 telephony_network_set_spn_name(network, tmp);
148 tcore_network_get_service_type(source, &svc_type);
150 case NETWORK_SERVICE_TYPE_UNKNOWN:
151 case NETWORK_SERVICE_TYPE_NO_SERVICE:
152 telephony_network_set_network_name(network, "No Service");
155 case NETWORK_SERVICE_TYPE_EMERGENCY:
156 telephony_network_set_network_name(network, "EMERGENCY");
159 case NETWORK_SERVICE_TYPE_SEARCH:
160 telephony_network_set_network_name(network, "Searching...");
164 tmp = tcore_network_get_network_name(source, TCORE_NETWORK_NAME_TYPE_SHORT);
166 telephony_network_set_network_name(network, tmp);
170 /* pre-defined table */
171 noi = tcore_network_operator_info_find(source, mcc, mnc);
173 dbg("%s-%s: country=[%s], oper=[%s]", mcc, mnc, noi->country, noi->name);
174 dbg("NWNAME = pre-define table[%s]", noi->name);
175 telephony_network_set_network_name(network, noi->name);
178 dbg("%s-%s: no network operator name", mcc, mnc);
179 telephony_network_set_network_name(network, info->plmn);
185 return TCORE_HOOK_RETURN_CONTINUE;
188 static enum tcore_hook_return on_hook_ps_protocol_status(Server *s, CoreObject *source, enum tcore_notification_command command, unsigned int data_len, void *data, void *user_data)
190 const struct tnoti_ps_protocol_status *info = data;
191 TelephonyNetwork *network = user_data;
194 return TCORE_HOOK_RETURN_CONTINUE;
196 telephony_network_set_network_type(network, info->status);
198 return TCORE_HOOK_RETURN_CONTINUE;
202 on_network_search (TelephonyNetwork *network,
203 GDBusMethodInvocation *invocation,
207 struct custom_data *ctx = user_data;
208 UserRequest *ur = NULL;
211 ur = MAKE_UR(ctx, network, invocation);
212 tcore_user_request_set_data(ur, 0, NULL);
213 tcore_user_request_set_command(ur, TREQ_NETWORK_SEARCH);
214 ret = tcore_communicator_dispatch_request(ctx->comm, ur);
215 if (ret != TCORE_RETURN_SUCCESS) {
216 telephony_network_complete_search(network, invocation, NULL, ret);
217 tcore_user_request_unref(ur);
221 GVariant *result = NULL;
226 g_variant_builder_init(&b, G_VARIANT_TYPE("aa{sv}"));
228 for (i = 0; i < 3; i++) {
229 g_variant_builder_open(&b, G_VARIANT_TYPE("a{sv}"));
231 g_variant_builder_add(&b, "{sv}", "plmn", g_variant_new_string("45001"));
232 g_variant_builder_add(&b, "{sv}", "act", g_variant_new_int32(4));
233 g_variant_builder_add(&b, "{sv}", "type", g_variant_new_int32(2));
234 g_variant_builder_add(&b, "{sv}", "name", g_variant_new_string("Samsung"));
236 g_variant_builder_close(&b);
239 result = g_variant_builder_end(&b);
241 telephony_network_complete_search(network, invocation, result, 0);
242 g_variant_unref(result);
249 on_network_search_cancel (TelephonyNetwork *network,
250 GDBusMethodInvocation *invocation,
253 struct custom_data *ctx = user_data;
254 UserRequest *ur = NULL;
257 ur = MAKE_UR(ctx, network, invocation);
258 tcore_user_request_set_data(ur, 0, NULL);
259 tcore_user_request_set_command(ur, TREQ_NETWORK_SET_CANCEL_MANUAL_SEARCH);
260 ret = tcore_communicator_dispatch_request(ctx->comm, ur);
261 if (ret != TCORE_RETURN_SUCCESS) {
262 telephony_network_complete_search_cancel(network, invocation, ret);
263 tcore_user_request_unref(ur);
270 on_network_get_selection_mode (TelephonyNetwork *network,
271 GDBusMethodInvocation *invocation,
274 struct custom_data *ctx = user_data;
275 UserRequest *ur = NULL;
278 ur = MAKE_UR(ctx, network, invocation);
279 tcore_user_request_set_data(ur, 0, NULL);
280 tcore_user_request_set_command(ur, TREQ_NETWORK_GET_PLMN_SELECTION_MODE);
281 ret = tcore_communicator_dispatch_request(ctx->comm, ur);
282 if (ret != TCORE_RETURN_SUCCESS) {
283 telephony_network_complete_get_selection_mode(network, invocation, -1, ret);
284 tcore_user_request_unref(ur);
291 on_network_set_selection_mode (TelephonyNetwork *network,
292 GDBusMethodInvocation *invocation,
298 struct treq_network_set_plmn_selection_mode req;
299 struct custom_data *ctx = user_data;
300 UserRequest *ur = NULL;
303 memset(&req, 0, sizeof(struct treq_network_set_plmn_selection_mode));
307 req.mode = NETWORK_SELECT_MODE_GSM_AUTOMATIC;
309 else if (mode == 1) {
311 req.mode = NETWORK_SELECT_MODE_GSM_MANUAL;
312 snprintf(req.plmn, 7, "%s", plmn);
313 if (strlen(plmn) <= 5)
318 telephony_network_complete_set_selection_mode(network, invocation, -1);
322 dbg("mode = %d, plmn = [%s], act = %d",
323 req.mode, req.plmn, req.act);
325 ur = MAKE_UR(ctx, network, invocation);
327 tcore_user_request_set_data(ur, sizeof(struct treq_network_set_plmn_selection_mode), &req);
328 tcore_user_request_set_command(ur, TREQ_NETWORK_SET_PLMN_SELECTION_MODE);
329 ret = tcore_communicator_dispatch_request(ctx->comm, ur);
330 if (ret != TCORE_RETURN_SUCCESS) {
331 telephony_network_complete_set_selection_mode(network, invocation, ret);
332 tcore_user_request_unref(ur);
340 on_network_set_service_domain (TelephonyNetwork *network,
341 GDBusMethodInvocation *invocation,
345 struct treq_network_set_service_domain req;
346 struct custom_data *ctx = user_data;
347 UserRequest *ur = NULL;
350 ur = MAKE_UR(ctx, network, invocation);
354 tcore_user_request_set_data(ur, sizeof(struct treq_network_set_service_domain), &req);
355 tcore_user_request_set_command(ur, TREQ_NETWORK_SET_SERVICE_DOMAIN);
356 ret = tcore_communicator_dispatch_request(ctx->comm, ur);
357 if (ret != TCORE_RETURN_SUCCESS) {
358 telephony_network_complete_set_service_domain(network, invocation, ret);
359 tcore_user_request_unref(ur);
366 on_network_get_service_domain (TelephonyNetwork *network,
367 GDBusMethodInvocation *invocation,
370 struct custom_data *ctx = user_data;
371 UserRequest *ur = NULL;
374 ur = MAKE_UR(ctx, network, invocation);
375 tcore_user_request_set_data(ur, 0, NULL);
376 tcore_user_request_set_command(ur, TREQ_NETWORK_GET_SERVICE_DOMAIN);
377 ret = tcore_communicator_dispatch_request(ctx->comm, ur);
378 if (ret != TCORE_RETURN_SUCCESS) {
379 telephony_network_complete_get_service_domain(network, invocation, -1, ret);
380 tcore_user_request_unref(ur);
387 on_network_set_band (TelephonyNetwork *network,
388 GDBusMethodInvocation *invocation,
393 struct treq_network_set_band req;
394 struct custom_data *ctx = user_data;
395 UserRequest *ur = NULL;
398 ur = MAKE_UR(ctx, network, invocation);
403 tcore_user_request_set_data(ur, sizeof(struct treq_network_set_band), &req);
404 tcore_user_request_set_command(ur, TREQ_NETWORK_SET_BAND);
405 ret = tcore_communicator_dispatch_request(ctx->comm, ur);
406 if (ret != TCORE_RETURN_SUCCESS) {
407 telephony_network_complete_set_band(network, invocation, ret);
408 tcore_user_request_unref(ur);
415 on_network_get_band (TelephonyNetwork *network,
416 GDBusMethodInvocation *invocation,
419 struct custom_data *ctx = user_data;
420 UserRequest *ur = NULL;
423 ur = MAKE_UR(ctx, network, invocation);
424 tcore_user_request_set_data(ur, 0, NULL);
425 tcore_user_request_set_command(ur, TREQ_NETWORK_GET_BAND);
426 ret = tcore_communicator_dispatch_request(ctx->comm, ur);
427 if (ret != TCORE_RETURN_SUCCESS) {
428 telephony_network_complete_get_band(network, invocation, -1, -1, ret);
429 tcore_user_request_unref(ur);
436 on_network_set_mode (TelephonyNetwork *network,
437 GDBusMethodInvocation *invocation,
441 struct treq_network_set_mode req;
442 struct custom_data *ctx = user_data;
443 UserRequest *ur = NULL;
446 ur = MAKE_UR(ctx, network, invocation);
450 tcore_user_request_set_data(ur, sizeof(struct treq_network_set_mode), &req);
451 tcore_user_request_set_command(ur, TREQ_NETWORK_SET_MODE);
452 ret = tcore_communicator_dispatch_request(ctx->comm, ur);
453 if (ret != TCORE_RETURN_SUCCESS) {
454 telephony_network_complete_set_mode(network, invocation, ret);
455 tcore_user_request_unref(ur);
462 on_network_get_mode (TelephonyNetwork *network,
463 GDBusMethodInvocation *invocation,
466 struct custom_data *ctx = user_data;
467 UserRequest *ur = NULL;
470 ur = MAKE_UR(ctx, network, invocation);
471 tcore_user_request_set_data(ur, 0, NULL);
472 tcore_user_request_set_command(ur, TREQ_NETWORK_GET_MODE);
473 ret = tcore_communicator_dispatch_request(ctx->comm, ur);
474 if (ret != TCORE_RETURN_SUCCESS) {
475 telephony_network_complete_get_mode(network, invocation, -1, ret);
476 tcore_user_request_unref(ur);
483 on_network_set_preferred_plmn (TelephonyNetwork *network,
484 GDBusMethodInvocation *invocation,
491 struct treq_network_set_preferred_plmn req;
492 struct custom_data *ctx = user_data;
493 UserRequest *ur = NULL;
496 ur = MAKE_UR(ctx, network, invocation);
498 req.operation = mode;
499 req.ef_index = ef_index;
502 memcpy(req.plmn, plmn, 6);
504 if (strlen(plmn) <= 5) {
508 tcore_user_request_set_data(ur, sizeof(struct treq_network_set_preferred_plmn), &req);
509 tcore_user_request_set_command(ur, TREQ_NETWORK_SET_PREFERRED_PLMN);
510 ret = tcore_communicator_dispatch_request(ctx->comm, ur);
511 if (ret != TCORE_RETURN_SUCCESS) {
512 telephony_network_complete_set_preferred_plmn(network, invocation, ret);
513 tcore_user_request_unref(ur);
520 on_network_get_preferred_plmn (TelephonyNetwork *network,
521 GDBusMethodInvocation *invocation,
524 struct custom_data *ctx = user_data;
525 UserRequest *ur = NULL;
528 ur = MAKE_UR(ctx, network, invocation);
529 tcore_user_request_set_data(ur, 0, NULL);
530 tcore_user_request_set_command(ur, TREQ_NETWORK_GET_PREFERRED_PLMN);
531 ret = tcore_communicator_dispatch_request(ctx->comm, ur);
532 if (ret != TCORE_RETURN_SUCCESS) {
533 telephony_network_complete_get_preferred_plmn(network, invocation, NULL, ret);
534 tcore_user_request_unref(ur);
541 on_network_get_serving_network (TelephonyNetwork *network,
542 GDBusMethodInvocation *invocation,
545 struct custom_data *ctx = user_data;
546 UserRequest *ur = NULL;
549 ur = MAKE_UR(ctx, network, invocation);
550 tcore_user_request_set_data(ur, 0, NULL);
551 tcore_user_request_set_command(ur, TREQ_NETWORK_GET_SERVING_NETWORK);
552 ret = tcore_communicator_dispatch_request(ctx->comm, ur);
553 if (ret != TCORE_RETURN_SUCCESS) {
554 telephony_network_complete_get_serving_network(network, invocation, 0, NULL, 0, ret);
555 tcore_user_request_unref(ur);
561 gboolean dbus_plugin_setup_network_interface(TelephonyObjectSkeleton *object, struct custom_data *ctx)
563 TelephonyNetwork *network;
565 network = telephony_network_skeleton_new();
566 telephony_object_skeleton_set_network(object, network);
567 g_object_unref(network);
569 g_signal_connect (network,
571 G_CALLBACK (on_network_search),
574 g_signal_connect (network,
575 "handle-search-cancel",
576 G_CALLBACK (on_network_search_cancel),
579 g_signal_connect (network,
580 "handle-set-selection-mode",
581 G_CALLBACK (on_network_set_selection_mode),
584 g_signal_connect (network,
585 "handle-get-selection-mode",
586 G_CALLBACK (on_network_get_selection_mode),
589 g_signal_connect (network,
590 "handle-set-service-domain",
591 G_CALLBACK (on_network_set_service_domain),
594 g_signal_connect (network,
595 "handle-get-service-domain",
596 G_CALLBACK (on_network_get_service_domain),
599 g_signal_connect (network,
601 G_CALLBACK (on_network_set_band),
604 g_signal_connect (network,
606 G_CALLBACK (on_network_get_band),
609 g_signal_connect (network,
611 G_CALLBACK (on_network_set_mode),
614 g_signal_connect (network,
616 G_CALLBACK (on_network_get_mode),
619 g_signal_connect (network,
620 "handle-set-preferred-plmn",
621 G_CALLBACK (on_network_set_preferred_plmn),
624 g_signal_connect (network,
625 "handle-get-preferred-plmn",
626 G_CALLBACK (on_network_get_preferred_plmn),
629 g_signal_connect (network,
630 "handle-get-serving-network",
631 G_CALLBACK (on_network_get_serving_network),
634 tcore_server_add_notification_hook(ctx->server, TNOTI_NETWORK_LOCATION_CELLINFO, on_hook_location_cellinfo, network);
635 tcore_server_add_notification_hook(ctx->server, TNOTI_NETWORK_ICON_INFO, on_hook_icon_info, network);
636 tcore_server_add_notification_hook(ctx->server, TNOTI_NETWORK_REGISTRATION_STATUS, on_hook_registration_status, network);
637 tcore_server_add_notification_hook(ctx->server, TNOTI_NETWORK_CHANGE, on_hook_change, network);
638 tcore_server_add_notification_hook(ctx->server, TNOTI_PS_PROTOCOL_STATUS, on_hook_ps_protocol_status, network);
643 gboolean dbus_plugin_network_response(struct custom_data *ctx, UserRequest *ur, struct dbus_request_info *dbus_info, enum tcore_response_command command, unsigned int data_len, const void *data)
645 const struct tresp_network_search *resp_network_search = data;
646 const struct tresp_network_set_cancel_manual_search *resp_set_cancel_manual_search = data;
647 const struct tresp_network_get_plmn_selection_mode *resp_get_plmn_selection_mode = data;
648 const struct tresp_network_set_plmn_selection_mode *resp_set_plmn_selection_mode = data;
649 const struct tresp_network_set_service_domain *resp_set_service_domain = data;
650 const struct tresp_network_get_service_domain *resp_get_service_domain = data;
651 const struct tresp_network_set_band *resp_set_band = data;
652 const struct tresp_network_get_band *resp_get_band = data;
653 const struct tresp_network_set_preferred_plmn *resp_set_preferred_plmn = data;
654 const struct tresp_network_get_preferred_plmn *resp_get_preferred_plmn = data;
655 const struct tresp_network_get_serving_network *resp_get_serving_network = data;
656 const struct tresp_network_set_mode *resp_set_mode = data;
657 const struct tresp_network_get_mode *resp_get_mode = data;
663 CoreObject *co_network;
664 char *modem_name = NULL;
665 TcorePlugin *p = NULL;
667 modem_name = tcore_user_request_get_modem_name(ur);
671 p = tcore_server_find_plugin(ctx->server, modem_name);
676 co_list = tcore_plugin_get_core_objects_bytype(p, CORE_OBJECT_TYPE_NETWORK);
681 co_network = (CoreObject *)co_list->data;
682 g_slist_free(co_list);
689 case TRESP_NETWORK_SEARCH: {
690 GVariant *result = NULL;
693 dbg("receive TRESP_NETWORK_SEARCH");
694 dbg("resp->result = %d", resp_network_search->result);
696 g_variant_builder_init(&b, G_VARIANT_TYPE("aa{sv}"));
698 for (i = 0; i < resp_network_search->list_count; i++) {
699 g_variant_builder_open(&b, G_VARIANT_TYPE("a{sv}"));
701 g_variant_builder_add(&b, "{sv}", "plmn", g_variant_new_string(resp_network_search->list[i].plmn));
702 g_variant_builder_add(&b, "{sv}", "act", g_variant_new_int32(resp_network_search->list[i].act));
703 g_variant_builder_add(&b, "{sv}", "type", g_variant_new_int32(resp_network_search->list[i].status));
705 if (strlen(resp_network_search->list[i].name) > 0) {
706 g_variant_builder_add(&b, "{sv}", "name", g_variant_new_string(resp_network_search->list[i].name));
709 buf = _get_network_name_by_plmn(co_network, resp_network_search->list[i].plmn);
711 g_variant_builder_add(&b, "{sv}", "name", g_variant_new_string(buf));
713 g_variant_builder_add(&b, "{sv}", "name", g_variant_new_string(resp_network_search->list[i].plmn));
716 g_variant_builder_close(&b);
719 result = g_variant_builder_end(&b);
721 telephony_network_complete_search(dbus_info->interface_object, dbus_info->invocation, result, resp_network_search->result);
726 case TRESP_NETWORK_SET_PLMN_SELECTION_MODE:
727 dbg("receive TRESP_SET_PLMN_SELECTION_MODE");
728 dbg("resp->result = %d", resp_set_plmn_selection_mode->result);
729 telephony_network_complete_set_selection_mode(dbus_info->interface_object, dbus_info->invocation, resp_set_plmn_selection_mode->result);
732 case TRESP_NETWORK_GET_PLMN_SELECTION_MODE:
733 dbg("receive TRESP_GET_PLMN_SELECTION_MODE");
734 dbg("resp->mode = %d", resp_get_plmn_selection_mode->mode);
735 switch (resp_get_plmn_selection_mode->mode) {
736 case NETWORK_SELECT_MODE_GLOBAL_AUTOMATIC:
737 case NETWORK_SELECT_MODE_GSM_AUTOMATIC:
738 telephony_network_complete_get_selection_mode(dbus_info->interface_object, dbus_info->invocation, 0, resp_get_plmn_selection_mode->result);
741 case NETWORK_SELECT_MODE_GSM_MANUAL:
742 telephony_network_complete_get_selection_mode(dbus_info->interface_object, dbus_info->invocation, 1, resp_get_plmn_selection_mode->result);
746 telephony_network_complete_get_selection_mode(dbus_info->interface_object, dbus_info->invocation, -1, resp_get_plmn_selection_mode->result);
751 case TRESP_NETWORK_SET_SERVICE_DOMAIN:
752 dbg("receive TRESP_NETWORK_SET_SERVICE_DOMAIN");
753 dbg("resp->result = %d", resp_set_service_domain->result);
754 telephony_network_complete_set_service_domain(dbus_info->interface_object, dbus_info->invocation, resp_set_service_domain->result);
757 case TRESP_NETWORK_GET_SERVICE_DOMAIN:
758 dbg("receive TRESP_NETWORK_GET_SERVICE_DOMAIN");
759 dbg("resp->domain = %d", resp_get_service_domain->domain);
760 telephony_network_complete_get_service_domain(dbus_info->interface_object, dbus_info->invocation, resp_get_service_domain->domain, resp_get_service_domain->result);
763 case TRESP_NETWORK_SET_BAND:
764 dbg("receive TRESP_NETWORK_SET_BAND");
765 dbg("resp->result = %d", resp_set_band->result);
766 telephony_network_complete_set_band(dbus_info->interface_object, dbus_info->invocation, resp_set_band->result);
769 case TRESP_NETWORK_GET_BAND:
770 dbg("receive TRESP_NETWORK_GET_BAND");
771 dbg("resp->mode = %d", resp_get_band->mode);
772 dbg("resp->band = %d", resp_get_band->band);
773 telephony_network_complete_get_band(dbus_info->interface_object, dbus_info->invocation, resp_get_band->band, resp_get_band->mode, resp_get_band->result);
776 case TRESP_NETWORK_SET_MODE:
777 dbg("receive TRESP_NETWORK_SET_MODE");
778 dbg("resp->result = %d", resp_set_mode->result);
779 telephony_network_complete_set_mode(dbus_info->interface_object, dbus_info->invocation, resp_set_mode->result);
782 case TRESP_NETWORK_GET_MODE:
783 dbg("receive TRESP_NETWORK_GET_MODE");
784 dbg("resp->mode = %d", resp_get_mode->mode);
785 telephony_network_complete_get_mode(dbus_info->interface_object, dbus_info->invocation, resp_get_mode->mode, resp_get_mode->result);
788 case TRESP_NETWORK_SET_PREFERRED_PLMN:
789 dbg("receive TRESP_NETWORK_SET_PREFERRED_PLMN");
790 dbg("resp->result = %d", resp_set_preferred_plmn->result);
791 telephony_network_complete_set_preferred_plmn(dbus_info->interface_object, dbus_info->invocation, resp_set_preferred_plmn->result);
794 case TRESP_NETWORK_GET_PREFERRED_PLMN:
795 dbg("receive TRESP_NETWORK_GET_PREFERRED_PLMN");
796 dbg("resp->result = %d", resp_get_preferred_plmn->result);
798 GVariant *result = NULL;
801 g_variant_builder_init(&b, G_VARIANT_TYPE("aa{sv}"));
803 for (i = 0; i < resp_get_preferred_plmn->list_count; i++) {
804 g_variant_builder_open(&b, G_VARIANT_TYPE("a{sv}"));
806 g_variant_builder_add(&b, "{sv}", "plmn",
807 g_variant_new_string(resp_get_preferred_plmn->list[i].plmn));
808 g_variant_builder_add(&b, "{sv}", "act", g_variant_new_int32(resp_get_preferred_plmn->list[i].act));
809 g_variant_builder_add(&b, "{sv}", "index",
810 g_variant_new_int32(resp_get_preferred_plmn->list[i].ef_index));
812 buf = _get_network_name_by_plmn(co_network, resp_get_preferred_plmn->list[i].plmn);
814 g_variant_builder_add(&b, "{sv}", "name", g_variant_new_string(buf));
816 g_variant_builder_add(&b, "{sv}", "name",
817 g_variant_new_string(resp_get_preferred_plmn->list[i].plmn));
819 g_variant_builder_close(&b);
822 result = g_variant_builder_end(&b);
824 telephony_network_complete_get_preferred_plmn(dbus_info->interface_object, dbus_info->invocation,
825 result, resp_get_preferred_plmn->result);
829 case TRESP_NETWORK_SET_CANCEL_MANUAL_SEARCH:
830 dbg("receive TRESP_NETWORK_SET_CANCEL_MANUAL_SEARCH");
831 dbg("resp->result = %d", resp_set_cancel_manual_search->result);
832 telephony_network_complete_search_cancel(dbus_info->interface_object, dbus_info->invocation, resp_set_cancel_manual_search->result);
835 case TRESP_NETWORK_GET_SERVING_NETWORK:
836 dbg("receive TRESP_NETWORK_GET_SERVING_NETWORK");
837 dbg("resp->act = %d", resp_get_serving_network->act);
838 dbg("resp->plmn = %s", resp_get_serving_network->plmn);
839 dbg("resp->lac = %d", resp_get_serving_network->gsm.lac);
840 telephony_network_complete_get_serving_network(dbus_info->interface_object, dbus_info->invocation,
841 resp_get_serving_network->act,
842 resp_get_serving_network->plmn,
843 resp_get_serving_network->gsm.lac,
844 resp_get_serving_network->result);
848 dbg("not handled cmd[0x%x]", command);
855 gboolean dbus_plugin_network_notification(struct custom_data *ctx, const char *plugin_name, TelephonyObjectSkeleton *object, enum tcore_notification_command command, unsigned int data_len, const void *data)
857 TelephonyNetwork *network;
858 const struct tnoti_network_registration_status *registration = data;
859 const struct tnoti_network_change *change = data;
860 const struct tnoti_network_icon_info *icon_info = data;
861 const struct tnoti_network_timeinfo *time_info = data;
862 const struct tnoti_network_identity *identity = data;
863 const struct tnoti_network_location_cellinfo *location = data;
866 dbg("object is NULL");
870 network = telephony_object_peek_network(TELEPHONY_OBJECT(object));
871 dbg("network = %p", network);
874 case TNOTI_NETWORK_REGISTRATION_STATUS:
875 telephony_network_emit_registration_status(network,
876 registration->cs_domain_status,
877 registration->ps_domain_status,
878 registration->service_type,
879 registration->roaming_status);
882 case TNOTI_NETWORK_CHANGE:
883 telephony_network_emit_change(network,
889 case TNOTI_NETWORK_ICON_INFO:
890 telephony_network_emit_info(network,
895 case TNOTI_NETWORK_TIMEINFO:
896 telephony_network_emit_time_info(network,
910 case TNOTI_NETWORK_IDENTITY:
911 telephony_network_emit_identity(network,
913 identity->short_name,
914 identity->full_name);
917 case TNOTI_NETWORK_LOCATION_CELLINFO:
918 telephony_network_emit_cell_info(network,
924 dbg("not handled cmd[0x%x]", command);