diff options
author | Denis Kenzior <denkenz@gmail.com> | 2016-04-25 15:26:35 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2016-04-25 15:26:35 -0500 |
commit | c02a97b207efa593130eff51be8c8904aff1c099 (patch) | |
tree | f61e2aa768fff7afac58fe3cbda7cadd0fcbd463 /drivers/rilmodem | |
parent | 2bb515a6ab94370c76c5e8ff27d989b5564f59f1 (diff) | |
download | ofono-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.
Diffstat (limited to 'drivers/rilmodem')
-rw-r--r-- | drivers/rilmodem/radio-settings.c | 33 |
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); |