diff options
author | Guillaume Zajac <guillaume.zajac@linux.intel.com> | 2011-11-04 16:28:05 +0100 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-11-04 14:53:24 -0500 |
commit | 092acfde67ba725193b8391cd850774a8b77eeb9 (patch) | |
tree | cea44f755f20c2ade25b4d51d0e303eacf70bc59 /src/cdma-connman.c | |
parent | 0e3a73f5a86ce3ea830e52626bfa97f13b5db519 (diff) | |
download | ofono-092acfde67ba725193b8391cd850774a8b77eeb9.tar.gz |
cdma-connman: Check netreg when changing Powered
Diffstat (limited to 'src/cdma-connman.c')
-rw-r--r-- | src/cdma-connman.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/cdma-connman.c b/src/cdma-connman.c index db8f6c50..518fcb5f 100644 --- a/src/cdma-connman.c +++ b/src/cdma-connman.c @@ -338,6 +338,26 @@ static void cdma_connman_settings_append_properties( dbus_message_iter_close_container(dict, &entry); } +static ofono_bool_t cdma_connman_netreg_is_registered(struct ofono_cdma_connman *cm) +{ + int status; + ofono_bool_t registered; + struct ofono_modem *modem = __ofono_atom_get_modem(cm->atom); + struct ofono_atom *atom = __ofono_modem_find_atom(modem, + OFONO_ATOM_TYPE_CDMA_NETREG); + struct ofono_cdma_netreg *cdma_netreg; + + if (atom == NULL) + return FALSE; + + cdma_netreg = __ofono_atom_get_data(atom); + status = ofono_cdma_netreg_get_status(cdma_netreg); + + registered = status == NETWORK_REGISTRATION_STATUS_REGISTERED; + + return registered; +} + static DBusMessage *cdma_connman_get_properties(DBusConnection *conn, DBusMessage *msg, void *data) { @@ -463,9 +483,11 @@ static DBusMessage *cdma_connman_set_property(DBusConnection *conn, cm->driver->deactivate == NULL) return __ofono_error_not_implemented(msg); + if (cdma_connman_netreg_is_registered(cm) == FALSE) + return __ofono_error_not_registered(msg); + cm->pending = dbus_message_ref(msg); - /* TODO: add logic to support CDMA Network Registration */ if (value) cm->driver->activate(cm, cm->username, cm->password, activate_callback, cm); @@ -613,8 +635,6 @@ void ofono_cdma_connman_register(struct ofono_cdma_connman *cm) ofono_modem_add_interface(modem, OFONO_CDMA_CONNECTION_MANAGER_INTERFACE); - /* TODO: add watch to support CDMA Network Registration atom */ - __ofono_atom_register(cm->atom, cdma_connman_unregister); } |