summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2014-12-10 10:38:42 -0600
committerDenis Kenzior <denkenz@gmail.com>2014-12-10 11:03:16 -0600
commit44049f064abec2e2da03fc06251424b5f8410a2c (patch)
treeb53f64c322acde83662e2bee2157a7c0881ffd98 /src
parentb899f4aca28120f0d336fa2990101a6a26e247e8 (diff)
downloadofono-44049f064abec2e2da03fc06251424b5f8410a2c.tar.bz2
radio-settings: rework AvailableTechnologies logic
Take advantage of the new enum structure to future proof and simplify the logic of generating the AvailableTechnologies property
Diffstat (limited to 'src')
-rw-r--r--src/radio-settings.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/radio-settings.c b/src/radio-settings.c
index 5d166cc9..8c8ca264 100644
--- a/src/radio-settings.c
+++ b/src/radio-settings.c
@@ -225,20 +225,24 @@ static DBusMessage *radio_get_properties_reply(DBusMessage *msg,
}
if (rs->available_rats) {
- const char *rats_strs[OFONO_RADIO_ACCESS_MODE_LTE + 1];
- const char **strs = rats_strs;
- int str_i = 0;
- size_t i, techs = sizeof(rats_strs)/sizeof(rats_strs[0]) - 1;
+ const char *rats[sizeof(uint32_t) + 1];
+ const char **dbus_rats = rats;
+ int n = 0;
+ unsigned int i;
- for (i = 0; i < techs; ++i)
- if (rs->available_rats & (1 << i))
- rats_strs[str_i++] =
- radio_access_mode_to_string(i + 1);
+ for (i = 0; i < sizeof(uint32_t); i++) {
+ int tech = 1 << i;
- rats_strs[str_i] = NULL;
+ if (!(rs->available_rats & tech))
+ continue;
+
+ rats[n++] = radio_access_mode_to_string(tech);
+ }
+
+ rats[n] = NULL;
ofono_dbus_dict_append_array(&dict, "AvailableTechnologies",
- DBUS_TYPE_STRING, &strs);
+ DBUS_TYPE_STRING, &dbus_rats);
}
dbus_message_iter_close_container(&iter, &dict);