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

Commit 2a4fba8b authored by Sandeep Gutta's avatar Sandeep Gutta Committed by android-build-merger
Browse files

Merge "SIM slot related interface changes" am: 384fa7b6 am: 8a52ba05

am: 14d0000c

Change-Id: Idcb6b457289f4afc7959849cd8ffd882d4022745
parents bf60575f 14d0000c
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;
};