Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 384fa7b6 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "SIM slot related interface changes"

parents 7fe9365e 4a4d8cc1
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ hidl_interface {
        "android.hidl.base@1.0",
    ],
    types: [
        "CardStatus",
        "CellIdentityCdma",
        "CellIdentityGsm",
        "CellIdentityLte",
@@ -35,6 +36,8 @@ hidl_interface {
        "NetworkScanResult",
        "RadioConst",
        "ScanIntervalRange",
        "SimSlotStatus",
        "SlotState",
    ],
    gen_java: true,
}
+42 −0
Original line number Diff line number Diff line
@@ -37,4 +37,46 @@ interface IRadio extends @1.1::IRadio {
     * Response function is IRadioResponse.startNetworkScanResponse()
     */
    oneway startNetworkScan_1_2(int32_t serial, NetworkScanRequest request);

    /**
     * Get SIM Slot status.
     *
     * Request provides the slot status of all active and inactive SIM slots and whether card is
     * present in the slots or not.
     *
     * @param serial Serial number of request.
     *
     * Response callback is IRadioResponse.getSimSlotsStatusResponse()
     */
    oneway getSimSlotsStatus(int32_t serial);

    /**
     * Set SIM Slot mapping.

     * Maps the logical slots to the physical slots. Logical slot is the slot that is seen by modem.
     * Physical slot is the actual physical slot. Request maps the physical slot to logical slot.
     * Logical slots that are already mapped to the requested physical slot are not impacted.
     *
     * Example no. of logical slots 1 and physical slots 2:
     * The only logical slot (index 0) can be mapped to first physical slot (value 0) or second
     * physical slot(value 1), while the other physical slot remains unmapped and inactive.
     * slotMap[0] = 1 or slotMap[0] = 0
     *
     * Example no. of logical slots 2 and physical slots 2:
     * First logical slot (index 0) can be mapped to physical slot 1 or 2 and other logical slot
     * can be mapped to other physical slot. Each logical slot must be mapped to a physical slot.
     * slotMap[0] = 0 and slotMap[1] = 1 or slotMap[0] = 1 and slotMap[1] = 0
     *
     * @param serial Serial number of request
     * @param slotMap Logical to physical slot mapping, size == no. of radio instances. Index is
     *        mapping to logical slot and value to physical slot, need to provide all the slots
     *        mapping when sending request in case of multi slot device.
     *        EX: uint32_t slotMap[logical slot] = physical slot
     *        index 0 is the first logical_slot number of logical slots is equal to number of Radio
     *        instances and number of physical slots is equal to size of slotStatus in
     *        getSimSlotsStatusResponse
     *
     * Response callback is IRadioResponse.setSimSlotsMappingResponse()
     */
    oneway setSimSlotsMapping(int32_t serial, vec<uint32_t> slotMap);
};
+10 −1
Original line number Diff line number Diff line
@@ -28,4 +28,13 @@ interface IRadioIndication extends @1.1::IRadioIndication {
     * Incremental network scan results
     */
    oneway networkScanResult_1_2(RadioIndicationType type, NetworkScanResult result);

    /**
     * Indicates SIM slot status change.
     *
     * @param type Type of radio indication
     * @param slotStatus new slot status info with size equals to the number of physical slots on
     *        the device
     */
    oneway simSlotsStatusChanged(RadioIndicationType type, vec<SimSlotStatus> slotStatus);
};
+38 −0
Original line number Diff line number Diff line
@@ -41,4 +41,42 @@ interface IRadioResponse extends @1.1::IRadioResponse {
     *   RadioError:CANCELLED
     */
    oneway getCellInfoListResponse_1_2(RadioResponseInfo info, vec<CellInfo> cellInfo);

    /**
     * @param info Response info struct containing response type, serial no. and error
     * @param cardStatus ICC card status as defined by CardStatus in types.hal
     *
     * Valid errors returned:
     *   RadioError:NONE
     */
    oneway getIccCardStatusResponse_1_2(RadioResponseInfo info, CardStatus cardStatus);

    /**
     * @param info Response info struct containing response type, serial no. and error
     * @param slotStatus Sim slot struct containing all the physical SIM slots info with size
      *       equals to the number of physical slots on the device
     *
     * Valid errors returned:
     *   RadioError:NONE
     *   RadioError:RADIO_NOT_AVAILABLE
     *   RadioError:REQUEST_NOT_SUPPORTED
     *   RadioError:NO_MEMORY
     *   RadioError:INTERNAL_ERR
     *   RadioError:MODEM_ERR
     *   RadioError:INVALID_ARGUMENTS
     */
    oneway getSimSlotsStatusResponse(RadioResponseInfo info, vec<SimSlotStatus> slotStatus);

    /**
     * @param info Response info struct containing response type, serial no. and error
     *
     * Valid errors returned:
     *   RadioError:NONE
     *   RadioError:RADIO_NOT_AVAILABLE
     *   RadioError:REQUEST_NOT_SUPPORTED
     *   RadioError:NO_MEMORY
     *   RadioError:INTERNAL_ERR
     *   RadioError:MODEM_ERR
     */
    oneway setSimSlotsMappingResponse(RadioResponseInfo info);
};
+70 −8
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package android.hardware.radio@1.2;

import @1.0::CdmaSignalStrength;
import @1.0::CardState;
import @1.0::CardStatus;
import @1.0::CellIdentityCdma;
import @1.0::CellIdentityGsm;
import @1.0::CellIdentityLte;
@@ -187,37 +189,97 @@ struct CellInfo {
     * Cell type for selecting from union CellInfo.
     */
    CellInfoType cellInfoType;
    /*
    /**
     * True if this cell is registered false if not registered.
     */
    bool registered;
    /*
    /**
     * Type of time stamp represented by timeStamp.
     */
    TimeStampType timeStampType;
    /*
    /**
     * Time in nanos as returned by ril_nano_time.
     */
    uint64_t timeStamp;
    /*
    /**
     * Only one of the below vectors must be of size 1 based on the CellInfoType and others must be
     * of size 0.
     */
    vec<CellInfoGsm> gsm;
    /*
    /**
     * Valid only if type = cdma and size = 1 else must be empty.
     */
    vec<CellInfoCdma> cdma;
    /*
    /**
     * Valid only if type = lte and size = 1 else must be empty.
     */
    vec<CellInfoLte> lte;
    /*
    /**
     * Valid only if type = wcdma and size = 1 else must be empty.
     */
    vec<CellInfoWcdma> wcdma;
    /*
    /**
     * Valid only if type = tdscdma and size = 1 else must be empty.
     */
    vec<CellInfoTdscdma> tdscdma;
};

enum SlotState : int32_t {
    /**
     * Physical slot is inactive
     */
    INACTIVE  = 0x00,
    /**
     * Physical slot is active
     */
    ACTIVE    = 0x01,
};

struct CardStatus {
    @1.0::CardStatus base;
    uint32_t physicalSlotId;
    /**
     * An Answer To Reset (ATR) is a message output by a Smart Card conforming to ISO/IEC 7816
     * standards, following electrical reset of the card's chip. The ATR conveys information about
     * the communication parameters proposed by the card, and the card's nature and state.
     *
     * This data is applicable only when cardState is CardState:PRESENT.
     */
    string atr;
    /**
     * Integrated Circuit Card IDentifier (ICCID) is Unique Identifier of the SIM CARD. File is
     * located in the SIM card at EFiccid (0x2FE2) as per ETSI 102.221. The ICCID is defined by
     * the ITU-T recommendation E.118 ISO/IEC 7816.
     *
     * This data is applicable only when cardState is CardState:PRESENT.
     */
    string iccid;
};

struct SimSlotStatus {
    /**
     * Card state in the physical slot
     */
    CardState cardState;
    /**
     * Slot state Active/Inactive
     */
    SlotState slotState;
    /**
     * An Answer To Reset (ATR) is a message output by a Smart Card conforming to ISO/IEC 7816
     * standards, following electrical reset of the card's chip. The ATR conveys information about
     * the communication parameters proposed by the card, and the card's nature and state.
     *
     * This data is applicable only when cardState is CardState:PRESENT.
     */
    string atr;
    uint32_t logicalSlotId;
    /**
     * Integrated Circuit Card IDentifier (ICCID) is Unique Identifier of the SIM CARD. File is
     * located in the SIM card at EFiccid (0x2FE2) as per ETSI 102.221. The ICCID is defined by
     * the ITU-T recommendation E.118 ISO/IEC 7816.
     *
     * This data is applicable only when cardState is CardState:PRESENT.
     */
    string iccid;
};