summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/modem.h2
-rw-r--r--src/modem.c25
2 files changed, 27 insertions, 0 deletions
diff --git a/include/modem.h b/include/modem.h
index b2aa6078..d502640b 100644
--- a/include/modem.h
+++ b/include/modem.h
@@ -50,6 +50,8 @@ void ofono_modem_remove(struct ofono_modem *modem);
void ofono_modem_set_powered(struct ofono_modem *modem, ofono_bool_t powered);
ofono_bool_t ofono_modem_get_powered(struct ofono_modem *modem);
+void ofono_modem_set_name(struct ofono_modem *modem, const char *name);
+
int ofono_modem_set_string(struct ofono_modem *modem,
const char *key, const char *value);
const char *ofono_modem_get_string(struct ofono_modem *modem, const char *key);
diff --git a/src/modem.c b/src/modem.c
index 200091af..a79577cb 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -67,6 +67,7 @@ struct ofono_modem {
const struct ofono_modem_driver *driver;
void *driver_data;
char *driver_type;
+ char *name;
};
struct ofono_devinfo {
@@ -394,6 +395,10 @@ static DBusMessage *modem_get_properties(DBusConnection *conn,
g_free(interfaces);
+ if (modem->name)
+ ofono_dbus_dict_append(&dict, "Name", DBUS_TYPE_STRING,
+ &modem->name);
+
dbus_message_iter_close_container(&iter, &dict);
return reply;
@@ -1040,6 +1045,26 @@ bool ofono_modem_get_boolean(struct ofono_modem *modem, const char *key)
return value;
}
+void ofono_modem_set_name(struct ofono_modem *modem, const char *name)
+{
+ if (modem->name)
+ g_free(modem->name);
+
+ if (!name)
+ return;
+
+ modem->name = g_strdup(name);
+
+ if (modem->driver) {
+ DBusConnection *conn = ofono_dbus_get_connection();
+
+ ofono_dbus_signal_property_changed(conn, modem->path,
+ OFONO_MODEM_INTERFACE,
+ "Name", DBUS_TYPE_STRING,
+ &modem->name);
+ }
+}
+
struct ofono_modem *ofono_modem_create(const char *name, const char *type)
{
struct ofono_modem *modem;