blob: a85e919391c7e8eeb0c779a8339d0066034073fb [file] [log] [blame]
package uim;
const kIccidMaxSize = 20;
struct qmi_result {
u16 result;
u16 error;
};
struct card_result_t {
u8 sw1;
u8 sw2;
};
request open_logical_channel_req {
required u8 slot = 0x01;
optional u8 aid(u8 : kBufferDataSize) = 0x10;
} = 0x42;
response open_logical_channel_resp {
required qmi_result result = 0x2;
optional u8 channel_id = 0x10;
optional card_result_t card_result = 0x11;
optional u8 select_response(u8 : kBufferDataSize) = 0x12;
} = 0x42;
request reset_req {
} = 0x00;
response reset_resp {
required qmi_result result = 0x2;
} = 0x00;
request send_apdu_req {
required u8 slot = 0x01;
required u8 apdu(u16 : kBufferDataSize) = 0x02;
optional u8 channel_id = 0x10;
optional u8 procedure_bytes = 0x11;
} = 0x3B;
response send_apdu_resp {
required qmi_result result = 0x2;
optional u8 apdu_response(u16 : kBufferDataSize) = 0x10;
} = 0x3B;
struct physical_slot_status {
enum32 physical_card_status {
kCardUnknown = 0,
kCardAbsent = 1,
kCardPresent = 2,
};
enum32 physical_slot_state {
kSlotInactive = 0,
kSlotActive = 1,
};
u8 logical_slot;
u8 iccid(u8 : kIccidMaxSize);
};
struct slot_eid_info {
u8 eid(u8 : 255);
};
struct physical_slot_info {
u32 card_protocol;
u8 num_app;
u8 atr(u8 : 255);
u8 is_euicc;
};
request get_slots_req {
} = 0x47;
response get_slots_resp {
required qmi_result result = 0x2;
optional physical_slot_status status(u8 : 10) = 0x10;
optional physical_slot_info slot_info(u8 : 10) = 0x11;
optional slot_eid_info eid_info(u8 : 10) = 0x12;
} = 0x47;
request switch_slot_req {
required u8 logical_slot = 0x01;
required u32 physical_slot = 0x02;
} = 0x46;
response switch_slot_resp {
required qmi_result result = 0x2;
} = 0x46;