
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;
