linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/4] SAP: Add support for handle ongoing call
@ 2011-11-07 14:56 Lukasz Rymanowski
  2011-11-10  8:31 ` Johan Hedberg
  0 siblings, 1 reply; 2+ messages in thread
From: Lukasz Rymanowski @ 2011-11-07 14:56 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: henrik.possung, ulrik.lauren, Lukasz Rymanowski

With this patch support for handling connect request
during ongoing call is added.

Change-Id: I7bd25273a33e5a14cc3698cfc560a5df47cd8f5a
---
 sap/sap-u8500.c |   53 ++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/sap/sap-u8500.c b/sap/sap-u8500.c
index dadea29..f804ca8 100644
--- a/sap/sap-u8500.c
+++ b/sap/sap-u8500.c
@@ -78,7 +78,8 @@ enum ste_protocol {
 	STE_GET_ATR_RSP		= 0x2E07,
 	STE_GET_STATUS_REQ	= 0x2D08,
 	STE_GET_STATUS_RSP	= 0x2E08,
-	STE_STATUS_IND		= 0x2F02
+	STE_STATUS_IND		= 0x2F02,
+	STE_SIM_READY_IND	= 0x2F03,
 };
 
 enum ste_msg {
@@ -94,6 +95,7 @@ enum ste_msg {
 enum ste_status {
 	STE_STATUS_OK		= 0x00000000,
 	STE_STATUS_FAILURE	= 0x00000001,
+	STE_STATUS_BUSY_CALL	= 0x00000002,
 };
 
 enum ste_card_status {
@@ -118,6 +120,7 @@ enum ste_state {
 	STE_POWERED_OFF,	/* Card in the reader but powered off */
 	STE_NO_CARD,		/* No card in the reader */
 	STE_ENABLED,		/* Card in the reader and powered on */
+	STE_SIM_BUSY,		/* Modem is busy with ongoing call.*/
 	STE_STATE_MAX
 };
 
@@ -377,6 +380,42 @@ static void simd_close(void)
 	u8500.sap_data = NULL;
 }
 
+static void recv_sim_ready()
+{
+	sap_info("sim is ready. Try to connect again");
+
+	if (send_request(u8500.io, STE_START_SAP_REQ, NULL) < 0) {
+		sap_connect_rsp(u8500.sap_data, SAP_STATUS_CONNECTION_FAILED,
+								SAP_BUF_SIZE);
+		simd_close();
+	}
+}
+
+static void recv_connect_rsp(uint32_t status)
+{
+	switch (status) {
+	case STE_STATUS_OK:
+		if (u8500.state != STE_SIM_BUSY)
+			sap_connect_rsp(u8500.sap_data,
+					SAP_STATUS_OK, 0);
+		break;
+	case STE_STATUS_BUSY_CALL:
+		if (u8500.state != STE_SIM_BUSY) {
+			sap_connect_rsp(u8500.sap_data,
+				SAP_STATUS_OK_ONGOING_CALL,
+				SAP_BUF_SIZE);
+
+			u8500.state = STE_SIM_BUSY;
+		}
+		break;
+	default:
+		sap_connect_rsp(u8500.sap_data,
+				SAP_STATUS_CONNECTION_FAILED, 0);
+		simd_close();
+		break;
+	}
+}
+
 static void recv_response(struct ste_message *msg)
 {
 	uint32_t status;
@@ -398,15 +437,8 @@ static void recv_response(struct ste_message *msg)
 
 	switch (msg->id) {
 	case STE_START_SAP_RSP:
-		if (status == STE_STATUS_OK) {
-			sap_connect_rsp(u8500.sap_data, SAP_STATUS_OK, 0);
-		} else {
-			sap_connect_rsp(u8500.sap_data,
-					SAP_STATUS_CONNECTION_FAILED, 0);
-			simd_close();
-		}
+		recv_connect_rsp(status);
 		break;
-
 	case STE_SEND_APDU_RSP:
 		recv_pdu(STE_SEND_APDU_MSG, msg, status, param,
 							sap_transfer_apdu_rsp);
@@ -439,6 +471,9 @@ static void recv_response(struct ste_message *msg)
 	case STE_STATUS_IND:
 		recv_status(status);
 		break;
+	case STE_SIM_READY_IND:
+		recv_sim_ready();
+		break;
 
 	default:
 		sap_error("unsupported message received (id 0x%x)", msg->id);
-- 
on behalf of ST-Ericsson


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2011-11-10  8:31 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-07 14:56 [PATCH 1/4] SAP: Add support for handle ongoing call Lukasz Rymanowski
2011-11-10  8:31 ` Johan Hedberg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).