static void radio_set_band(struct ofono_radio_settings *rs) { DBusConnection *conn = ofono_dbus_get_connection(); const char *path; const char *str_band; path = __ofono_atom_get_path(rs->atom); if (rs->band_gsm != rs->pending_band_gsm) { rs->band_gsm = rs->pending_band_gsm; str_band = radio_band_gsm_to_string(rs->band_gsm); ofono_dbus_signal_property_changed(conn, path, OFONO_RADIO_SETTINGS_INTERFACE, "GsmBand", DBUS_TYPE_STRING, &str_band); } if (rs->band_umts != rs->pending_band_umts) { rs->band_umts = rs->pending_band_umts; str_band = radio_band_umts_to_string(rs->band_umts); ofono_dbus_signal_property_changed(conn, path, OFONO_RADIO_SETTINGS_INTERFACE, "UmtsBand", DBUS_TYPE_STRING, &str_band); } }
static DBusMessage *radio_get_properties_reply(DBusMessage *msg, struct ofono_radio_settings *rs) { DBusMessage *reply; DBusMessageIter iter; DBusMessageIter dict; const char *mode = radio_access_mode_to_string(rs->mode); reply = dbus_message_new_method_return(msg); if (reply == NULL) return NULL; dbus_message_iter_init_append(reply, &iter); dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, OFONO_PROPERTIES_ARRAY_SIGNATURE, &dict); ofono_dbus_dict_append(&dict, "TechnologyPreference", DBUS_TYPE_STRING, &mode); if (rs->driver->query_band) { const char *band = radio_band_gsm_to_string(rs->band_gsm); ofono_dbus_dict_append(&dict, "GsmBand", DBUS_TYPE_STRING, &band); band = radio_band_umts_to_string(rs->band_umts); ofono_dbus_dict_append(&dict, "UmtsBand", DBUS_TYPE_STRING, &band); } if (rs->driver->query_fast_dormancy) { dbus_bool_t value = rs->fast_dormancy; ofono_dbus_dict_append(&dict, "FastDormancy", DBUS_TYPE_BOOLEAN, &value); } if (rs->driver->query_modem_rats) { const char *rats_strs[OFONO_RADIO_ACCESS_MODE_LAST + 1]; const char *(*strs)[] = &rats_strs; int i, str_i; for (i = 0, str_i = 0; i < OFONO_RADIO_ACCESS_MODE_LAST; ++i) if (rs->modem_rats[i]) rats_strs[str_i++] = radio_access_mode_to_string(i); rats_strs[str_i] = NULL; ofono_dbus_dict_append_array(&dict, "ModemTechnologies", DBUS_TYPE_STRING, &strs); } dbus_message_iter_close_container(&iter, &dict); return reply; }
static DBusMessage *radio_get_properties_reply(DBusMessage *msg, struct ofono_radio_settings *rs) { DBusMessage *reply; DBusMessageIter iter; DBusMessageIter dict; const char *mode = radio_access_mode_to_string(rs->mode); reply = dbus_message_new_method_return(msg); if (reply == NULL) return NULL; dbus_message_iter_init_append(reply, &iter); dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, OFONO_PROPERTIES_ARRAY_SIGNATURE, &dict); ofono_dbus_dict_append(&dict, "TechnologyPreference", DBUS_TYPE_STRING, &mode); if (rs->driver->query_band) { const char *band = radio_band_gsm_to_string(rs->band_gsm); ofono_dbus_dict_append(&dict, "GsmBand", DBUS_TYPE_STRING, &band); band = radio_band_umts_to_string(rs->band_umts); ofono_dbus_dict_append(&dict, "UmtsBand", DBUS_TYPE_STRING, &band); } if (rs->driver->query_fast_dormancy) { dbus_bool_t value = rs->fast_dormancy; ofono_dbus_dict_append(&dict, "FastDormancy", DBUS_TYPE_BOOLEAN, &value); } dbus_message_iter_close_container(&iter, &dict); return reply; }
static DBusMessage *radio_get_properties_reply(DBusMessage *msg, struct ofono_radio_settings *rs) { DBusMessage *reply; DBusMessageIter iter; DBusMessageIter dict; const char *mode = radio_access_mode_to_string(rs->mode); reply = dbus_message_new_method_return(msg); if (reply == NULL) return NULL; dbus_message_iter_init_append(reply, &iter); dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, OFONO_PROPERTIES_ARRAY_SIGNATURE, &dict); ofono_dbus_dict_append(&dict, "TechnologyPreference", DBUS_TYPE_STRING, &mode); if (rs->driver->query_band) { const char *band = radio_band_gsm_to_string(rs->band_gsm); ofono_dbus_dict_append(&dict, "GsmBand", DBUS_TYPE_STRING, &band); band = radio_band_umts_to_string(rs->band_umts); ofono_dbus_dict_append(&dict, "UmtsBand", DBUS_TYPE_STRING, &band); } if (rs->driver->query_fast_dormancy) { dbus_bool_t value = rs->fast_dormancy; ofono_dbus_dict_append(&dict, "FastDormancy", DBUS_TYPE_BOOLEAN, &value); } if (rs->available_rats) { const char *rats[sizeof(uint32_t) * CHAR_BIT + 1]; const char **dbus_rats = rats; int n = 0; unsigned int i; for (i = 0; i < sizeof(uint32_t) * CHAR_BIT; i++) { int tech = 1 << i; 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, &dbus_rats); } dbus_message_iter_close_container(&iter, &dict); return reply; }