summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2016-04-25 15:26:35 -0500
committerDenis Kenzior <denkenz@gmail.com>2016-04-25 15:26:35 -0500
commitc02a97b207efa593130eff51be8c8904aff1c099 (patch)
treef61e2aa768fff7afac58fe3cbda7cadd0fcbd463
parent2bb515a6ab94370c76c5e8ff27d989b5564f59f1 (diff)
downloadofono-c02a97b207efa593130eff51be8c8904aff1c099.tar.gz
ril: vendorize SoFiA set_band implementation
Since the set_band implementation uses an OEM hook, it should be wrapped behind a vendor quirk.
-rw-r--r--drivers/rilmodem/radio-settings.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/drivers/rilmodem/radio-settings.c b/drivers/rilmodem/radio-settings.c
index 1d9d9db7..7317950c 100644
--- a/drivers/rilmodem/radio-settings.c
+++ b/drivers/rilmodem/radio-settings.c
@@ -84,6 +84,7 @@ struct radio_data {
GRil *ril;
gboolean fast_dormancy;
gboolean pending_fd;
+ unsigned int vendor;
};
static void ril_set_rat_cb(struct ril_msg *message, gpointer user_data)
@@ -320,11 +321,11 @@ static void ril_set_band_cb(struct ril_msg *message, gpointer user_data)
}
}
-static void ril_set_band(struct ofono_radio_settings *rs,
- enum ofono_radio_band_gsm band_gsm,
- enum ofono_radio_band_umts band_umts,
- ofono_radio_settings_band_set_cb_t cb,
- void *data)
+static void ril_sofia3gr_set_band(struct ofono_radio_settings *rs,
+ enum ofono_radio_band_gsm band_gsm,
+ enum ofono_radio_band_umts band_umts,
+ ofono_radio_settings_band_set_cb_t cb,
+ void *data)
{
struct radio_data *rd = ofono_radio_settings_get_data(rs);
struct cb_data *cbd = cb_data_new(cb, data, rs);
@@ -393,7 +394,26 @@ static void ril_set_band(struct ofono_radio_settings *rs,
return;
g_free(cbd);
- CALLBACK_WITH_FAILURE(cb,data);
+ CALLBACK_WITH_FAILURE(cb, data);
+}
+
+static void ril_set_band(struct ofono_radio_settings *rs,
+ enum ofono_radio_band_gsm band_gsm,
+ enum ofono_radio_band_umts band_umts,
+ ofono_radio_settings_band_set_cb_t cb,
+ void *data)
+{
+ struct radio_data *rd = ofono_radio_settings_get_data(rs);
+
+ switch (rd->vendor) {
+ case OFONO_RIL_VENDOR_IMC_SOFIA3GR:
+ ril_sofia3gr_set_band(rs, band_gsm, band_umts, cb, data);
+ return;
+ default:
+ break;
+ }
+
+ CALLBACK_WITH_FAILURE(cb, data);
}
static void ril_delayed_register(const struct ofono_error *error,
@@ -414,6 +434,7 @@ static int ril_radio_settings_probe(struct ofono_radio_settings *rs,
struct radio_data *rsd = g_new0(struct radio_data, 1);
rsd->ril = g_ril_clone(ril);
+ rsd->vendor = vendor;
ofono_radio_settings_set_data(rs, rsd);