---
src/cdma-connman.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
src/common.h | 1 +
2 files changed, 50 insertions(+), 0 deletions(-)
diff --git a/src/cdma-connman.c b/src/cdma-connman.c
index 87cefd6..ff835ed 100644
--- a/src/cdma-connman.c
+++ b/src/cdma-connman.c
@@ -40,6 +40,13 @@
static GSList *g_drivers;
+enum packet_bearer {
+ PACKET_BEARER_NONE = 0,
+ PACKET_BEARER_CDMA_1X = 1,
+ PACKET_BEARER_CDMA_EVDO = 2,
+ PACKET_BEARER_CDMA_SVDO = 3,
+};
+
struct cdma_connman_settings {
char *interface;
gboolean static_ip;
@@ -52,6 +59,7 @@ struct cdma_connman_settings {
struct ofono_cdma_connman {
ofono_bool_t powered;
ofono_bool_t dormant;
+ int bearer;
struct cdma_connman_settings *settings;
DBusMessage *pending;
const struct ofono_cdma_connman_driver *driver;
@@ -61,6 +69,21 @@ struct ofono_cdma_connman {
char password[OFONO_CDMA_CONNMAN_MAX_PASSWORD_LENGTH + 1];
};
+const char *cdma_packet_bearer_to_string(int bearer)
+{
+ switch (bearer) {
+ case PACKET_BEARER_NONE:
+ return "none";
+ case PACKET_BEARER_CDMA_1X:
+ return "1x";
+ case PACKET_BEARER_CDMA_EVDO:
+ return "evdo";
+ case PACKET_BEARER_CDMA_SVDO:
+ return "svdo";
+ }
+ return "";
+}
+
static void cdma_connman_settings_free(struct cdma_connman_settings *settings)
{
DBG("");
@@ -390,6 +413,13 @@ static DBusMessage
*cdma_connman_get_properties(DBusConnection *conn,
value = cm->dormant;
ofono_dbus_dict_append(&dict, "Dormant", DBUS_TYPE_BOOLEAN, &value);
+ if (cm->bearer != -1) {
+ const char *bearer = cdma_packet_bearer_to_string(cm->bearer);
+
+ ofono_dbus_dict_append(&dict, "Bearer",
+ DBUS_TYPE_STRING, &bearer);
+ }
+
if (cm->settings)
cdma_connman_settings_append_properties(cm, &dict);
@@ -532,6 +562,25 @@ static GDBusSignalTable cdma_connman_signals[] = {
{ }
};
+void ofono_cdma_connman_bearer_notify(struct ofono_cdma_connman *cm,
+ int bearer)
+{
+ DBusConnection *conn = ofono_dbus_get_connection();
+ const char *path;
+ const char *value;
+
+ if (cm->bearer == bearer)
+ return;
+
+ cm->bearer = bearer;
+ path = __ofono_atom_get_path(cm->atom);
+ value = cdma_packet_bearer_to_string(bearer);
+ ofono_dbus_signal_property_changed(conn, path,
+ OFONO_CDMA_CONNECTION_MANAGER_INTERFACE,
+ "Bearer", DBUS_TYPE_STRING, &value);
+}
+
+
int ofono_cdma_connman_driver_register(
const struct ofono_cdma_connman_driver *d)
{
diff --git a/src/common.h b/src/common.h
index eb006a7..7cdf7ec 100644
--- a/src/common.h
+++ b/src/common.h
@@ -158,5 +158,6 @@ const char *bearer_class_to_string(enum bearer_class cls);
const char *registration_status_to_string(int status);
const char *registration_tech_to_string(int tech);
const char *packet_bearer_to_string(int bearer);
+const char *cdma_packet_bearer_to_string(int bearer);
gboolean is_valid_apn(const char *apn);
--
1.7.1
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono