Hi Denis, On 09/08/2011 20:37, Denis Kenzior wrote: > Hi Guillaume, > > On 08/09/2011 09:48 AM, Guillaume Zajac wrote: >> --- >> src/cdma-connman.c | 34 ++++++++++++++++++++++++++++++++++ >> 1 files changed, 34 insertions(+), 0 deletions(-) >> >> diff --git a/src/cdma-connman.c b/src/cdma-connman.c >> index 3967080..9f40104 100644 >> --- a/src/cdma-connman.c >> +++ b/src/cdma-connman.c >> @@ -510,16 +510,50 @@ static DBusMessage *cdma_connman_set_property(DBusConnection *conn, >> return __ofono_error_invalid_args(msg); >> } >> >> +static DBusMessage *cdma_connman_remove_credentials(DBusConnection *conn, >> + DBusMessage *msg, >> + void *data) >> +{ >> + struct ofono_cdma_connman *cm = data; >> + const char *path; >> + >> + DBG(""); >> + >> + strcpy(cm->username, ""); >> + strcpy(cm->password, ""); >> + >> + if (cm->powered == TRUE) >> + cm->driver->deactivate(cm, deactivate_callback, cm); > You can't do it this way, you need to ensure no other operations are in > progress... > >> + >> + if (cm->credentials) { >> + g_key_file_remove_group(cm->credentials, CREDENTIALS_GROUP, >> + NULL); >> + storage_sync(cm->serial, CREDENTIALS_STORE, cm->credentials); >> + } >> + >> + g_dbus_send_reply(conn, msg, DBUS_TYPE_INVALID); >> + >> + path = __ofono_atom_get_path(cm->atom); >> + g_dbus_emit_signal(conn, path, OFONO_CONNECTION_MANAGER_INTERFACE, >> + "CredentialsRemoved", DBUS_TYPE_INVALID); >> + >> + return NULL; >> +} >> + >> static GDBusMethodTable cdma_connman_methods[] = { >> { "GetProperties", "", "a{sv}", >> cdma_connman_get_properties }, >> { "SetProperty", "sv", "", cdma_connman_set_property, >> G_DBUS_METHOD_FLAG_ASYNC }, >> + { "RemoveCredentials", "", "", >> + cdma_connman_remove_credentials, >> + G_DBUS_METHOD_FLAG_ASYNC }, >> { } >> }; >> >> static GDBusSignalTable cdma_connman_signals[] = { >> { "PropertyChanged", "sv" }, >> + { "CredentialsRemoved", "" }, >> { } >> }; >> > However, I'm pretty much against these changes right now. What exactly > is your usecase here? > > At the beginning, I would have liked to be able to emit "CredentialsAdded" "CredentialsRemoved", to notify ConnMan that the Cellular service can be published or removed like we do it for GSM Contexts. Now, using "Status" == "registered" property from cdma.NetworkRegistration to publish the service into ConnMan might be cleaner. With both solutions, we should handle into oFono the ppp_disconnect reason G_AT_PPP_REASON_AUTH_FAIL to try again with other credentials. Kind regards, Guillaume