diff --git a/sap/sap-dummy.c b/sap/sap-dummy.c
index b840946..2ad8af4 100644
--- a/sap/sap-dummy.c
+++ b/sap/sap-dummy.c
DBG("status: %d", sim_card_conn_status);
if (sim_card_conn_status != SIM_DISCONNECTED) {
- sap_connect_rsp(sap_device, SAP_STATUS_CONNECTION_FAILED,
- maxmsgsize);
+ sap_connect_rsp(sap_device, SAP_STATUS_CONNECTION_FAILED);
return;
}
if (max_msg_size_supported > maxmsgsize) {
- sap_connect_rsp(sap_device, SAP_STATUS_MAX_MSG_SIZE_TOO_SMALL,
- max_msg_size_supported);
+ sap_connect_rsp(sap_device, SAP_STATUS_MAX_MSG_SIZE_TOO_SMALL);
return;
}
if (max_msg_size_supported < maxmsgsize) {
sap_connect_rsp(sap_device,
- SAP_STATUS_MAX_MSG_SIZE_NOT_SUPPORTED,
- max_msg_size_supported);
+ SAP_STATUS_MAX_MSG_SIZE_NOT_SUPPORTED);
return;
}
if (ongoing_call_status) {
- sap_connect_rsp(sap_device, SAP_STATUS_OK_ONGOING_CALL,
- max_msg_size_supported);
+ sap_connect_rsp(sap_device, SAP_STATUS_OK_ONGOING_CALL);
return;
}
sim_card_conn_status = SIM_CONNECTED;
sap_data = sap_device;
- sap_connect_rsp(sap_device, SAP_STATUS_OK, maxmsgsize);
+ sap_connect_rsp(sap_device, SAP_STATUS_OK);
sap_status_ind(sap_device, SAP_STATUS_CHANGE_CARD_RESET);
}
diff --git a/sap/sap-u8500.c b/sap/sap-u8500.c
index 2920cc7..531dce4 100644
--- a/sap/sap-u8500.c
+++ b/sap/sap-u8500.c
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);
+ sap_connect_rsp(u8500.sap_data, SAP_STATUS_CONNECTION_FAILED);
simd_close();
}
}
switch (status) {
case STE_STATUS_OK:
if (u8500.state != STE_SIM_BUSY)
- sap_connect_rsp(u8500.sap_data,
- SAP_STATUS_OK, 0);
+ sap_connect_rsp(u8500.sap_data, SAP_STATUS_OK);
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);
+ SAP_STATUS_OK_ONGOING_CALL);
u8500.state = STE_SIM_BUSY;
}
break;
default:
- sap_connect_rsp(u8500.sap_data,
- SAP_STATUS_CONNECTION_FAILED, 0);
+ sap_connect_rsp(u8500.sap_data, SAP_STATUS_CONNECTION_FAILED);
simd_close();
break;
}
sap_info("connect request");
if (simd_connect(sap_device) < 0) {
- sap_connect_rsp(sap_device, SAP_STATUS_CONNECTION_FAILED, 0);
+ sap_connect_rsp(sap_device, SAP_STATUS_CONNECTION_FAILED);
return;
}
if (send_request(u8500.io, STE_START_SAP_REQ, NULL) < 0) {
- sap_connect_rsp(sap_device, SAP_STATUS_CONNECTION_FAILED,
- SAP_BUF_SIZE);
+ sap_connect_rsp(sap_device, SAP_STATUS_CONNECTION_FAILED);
simd_close();
}
}
diff --git a/sap/sap.h b/sap/sap.h
index 30301bd..a4d084e 100644
--- a/sap/sap.h
+++ b/sap/sap.h
struct sap_parameter *param);
/*SAP responses to SAP requests. Implemented by server.c */
-int sap_connect_rsp(void *sap_device, uint8_t status, uint16_t maxmsgsize);
+int sap_connect_rsp(void *sap_device, uint8_t status);
int sap_disconnect_rsp(void *sap_device);
int sap_transfer_apdu_rsp(void *sap_device, uint8_t result,
uint8_t *sap_apdu_resp, uint16_t length);
diff --git a/sap/server.c b/sap/server.c
index b37a8e2..ec97b39 100644
--- a/sap/server.c
+++ b/sap/server.c
conn->processing_req = SAP_CONNECT_REQ;
sap_connect_req(conn, maxmsgsize);
} else {
- sap_connect_rsp(conn, SAP_STATUS_MAX_MSG_SIZE_NOT_SUPPORTED,
- SAP_BUF_SIZE);
+ sap_connect_rsp(conn, SAP_STATUS_MAX_MSG_SIZE_NOT_SUPPORTED);
}
return;
conn->state = SAP_STATE_CONNECTED;
}
-int sap_connect_rsp(void *sap_device, uint8_t status, uint16_t maxmsgsize)
+int sap_connect_rsp(void *sap_device, uint8_t status)
{
struct sap_connection *conn = sap_device;
char buf[SAP_BUF_SIZE];
struct sap_message *msg = (struct sap_message *) buf;
struct sap_parameter *param = (struct sap_parameter *) msg->param;
size_t size = sizeof(struct sap_message);
+ uint16_t *maxmsgsize;
if (!conn)
return -EINVAL;
*param->val = status;
size += PARAMETER_SIZE(SAP_PARAM_ID_CONN_STATUS_LEN);
- /* Add MaxMsgSize */
- if (maxmsgsize) {
- uint16_t *len;
+ switch (status) {
+ case SAP_STATUS_OK:
+ sap_set_connected(conn);
+ break;
+ case SAP_STATUS_OK_ONGOING_CALL:
+ DBG("ongoing call. Wait for reset indication!");
+ conn->state = SAP_STATE_CONNECT_MODEM_BUSY;
+ break;
+ case SAP_STATUS_MAX_MSG_SIZE_NOT_SUPPORTED: /* Add MaxMsgSize */
msg->nparam++;
param = (struct sap_parameter *) &buf[size];
param->id = SAP_PARAM_ID_MAX_MSG_SIZE;
param->len = htons(SAP_PARAM_ID_MAX_MSG_SIZE_LEN);
- len = (uint16_t *) ¶m->val;
- *len = htons(maxmsgsize);
+ maxmsgsize = (uint16_t *) ¶m->val;
+ *maxmsgsize = htons(SAP_BUF_SIZE);
size += PARAMETER_SIZE(SAP_PARAM_ID_MAX_MSG_SIZE_LEN);
- }
- if (status == SAP_STATUS_OK) {
- sap_set_connected(conn);
- } else if (status == SAP_STATUS_OK_ONGOING_CALL) {
- DBG("ongoing call. Wait for reset indication!");
- conn->state = SAP_STATE_CONNECT_MODEM_BUSY;
- } else {
+ /* fall */
+ default:
conn->state = SAP_STATE_DISCONNECTED;
/* Timer will shutdown channel if client doesn't send
* CONNECT_REQ or doesn't shutdown channel itself.*/
start_guard_timer(conn, SAP_TIMER_NO_ACTIVITY);
+ break;
}
conn->processing_req = SAP_NO_REQ;