diff options
author | Denis Kenzior <denkenz@gmail.com> | 2014-12-10 10:38:42 -0600 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2014-12-10 11:03:16 -0600 |
commit | 44049f064abec2e2da03fc06251424b5f8410a2c (patch) | |
tree | b53f64c322acde83662e2bee2157a7c0881ffd98 /src | |
parent | b899f4aca28120f0d336fa2990101a6a26e247e8 (diff) | |
download | ofono-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.c | 24 |
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); |