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_get_plmn_selection_mode *resp_get_plmn_selection_mode = data;
647 const struct tresp_network_set_plmn_selection_mode *resp_set_plmn_selection_mode = data;
648 const struct tresp_network_set_service_domain *resp_set_service_domain = data;
649 const struct tresp_network_get_service_domain *resp_get_service_domain = data;
650 const struct tresp_network_set_band *resp_set_band = data;
651 const struct tresp_network_get_band *resp_get_band = data;
652 const struct tresp_network_set_preferred_plmn *resp_set_preferred_plmn = data;
653 const struct tresp_network_get_preferred_plmn *resp_get_preferred_plmn = data;
654 const struct tresp_network_get_serving_network *resp_get_serving_network = data;
655 const struct tresp_network_set_mode *resp_set_mode = data;
656 const struct tresp_network_get_mode *resp_get_mode = data;
662 CoreObject *co_network;
663 char *modem_name = NULL;
664 TcorePlugin *p = NULL;
666 modem_name = tcore_user_request_get_modem_name(ur);
670 p = tcore_server_find_plugin(ctx->server, modem_name);
675 co_list = tcore_plugin_get_core_objects_bytype(p, CORE_OBJECT_TYPE_NETWORK);
680 co_network = (CoreObject *)co_list->data;
681 g_slist_free(co_list);
688 case TRESP_NETWORK_SEARCH: {
689 GVariant *result = NULL;
692 g_variant_builder_init(&b, G_VARIANT_TYPE("aa{sv}"));
694 for (i = 0; i < resp_network_search->list_count; i++) {
695 g_variant_builder_open(&b, G_VARIANT_TYPE("a{sv}"));
697 g_variant_builder_add(&b, "{sv}", "plmn", g_variant_new_string(resp_network_search->list[i].plmn));
698 g_variant_builder_add(&b, "{sv}", "act", g_variant_new_int32(resp_network_search->list[i].act));
699 g_variant_builder_add(&b, "{sv}", "type", g_variant_new_int32(resp_network_search->list[i].status));
701 if (strlen(resp_network_search->list[i].name) > 0) {
702 g_variant_builder_add(&b, "{sv}", "name", g_variant_new_string(resp_network_search->list[i].name));
705 buf = _get_network_name_by_plmn(co_network, resp_network_search->list[i].plmn);
707 g_variant_builder_add(&b, "{sv}", "name", g_variant_new_string(buf));
709 g_variant_builder_add(&b, "{sv}", "name", g_variant_new_string(resp_network_search->list[i].plmn));
712 g_variant_builder_close(&b);
715 result = g_variant_builder_end(&b);
717 telephony_network_complete_search(dbus_info->interface_object, dbus_info->invocation, result, 0);
722 case TRESP_NETWORK_SET_PLMN_SELECTION_MODE:
723 dbg("receive TRESP_SET_PLMN_SELECTION_MODE");
724 dbg("resp->result = %d", resp_set_plmn_selection_mode->result);
725 telephony_network_complete_set_selection_mode(dbus_info->interface_object, dbus_info->invocation, resp_set_plmn_selection_mode->result);
728 case TRESP_NETWORK_GET_PLMN_SELECTION_MODE:
729 dbg("receive TRESP_GET_PLMN_SELECTION_MODE");
730 dbg("resp->mode = %d", resp_get_plmn_selection_mode->mode);
731 switch (resp_get_plmn_selection_mode->mode) {
732 case NETWORK_SELECT_MODE_GLOBAL_AUTOMATIC:
733 case NETWORK_SELECT_MODE_GSM_AUTOMATIC:
734 telephony_network_complete_get_selection_mode(dbus_info->interface_object, dbus_info->invocation, 0, 0);
737 case NETWORK_SELECT_MODE_GSM_MANUAL:
738 telephony_network_complete_get_selection_mode(dbus_info->interface_object, dbus_info->invocation, 1, 0);
742 telephony_network_complete_get_selection_mode(dbus_info->interface_object, dbus_info->invocation, -1, -1);
747 case TRESP_NETWORK_SET_SERVICE_DOMAIN:
748 dbg("receive TRESP_NETWORK_SET_SERVICE_DOMAIN");
749 dbg("resp->result = %d", resp_set_service_domain->result);
750 telephony_network_complete_set_service_domain(dbus_info->interface_object, dbus_info->invocation, resp_set_service_domain->result);
753 case TRESP_NETWORK_GET_SERVICE_DOMAIN:
754 dbg("receive TRESP_NETWORK_GET_SERVICE_DOMAIN");
755 dbg("resp->domain = %d", resp_get_service_domain->domain);
756 telephony_network_complete_get_service_domain(dbus_info->interface_object, dbus_info->invocation, resp_get_service_domain->domain, 0);
759 case TRESP_NETWORK_SET_BAND:
760 dbg("receive TRESP_NETWORK_SET_BAND");
761 dbg("resp->result = %d", resp_set_band->result);
762 telephony_network_complete_set_band(dbus_info->interface_object, dbus_info->invocation, resp_set_band->result);
765 case TRESP_NETWORK_GET_BAND:
766 dbg("receive TRESP_NETWORK_GET_BAND");
767 dbg("resp->mode = %d", resp_get_band->mode);
768 dbg("resp->band = %d", resp_get_band->band);
769 telephony_network_complete_get_band(dbus_info->interface_object, dbus_info->invocation, resp_get_band->band, resp_get_band->mode, 0);
772 case TRESP_NETWORK_SET_MODE:
773 dbg("receive TRESP_NETWORK_SET_MODE");
774 dbg("resp->result = %d", resp_set_mode->result);
775 telephony_network_complete_set_mode(dbus_info->interface_object, dbus_info->invocation, resp_set_mode->result);
778 case TRESP_NETWORK_GET_MODE:
779 dbg("receive TRESP_NETWORK_GET_MODE");
780 dbg("resp->mode = %d", resp_get_mode->mode);
781 telephony_network_complete_get_mode(dbus_info->interface_object, dbus_info->invocation, resp_get_mode->mode, resp_get_mode->result);
784 case TRESP_NETWORK_SET_PREFERRED_PLMN:
785 dbg("receive TRESP_NETWORK_SET_PREFERRED_PLMN");
786 dbg("resp->result = %d", resp_set_preferred_plmn->result);
787 telephony_network_complete_set_preferred_plmn(dbus_info->interface_object, dbus_info->invocation, resp_set_preferred_plmn->result);
790 case TRESP_NETWORK_GET_PREFERRED_PLMN:
791 dbg("receive TRESP_NETWORK_GET_PREFERRED_PLMN");
793 GVariant *result = NULL;
796 g_variant_builder_init(&b, G_VARIANT_TYPE("aa{sv}"));
798 for (i = 0; i < resp_get_preferred_plmn->list_count; i++) {
799 g_variant_builder_open(&b, G_VARIANT_TYPE("a{sv}"));
801 g_variant_builder_add(&b, "{sv}", "plmn",
802 g_variant_new_string(resp_get_preferred_plmn->list[i].plmn));
803 g_variant_builder_add(&b, "{sv}", "act", g_variant_new_int32(resp_get_preferred_plmn->list[i].act));
804 g_variant_builder_add(&b, "{sv}", "index",
805 g_variant_new_int32(resp_get_preferred_plmn->list[i].ef_index));
807 buf = _get_network_name_by_plmn(co_network, resp_get_preferred_plmn->list[i].plmn);
809 g_variant_builder_add(&b, "{sv}", "name", g_variant_new_string(buf));
811 g_variant_builder_add(&b, "{sv}", "name",
812 g_variant_new_string(resp_get_preferred_plmn->list[i].plmn));
814 g_variant_builder_close(&b);
817 result = g_variant_builder_end(&b);
819 telephony_network_complete_get_preferred_plmn(dbus_info->interface_object, dbus_info->invocation,
824 case TRESP_NETWORK_SET_CANCEL_MANUAL_SEARCH:
825 dbg("receive TRESP_NETWORK_SET_CANCEL_MANUAL_SEARCH");
826 telephony_network_complete_search_cancel(dbus_info->interface_object, dbus_info->invocation, 0);
829 case TRESP_NETWORK_GET_SERVING_NETWORK:
830 dbg("receive TRESP_NETWORK_GET_SERVING_NETWORK");
831 dbg("resp->act = %d", resp_get_serving_network->act);
832 dbg("resp->plmn = %s", resp_get_serving_network->plmn);
833 dbg("resp->lac = %d", resp_get_serving_network->gsm.lac);
834 telephony_network_complete_get_serving_network(dbus_info->interface_object, dbus_info->invocation,
835 resp_get_serving_network->act,
836 resp_get_serving_network->plmn,
837 resp_get_serving_network->gsm.lac,
842 dbg("not handled cmd[0x%x]", command);
849 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)
851 TelephonyNetwork *network;
852 const struct tnoti_network_registration_status *registration = data;
853 const struct tnoti_network_change *change = data;
854 const struct tnoti_network_icon_info *icon_info = data;
855 const struct tnoti_network_timeinfo *time_info = data;
856 const struct tnoti_network_identity *identity = data;
857 const struct tnoti_network_location_cellinfo *location = data;
860 dbg("object is NULL");
864 network = telephony_object_peek_network(TELEPHONY_OBJECT(object));
865 dbg("network = %p", network);
868 case TNOTI_NETWORK_REGISTRATION_STATUS:
869 telephony_network_emit_registration_status(network,
870 registration->cs_domain_status,
871 registration->ps_domain_status,
872 registration->service_type,
873 registration->roaming_status);
876 case TNOTI_NETWORK_CHANGE:
877 telephony_network_emit_change(network,
883 case TNOTI_NETWORK_ICON_INFO:
884 telephony_network_emit_info(network,
889 case TNOTI_NETWORK_TIMEINFO:
890 telephony_network_emit_time_info(network,
904 case TNOTI_NETWORK_IDENTITY:
905 telephony_network_emit_identity(network,
907 identity->short_name,
908 identity->full_name);
911 case TNOTI_NETWORK_LOCATION_CELLINFO:
912 telephony_network_emit_cell_info(network,
918 dbg("not handled cmd[0x%x]", command);