* [PATCH] rilmodem: Driver code to set band mode and value
@ 2016-04-25 15:42 Samrat Guha Niyogi
2016-04-26 3:42 ` Denis Kenzior
0 siblings, 1 reply; 2+ messages in thread
From: Samrat Guha Niyogi @ 2016-04-25 15:42 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 4522 bytes --]
From: Antara Borwankar <antara.borwankar@gmail.com>
set_band driver to set GSM band and UMTS band
---
drivers/rilmodem/radio-settings.c | 109 ++++++++++++++++++++++++++++++++++++++
1 file changed, 109 insertions(+)
diff --git a/drivers/rilmodem/radio-settings.c b/drivers/rilmodem/radio-settings.c
index 90b49c6..eb26902 100644
--- a/drivers/rilmodem/radio-settings.c
+++ b/drivers/rilmodem/radio-settings.c
@@ -64,6 +64,22 @@
#define MTK_PREF_NET_TYPE_LTE_GSM_TYPE (MTK_PREF_NET_TYPE_BASE + 5)
#define MTK_PREF_NET_TYPE_LTE_GSM_MMDC_TYPE (MTK_PREF_NET_TYPE_BASE + 6)
+/*GSM Band*/
+#define PREF_NET_BAND_GSM_AUTOMATIC 255
+#define PREF_NET_BAND_GSM850 6
+#define PREF_NET_BAND_GSM900_P 1
+#define PREF_NET_BAND_GSM900_E 2
+#define PREF_NET_BAND_GSM1800 4
+#define PREF_NET_BAND_GSM1900 5
+
+/*UMTS Band*/
+#define PREF_NET_BAND_UMTS_AUTOMATIC 255
+#define PREF_NET_BAND_UMTS_V 54
+#define PREF_NET_BAND_UMTS_VIII 57
+#define PREF_NET_BAND_UMTS_IV 53
+#define PREF_NET_BAND_UMTS_II 51
+#define PREF_NET_BAND_UMTS_I 50
+
struct radio_data {
GRil *ril;
gboolean fast_dormancy;
@@ -288,6 +304,98 @@ static void ril_query_available_rats(struct ofono_radio_settings *rs,
CALLBACK_WITH_SUCCESS(cb, available_rats, data);
}
+static void ril_set_band_cb(struct ril_msg *message, gpointer user_data)
+{
+ struct cb_data *cbd = user_data;
+ struct ofono_radio_settings *rs = cbd->user;
+ struct radio_data *rd = ofono_radio_settings_get_data(rs);
+ ofono_radio_settings_band_set_cb_t cb = cbd->cb;
+
+ if (message->error == RIL_E_SUCCESS) {
+ g_ril_print_response_no_args(rd->ril, message);
+
+ CALLBACK_WITH_SUCCESS(cb, cbd->data);
+ } else {
+ CALLBACK_WITH_FAILURE(cb, cbd->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);
+ struct cb_data *cbd = cb_data_new(cb, data, rs);
+ struct parcel rilp;
+ char cmd_buf[9], gsm_band[4], umts_band[4];
+ /* RIL_OEM_HOOK_STRING_SET_BAND_PREFERENCE = 0x000000CE */
+ int cmd_id = 0x000000CE;
+ sprintf(cmd_buf, "%d", cmd_id);
+
+ switch (band_gsm) {
+ case OFONO_RADIO_BAND_GSM_ANY:
+ sprintf(gsm_band, "%d", PREF_NET_BAND_GSM_AUTOMATIC);
+ break;
+ case OFONO_RADIO_BAND_GSM_850:
+ sprintf(gsm_band, "%d", PREF_NET_BAND_GSM850);
+ break;
+ case OFONO_RADIO_BAND_GSM_900P:
+ sprintf(gsm_band, "%d", PREF_NET_BAND_GSM900_P);
+ break;
+ case OFONO_RADIO_BAND_GSM_900E:
+ sprintf(gsm_band, "%d", PREF_NET_BAND_GSM900_E);
+ break;
+ case OFONO_RADIO_BAND_GSM_1800:
+ sprintf(gsm_band, "%d", PREF_NET_BAND_GSM1800);
+ break;
+ case OFONO_RADIO_BAND_GSM_1900:
+ sprintf(gsm_band, "%d", PREF_NET_BAND_GSM1900);
+ break;
+ default:
+ CALLBACK_WITH_FAILURE(cb, data);
+ return;
+ }
+
+ switch (band_umts) {
+ case OFONO_RADIO_BAND_UMTS_ANY:
+ sprintf(umts_band, "%d", PREF_NET_BAND_UMTS_AUTOMATIC);
+ break;
+ case OFONO_RADIO_BAND_UMTS_850:
+ sprintf(umts_band, "%d", PREF_NET_BAND_UMTS_V);
+ break;
+ case OFONO_RADIO_BAND_UMTS_900:
+ sprintf(umts_band, "%d", PREF_NET_BAND_UMTS_VIII);
+ break;
+ case OFONO_RADIO_BAND_UMTS_1700AWS:
+ sprintf(umts_band, "%d", PREF_NET_BAND_UMTS_IV);
+ break;
+ case OFONO_RADIO_BAND_UMTS_1900:
+ sprintf(umts_band, "%d", PREF_NET_BAND_UMTS_II);
+ break;
+ case OFONO_RADIO_BAND_UMTS_2100:
+ sprintf(umts_band, "%d", PREF_NET_BAND_UMTS_I);
+ break;
+ default:
+ CALLBACK_WITH_FAILURE(cb, data);
+ return;
+ }
+
+ parcel_init(&rilp);
+ parcel_w_int32(&rilp, 3); /* Number of params */
+ parcel_w_string(&rilp, cmd_buf);
+ parcel_w_string(&rilp, gsm_band);
+ parcel_w_string(&rilp, umts_band);
+
+ if (g_ril_send(rd->ril, RIL_REQUEST_OEM_HOOK_STRINGS, &rilp,
+ ril_set_band_cb, cbd, g_free) > 0)
+ return;
+
+ g_free(cbd);
+ CALLBACK_WITH_FAILURE(cb,data);
+}
+
static void ril_delayed_register(const struct ofono_error *error,
void *user_data)
{
@@ -329,6 +437,7 @@ static struct ofono_radio_settings_driver driver = {
.remove = ril_radio_settings_remove,
.query_rat_mode = ril_query_rat_mode,
.set_rat_mode = ril_set_rat_mode,
+ .set_band = ril_set_band,
.query_fast_dormancy = ril_query_fast_dormancy,
.set_fast_dormancy = ril_set_fast_dormancy,
.query_available_rats = ril_query_available_rats
--
1.9.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] rilmodem: Driver code to set band mode and value
2016-04-25 15:42 [PATCH] rilmodem: Driver code to set band mode and value Samrat Guha Niyogi
@ 2016-04-26 3:42 ` Denis Kenzior
0 siblings, 0 replies; 2+ messages in thread
From: Denis Kenzior @ 2016-04-26 3:42 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 346 bytes --]
Hi Antara
On 04/25/2016 10:42 AM, Samrat Guha Niyogi wrote:
> From: Antara Borwankar <antara.borwankar@gmail.com>
>
> set_band driver to set GSM band and UMTS band
> ---
> drivers/rilmodem/radio-settings.c | 109 ++++++++++++++++++++++++++++++++++++++
> 1 file changed, 109 insertions(+)
>
Applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-04-26 3:42 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-25 15:42 [PATCH] rilmodem: Driver code to set band mode and value Samrat Guha Niyogi
2016-04-26 3:42 ` Denis Kenzior
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.