package vendor.samsung.hardware.radio@2.0;

import android.hardware.radio@1.0::Call;
import android.hardware.radio@1.0::AppStatus;
import android.hardware.radio@1.0::Dial;
import android.hardware.radio@1.0::OperatorInfo;

struct SehAdnRecord {
    vec<uint8_t> name;
    int32_t nameDcs;
    int32_t nameLength;
    string number;
    vec<uint8_t> gsm8bitEmail;
    int32_t gsm8bitEmailLength;
    string anr;
    string anrA;
    string anrB;
    string anrC;
    vec<uint8_t> sne;
    int32_t sneLength;
    int32_t sneDcs;
};

struct SehAllowDataParam {
    int32_t defaultDataPhoneId;
};

struct SehApnProfile {
    string apn;
    string proto;
    string roamingProto;
    string user;
    string pw;
    string auth;
};

struct SehAppStatus {
    AppStatus base;
    int32_t pin1NumRetries;
    int32_t puk1NumRetries;
    int32_t pin2NumRetries;
    int32_t puk2NumRetries;
    int32_t persoUnblockRetries;
};

enum SehBearerStatus : int32_t {
    NR_BEARER_STATUS_ALLOCATED = 1,
    NR_BEARER_STATUS_MMW_ALLOCATED = 2,
    NR_BEARER_STATUS_NOT_ALLOCATED = 0,
};

enum SehCallType : int32_t {
    VOICE = 0,
    VS_RX = 2,
    VS_TX = 1,
    VT = 3,
};

struct SehCallDetails {
    int32_t callType;
    vec<string> extras;
};

struct SehCall {
    Call base;
    int32_t audioQuality;
    vec<SehCallDetails> callDetails;
};

struct SehCardStatus {
    int32_t cardState;
    int32_t universalPinState;
    int32_t gsmUmtsSubscriptionAppIndex;
    int32_t cdmaSubscriptionAppIndex;
    int32_t imsSubscriptionAppIndex;
    vec<SehAppStatus> applications;
    int32_t physicalSlotId;
    string atr;
    string iccid;
};

struct SehCbConfigArgs {
    int32_t enabled;
    int32_t selectedId;
    int32_t msgIdMaxCount;
    int32_t msgIdCount;
    string msgIDs;
};

struct SehCommandExcute {
    string mainCmd;
    string subCmd;
};

struct SehConfigModemCapability {
    int32_t supportCltcp;
};

struct SehCsgInfo {
    int32_t csgId;
    string name;
    string plmn;
    int32_t rat;
    int32_t category;
    int32_t signalStrength;
};

struct SehDial {
    Dial base;
    vec<SehCallDetails> callDetails;
};

struct SehEncodedUssd {
    vec<uint8_t> encodedUssd;
    int32_t ussdLength;
    int32_t dcsCode;
};

struct SehExtendedRegStateResult {
    bool isValid;
    int32_t snapshotStatus;
    int32_t unprocessedDataRegState;
    int32_t unprocessedDataRat;
    int32_t mobileOptionalRat;
    int32_t imsEmergencyCallBarring;
    int32_t unprocessedVoiceRegState;
    bool isPsOnlyReg;
};

struct SehImsCall {
    int32_t state;
    int32_t type;
    int32_t isMt;
    int32_t isMpty;
    string number;
};

struct SehOperatorInfo {
    OperatorInfo base;
    string rat;
    string lac;
};

struct SehPacketUsage {
    int64_t rxBytes;
    int64_t txBytes;
};

struct SehPhonebookInfo {
    int32_t totalCount;
    int32_t usedCount;
    int32_t firstIndex;
    int32_t maxTextLength;
    int32_t maxNumberLength;
};

struct SehPreferredNetworkInfo {
    int32_t index;
    string oper;
    string plmn;
    int32_t gsmAct;
    int32_t gsmCompactAct;
    int32_t utranAct;
    int32_t mode;
};

struct SehRrcStateInfo {
    int32_t rat;
    int32_t state;
};

struct SehSendSmsResult {
    int32_t messageRef;
    string ackPDU;
    int32_t errorCode;
    int32_t errorClass;
};

struct SehSignalBar {
    int32_t cdmaLevel;
    int32_t evdoLevel;
    int32_t gsmLevel;
    int32_t wcdmaLevel;
    int32_t tdscdmaLevel;
    int32_t lteLevel;
    int32_t nrLevel;
};

struct SehSimLockInfo {
    int32_t numberOfLockTypes;
    int32_t lockType;
    int32_t lockKey;
    int32_t numberOfRetry;
};

struct SehSimMsgArgs {
    int32_t index;
    int32_t status;
    string pdu;
    string smsc;
};

struct SehSimPhonebookResponse {
    vec<int32_t> lengthAlphas;
    vec<int32_t> dataTypeAlphas;
    vec<string> alphaTags;
    vec<int32_t> lengthNumbers;
    vec<int32_t> dataTypeNumbers;
    vec<string> numbers;
    int32_t recordIndex;
    int32_t nextIndex;
};

struct SehSsReleaseComplete {
    int32_t size;
    int32_t dataLen;
    int32_t params;
    int32_t status;
    string data;
};

struct SehStoredMsgCount {
    int32_t usedCount;
    int32_t totalCount;
};
