summaryrefslogtreecommitdiffstats
path: root/src/cdma-connman.c
diff options
context:
space:
mode:
authorGuillaume Zajac <guillaume.zajac@linux.intel.com>2011-07-21 06:40:42 +0200
committerDenis Kenzior <denkenz@gmail.com>2011-07-21 04:33:49 -0500
commitcbeb0a454b4fa445fdeb7ea77e2e98ee5f8cb4aa (patch)
treea4d5b1709cf88b2d6733261403af9479610d0bc0 /src/cdma-connman.c
parentc6160a1d5f62b418ae5d69c7bfa9a8958ea35683 (diff)
downloadofono-cbeb0a454b4fa445fdeb7ea77e2e98ee5f8cb4aa.tar.bz2
cdma-connman: Add Username and Password properties
Diffstat (limited to 'src/cdma-connman.c')
-rw-r--r--src/cdma-connman.c48
1 files changed, 47 insertions, 1 deletions
diff --git a/src/cdma-connman.c b/src/cdma-connman.c
index 3321b872..4466dee8 100644
--- a/src/cdma-connman.c
+++ b/src/cdma-connman.c
@@ -57,6 +57,8 @@ struct ofono_cdma_connman {
const struct ofono_cdma_connman_driver *driver;
void *driver_data;
struct ofono_atom *atom;
+ char username[OFONO_CDMA_CONNMAN_MAX_USERNAME_LENGTH + 1];
+ char password[OFONO_CDMA_CONNMAN_MAX_PASSWORD_LENGTH + 1];
};
static void cdma_connman_settings_free(struct cdma_connman_settings *settings)
@@ -371,6 +373,36 @@ static DBusMessage *cdma_connman_get_properties(DBusConnection *conn,
return reply;
}
+static DBusMessage *cdma_connman_set_username(struct ofono_cdma_connman *cm,
+ DBusConnection *conn, DBusMessage *msg,
+ const char *username)
+{
+ if (strlen(username) > OFONO_CDMA_CONNMAN_MAX_USERNAME_LENGTH)
+ return __ofono_error_invalid_format(msg);
+
+ if (g_str_equal(username, cm->username))
+ return dbus_message_new_method_return(msg);
+
+ strcpy(cm->username, username);
+
+ return dbus_message_new_method_return(msg);
+}
+
+static DBusMessage *cdma_connman_set_password(struct ofono_cdma_connman *cm,
+ DBusConnection *conn, DBusMessage *msg,
+ const char *password)
+{
+ if (strlen(password) > OFONO_CDMA_CONNMAN_MAX_PASSWORD_LENGTH)
+ return __ofono_error_invalid_format(msg);
+
+ if (g_str_equal(password, cm->password))
+ return dbus_message_new_method_return(msg);
+
+ strcpy(cm->password, password);
+
+ return dbus_message_new_method_return(msg);
+}
+
static DBusMessage *cdma_connman_set_property(DBusConnection *conn,
DBusMessage *msg, void *data)
{
@@ -379,6 +411,7 @@ static DBusMessage *cdma_connman_set_property(DBusConnection *conn,
DBusMessageIter var;
const char *property;
dbus_bool_t value;
+ const char *str;
DBG("");
@@ -416,11 +449,24 @@ static DBusMessage *cdma_connman_set_property(DBusConnection *conn,
/* TODO: add logic to support CDMA Network Registration */
if (value)
- cm->driver->activate(cm, activate_callback, cm);
+ cm->driver->activate(cm, cm->username, cm->password,
+ activate_callback, cm);
else
cm->driver->deactivate(cm, deactivate_callback, cm);
return dbus_message_new_method_return(msg);
+ } else if (!strcmp(property, "Username")) {
+ if (dbus_message_iter_get_arg_type(&var) != DBUS_TYPE_STRING)
+ return __ofono_error_invalid_args(msg);
+
+ dbus_message_iter_get_basic(&var, &str);
+ return cdma_connman_set_username(cm, conn, msg, str);
+ } else if (!strcmp(property, "Password")) {
+ if (dbus_message_iter_get_arg_type(&var) != DBUS_TYPE_STRING)
+ return __ofono_error_invalid_args(msg);
+
+ dbus_message_iter_get_basic(&var, &str);
+ return cdma_connman_set_password(cm, conn, msg, str);
}
/* TODO: Dormant property. Not yet supported. */