All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.