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