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;
}
