syntax = "proto2"; option java_package = "org.android.btsap"; option java_outer_classname = "SapApi"; // // SAP Interface to RIL // // The protocol for the binary wire format to RIL shall consist of // the serialized format of MsgHeader. // MsgHeader payload field will contain the serialized format of // the actual message being sent, as described by the type and id // fields. // e.g. If type = REQUEST and id == RIL_SIM_SAP_CONNECT, payload // will contain the serialized wire format of a // RIL_SIM_SAP_CONNECT_REQ message. // // Message Header // Each SAP message stream will always be prepended with a MsgHeader message MsgHeader { required fixed32 token = 1; // generated dynamically required MsgType type = 2; required MsgId id = 3; required Error error = 4; required bytes payload = 5; } enum MsgType { UNKNOWN = 0; REQUEST = 1; RESPONSE = 2; UNSOL_RESPONSE = 3; } enum MsgId { UNKNOWN_REQ = 0; // // For MsgType: REQUEST ,MsgId: RIL_SIM_SAP_CONNECT, Error: RIL_E_UNUSED, // Message: message RIL_SIM_SAP_CONNECT_REQ // For MsgType: RESPONSE, MsgId: RIL_SIM_SAP_CONNECT, Error:Valid errors, // Message: message RIL_SIM_SAP_CONNECT_RSP // RIL_SIM_SAP_CONNECT = 1; // // For MsgType: REQUEST ,MsgId: RIL_SIM_SAP_DISCONNECT, Error: RIL_E_UNUSED, // Message: message RIL_SIM_SAP_DISCONNECT_REQ // For MsgType: RESPONSE, MsgId: RIL_SIM_SAP_DISCONNECT, Error:Valid errors, // Message: message RIL_SIM_SAP_DISCONNECT_RSP // For MsgType: UNSOL_RESPONSE, MsgId: RIL_SIM_SAP_DISCONNECT, Error: RIL_E_UNUSED, // Message: message RIL_SIM_SAP_DISCONNECT_IND // RIL_SIM_SAP_DISCONNECT = 2; // // For MsgType: REQUEST ,MsgId: RIL_SIM_SAP_APDU, Error: RIL_E_UNUSED, // Message: message RIL_SIM_SAP_APDU_REQ // For MsgType: RESPONSE, MsgId: RIL_SIM_SAP_APDU, Error:Valid errors, // Message: message RIL_SIM_SAP_APDU_RSP // RIL_SIM_SAP_APDU = 3; // // For MsgType: REQUEST ,MsgId: RIL_SIM_SAP_TRANSFER_ATR, Error: RIL_E_UNUSED, // Message: message RIL_SIM_SAP_TRANSFER_ATR_REQ // For MsgType: RESPONSE, MsgId: RIL_SIM_SAP_TRANSFER_ATR, Error:Valid errors, // Message: message RIL_SIM_SAP_TRANSFER_ATR_RSP // RIL_SIM_SAP_TRANSFER_ATR = 4; // // For MsgType: REQUEST ,MsgId: RIL_SIM_SAP_POWER, Error: RIL_E_UNUSED, // Message: message RIL_SIM_SAP_POWER_REQ // For MsgType: RESPONSE, MsgId: RIL_SIM_SAP_POWER, Error:Valid errors, // Message: message RIL_SIM_SAP_POWER_RSP // RIL_SIM_SAP_POWER = 5; // // For MsgType: REQUEST ,MsgId: RIL_SIM_SAP_RESET_SIM, Error: RIL_E_UNUSED, // Message: message RIL_SIM_SAP_RESET_SIM_REQ // For MsgType: RESPONSE, MsgId: RIL_SIM_SAP_RESET_SIM, Error:Valid errors, // Message: message RIL_SIM_SAP_RESET_SIM_RSP // RIL_SIM_SAP_RESET_SIM = 6; // // For MsgType: UNSOL_RESPONSE, MsgId: RIL_SIM_SAP_STATUS, Error: RIL_E_UNUSED, // Message: message RIL_SIM_SAP_STATUS_IND // RIL_SIM_SAP_STATUS = 7; // // For MsgType: REQUEST ,MsgId: RIL_SIM_SAP_TRANSFER_CARD_READER_STATUS, Error: RIL_E_UNUSED, // Message: message RIL_SIM_SAP_TRANSFER_CARD_READER_STATUS_REQ // For MsgType: RESPONSE, MsgId: RIL_SIM_SAP_TRANSFER_CARD_READER_STATUS, Error:Valid errors, // Message: message RIL_SIM_SAP_TRANSFER_CARD_READER_STATUS_RSP // RIL_SIM_SAP_TRANSFER_CARD_READER_STATUS = 8; // // For MsgType: UNSOL_RESPONSE, MsgId: RIL_SIM_SAP_ERROR_RESP, Error: RIL_E_UNUSED, // Message: message RIL_SIM_SAP_ERROR_RSP // RIL_SIM_SAP_ERROR_RESP = 9; // // For MsgType: REQUEST ,MsgId: RIL_SIM_SAP_SET_TRANSFER_PROTOCOL, Error: RIL_E_UNUSED, // Message: message RIL_SIM_SAP_SET_TRANSFER_PROTOCOL_REQ // For MsgType: RESPONSE, MsgId: RIL_SIM_SAP_SET_TRANSFER_PROTOCOL, Error:Valid errors, // Message: message RIL_SIM_SAP_SET_TRANSFER_PROTOCOL_RSP // RIL_SIM_SAP_SET_TRANSFER_PROTOCOL = 10; } enum Error { RIL_E_SUCCESS = 0; RIL_E_RADIO_NOT_AVAILABLE = 1; RIL_E_GENERIC_FAILURE = 2; RIL_E_REQUEST_NOT_SUPPORTED = 3; RIL_E_CANCELLED = 4; RIL_E_INVALID_PARAMETER = 5; RIL_E_UNUSED = 6; } // SAP 1.1 spec 5.1.1 message RIL_SIM_SAP_CONNECT_REQ { required int32 max_message_size = 1; } // SAP 1.1 spec 5.1.2 message RIL_SIM_SAP_CONNECT_RSP { enum Response { RIL_E_SUCCESS = 0; RIL_E_SAP_CONNECT_FAILURE = 1; RIL_E_SAP_MSG_SIZE_TOO_LARGE = 2; RIL_E_SAP_MSG_SIZE_TOO_SMALL = 3; RIL_E_SAP_CONNECT_OK_CALL_ONGOING = 4; } required Response response = 1; // must be present for RIL_E_SAP_MSG_SIZE_TOO_LARGE and contain the // the suitable message size optional int32 max_message_size = 2; } // SAP 1.1 spec 5.1.3 message RIL_SIM_SAP_DISCONNECT_REQ { //no params } // SAP 1.1 spec 5.1.4 message RIL_SIM_SAP_DISCONNECT_RSP { //no params } // SAP 1.1 spec 5.1.5 message RIL_SIM_SAP_DISCONNECT_IND { enum DisconnectType { RIL_S_DISCONNECT_TYPE_GRACEFUL = 0; RIL_S_DISCONNECT_TYPE_IMMEDIATE = 1; } required DisconnectType disconnectType = 1; } // SAP 1.1 spec 5.1.6 message RIL_SIM_SAP_APDU_REQ { //handles both APDU and APDU7816 enum Type { RIL_TYPE_APDU = 0; RIL_TYPE_APDU7816 = 1; } required Type type = 1; required bytes command = 2; } // SAP 1.1 spec 5.1.7 message RIL_SIM_SAP_APDU_RSP { //handles both APDU and APDU7816 enum Type { RIL_TYPE_APDU = 0; RIL_TYPE_APDU7816 = 1; } required Type type = 1; enum Response { RIL_E_SUCCESS = 0; RIL_E_GENERIC_FAILURE = 1; RIL_E_SIM_NOT_READY = 2; RIL_E_SIM_ALREADY_POWERED_OFF = 3; RIL_E_SIM_ABSENT = 4; } required Response response = 2; optional bytes apduResponse = 3; } // SAP 1.1 spec 5.1.8 message RIL_SIM_SAP_TRANSFER_ATR_REQ { // no params } // SAP 1.1 spec 5.1.9 message RIL_SIM_SAP_TRANSFER_ATR_RSP { enum Response { RIL_E_SUCCESS = 0; RIL_E_GENERIC_FAILURE = 1; RIL_E_SIM_ALREADY_POWERED_OFF = 3; RIL_E_SIM_ALREADY_POWERED_ON = 18; RIL_E_SIM_ABSENT = 4; RIL_E_SIM_DATA_NOT_AVAILABLE = 6; } required Response response = 1; optional bytes atr = 2; //must be present on SUCCESS } // SAP 1.1 spec 5.1.10 +5.1.12 message RIL_SIM_SAP_POWER_REQ { required bool state = 1; //true = on, False = off } // SAP 1.1 spec 5.1.11 +5.1.13 message RIL_SIM_SAP_POWER_RSP { enum Response { RIL_E_SUCCESS = 0; RIL_E_GENERIC_FAILURE = 2; RIL_E_SIM_ABSENT = 11; RIL_E_SIM_ALREADY_POWERED_OFF = 17; RIL_E_SIM_ALREADY_POWERED_ON = 18; } required Response response = 1; } // SAP 1.1 spec 5.1.14 message RIL_SIM_SAP_RESET_SIM_REQ { // no params } // SAP 1.1 spec 5.1.15 message RIL_SIM_SAP_RESET_SIM_RSP { enum Response { RIL_E_SUCCESS = 0; RIL_E_GENERIC_FAILURE = 2; RIL_E_SIM_ABSENT = 11; RIL_E_SIM_NOT_READY = 16; RIL_E_SIM_ALREADY_POWERED_OFF = 17; } required Response response = 1; } // SAP 1.1 spec 5.1.16 message RIL_SIM_SAP_STATUS_IND { enum Status { RIL_SIM_STATUS_UNKNOWN_ERROR = 0; RIL_SIM_STATUS_CARD_RESET = 1; RIL_SIM_STATUS_CARD_NOT_ACCESSIBLE = 2; RIL_SIM_STATUS_CARD_REMOVED = 3; RIL_SIM_STATUS_CARD_INSERTED = 4; RIL_SIM_STATUS_RECOVERED = 5; } required Status statusChange = 1; } // SAP 1.1 spec 5.1.17 message RIL_SIM_SAP_TRANSFER_CARD_READER_STATUS_REQ { //no params } // SAP 1.1 spec 5.1.18 message RIL_SIM_SAP_TRANSFER_CARD_READER_STATUS_RSP { enum Response { RIL_E_SUCCESS = 0; RIL_E_GENERIC_FAILURE = 2; RIL_E_SIM_DATA_NOT_AVAILABLE = 6; } required Response response = 1; optional int32 CardReaderStatus = 2; } // SAP 1.1 spec 5.1.19 message RIL_SIM_SAP_ERROR_RSP { //no params } // SAP 1.1 spec 5.1.20 message RIL_SIM_SAP_SET_TRANSFER_PROTOCOL_REQ { enum Protocol { t0 = 0; t1 = 1; } required Protocol protocol = 1; } // SAP 1.1 spec 5.1.21 message RIL_SIM_SAP_SET_TRANSFER_PROTOCOL_RSP { enum Response { RIL_E_SUCCESS = 0; RIL_E_GENERIC_FAILURE = 2; RIL_E_SIM_ABSENT = 11; RIL_E_SIM_NOT_READY = 16; RIL_E_SIM_ALREADY_POWERED_OFF = 17; } required Response response = 1; }