
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 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 info(u8 : 10) = 0x11;
} = 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;
