summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2011-08-09 13:13:06 -0500
committerDenis Kenzior <denkenz@gmail.com>2011-08-09 13:13:06 -0500
commit5c412c1bc4808f6355ca04454576854d7e951b14 (patch)
tree04ee6d41560a10daf2bbd68a49481f89f99bde61 /src
parent873fa4c42a0a4d0b364f59a0550fed8cae374620 (diff)
downloadofono-5c412c1bc4808f6355ca04454576854d7e951b14.tar.bz2
cdma-netreg: Implement HDR strength updates
Diffstat (limited to 'src')
-rw-r--r--src/cdma-netreg.c36
1 files changed, 29 insertions, 7 deletions
diff --git a/src/cdma-netreg.c b/src/cdma-netreg.c
index 12ddd23b..d1a79cf7 100644
--- a/src/cdma-netreg.c
+++ b/src/cdma-netreg.c
@@ -34,6 +34,7 @@ static GSList *g_drivers;
struct ofono_cdma_netreg {
enum cdma_netreg_status status;
int strength;
+ int hdr_strength;
const struct ofono_cdma_netreg_driver *driver;
void *driver_data;
struct ofono_atom *atom;
@@ -82,6 +83,13 @@ static DBusMessage *network_get_properties(DBusConnection *conn,
&strength);
}
+ if (cdma_netreg->hdr_strength != -1) {
+ unsigned char strength = cdma_netreg->hdr_strength;
+
+ ofono_dbus_dict_append(&dict, "DataStrength", DBUS_TYPE_BYTE,
+ &strength);
+ }
+
dbus_message_iter_close_container(&iter, &dict);
return reply;
@@ -121,13 +129,14 @@ void ofono_cdma_netreg_status_notify(struct ofono_cdma_netreg *cdma_netreg,
set_registration_status(cdma_netreg, status);
}
-void ofono_cdma_netreg_strength_notify(struct ofono_cdma_netreg *netreg,
- int strength)
+static void strength_notify_common(struct ofono_cdma_netreg *netreg,
+ int strength, const char *property,
+ int *dest)
{
if (netreg == NULL)
return;
- if (netreg->strength == strength)
+ if (*dest == strength)
return;
/*
@@ -137,20 +146,33 @@ void ofono_cdma_netreg_strength_notify(struct ofono_cdma_netreg *netreg,
if (netreg->status == CDMA_NETWORK_REGISTRATION_STATUS_NOT_REGISTERED)
return;
- netreg->strength = strength;
+ *dest = strength;
if (strength != -1) {
DBusConnection *conn = ofono_dbus_get_connection();
const char *path = __ofono_atom_get_path(netreg->atom);
- unsigned char strength = netreg->strength;
+ unsigned char val = strength;
ofono_dbus_signal_property_changed(conn, path,
OFONO_CDMA_NETWORK_REGISTRATION_INTERFACE,
- "Strength", DBUS_TYPE_BYTE,
- &strength);
+ property, DBUS_TYPE_BYTE, &val);
}
}
+void ofono_cdma_netreg_strength_notify(struct ofono_cdma_netreg *netreg,
+ int strength)
+{
+ return strength_notify_common(netreg, strength,
+ "Strength", &netreg->strength);
+}
+
+void ofono_cdma_netreg_data_strength_notify(struct ofono_cdma_netreg *netreg,
+ int data_strength)
+{
+ return strength_notify_common(netreg, data_strength,
+ "DataStrength", &netreg->hdr_strength);
+}
+
int ofono_cdma_netreg_driver_register(const struct ofono_cdma_netreg_driver *d)
{
DBG("driver: %p, name: %s", d, d->name);