Add the new RIL requests to start/stop network scan

The CL defines the RIL API including the methods and structs which will
be used start and stop the network scan.

Test: Telephony Sanity Test
Bug: 30954762

Change-Id: I18462bf4aa5e8a9497d5eb214d905e4e7c827a04
This commit is contained in:
yinxu
2017-04-21 15:04:15 -07:00
parent eaebef21f0
commit b187e9f95e
5 changed files with 535 additions and 4 deletions

View File

@@ -73,8 +73,178 @@ $(GEN): PRIVATE_CUSTOM_TOOL = \
$(GEN): $(LOCAL_PATH)/IRadioResponse.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
include $(BUILD_JAVA_LIBRARY)
#
# Build types.hal (NetworkScanRequest)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/NetworkScanRequest.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.NetworkScanRequest
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (RadioAccessSpecifier)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/RadioAccessSpecifier.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.RadioAccessSpecifier
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (NetworkScanResult)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/NetworkScanResult.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.NetworkScanResult
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (ScanType)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/ScanType.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.ScanType
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (ScanStatus)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/ScanStatus.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.ScanStatus
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (RadioAccessNetworks)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/RadioAccessNetworks.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.RadioAccessNetworks
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (GeranBands)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/GeranBands.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.GeranBands
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (UtranBands)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/UtranBands.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.UtranBands
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (EutranBands)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/EutranBands.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.EutranBands
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
include $(BUILD_JAVA_LIBRARY)
################################################################################
@@ -147,8 +317,177 @@ $(GEN): PRIVATE_CUSTOM_TOOL = \
$(GEN): $(LOCAL_PATH)/IRadioResponse.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (NetworkScanRequest)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/NetworkScanRequest.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.NetworkScanRequest
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (RadioAccessSpecifier)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/RadioAccessSpecifier.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.RadioAccessSpecifier
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (NetworkScanResult)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/NetworkScanResult.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.NetworkScanResult
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (ScanType)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/ScanType.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.ScanType
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (ScanStatus)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/ScanStatus.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.ScanStatus
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (RadioAccessNetworks)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/RadioAccessNetworks.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.RadioAccessNetworks
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (GeranBands)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/GeranBands.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.GeranBands
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (UtranBands)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/UtranBands.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.UtranBands
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
#
# Build types.hal (EutranBands)
#
GEN := $(intermediates)/android/hardware/radio/V1_1/EutranBands.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
$(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
-Ljava \
-randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport \
android.hardware.radio@1.1::types.EutranBands
$(GEN): $(LOCAL_PATH)/types.hal
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)
include $(BUILD_STATIC_JAVA_LIBRARY)
include $(call all-makefiles-under,$(LOCAL_PATH))

View File

@@ -81,4 +81,22 @@ interface IRadio extends @1.0::IRadio {
*/
oneway setSimCardPower_1_1(int32_t serial, CardPowerState powerUp);
/**
* Starts a network scan
*
* @param serial Serial number of request.
* @param request Defines the radio networks/bands/channels which need to be scanned.
*
* Response function is IRadioResponse.startNetworkScanResponse()
*/
oneway startNetworkScan(int32_t serial, NetworkScanRequest request);
/**
* Stops ongoing network scan
*
* @param serial Serial number of request.
*
* Response function is IRadioResponse.stopNetworkScanResponse()
*/
oneway stopNetworkScan(int32_t serial);
};

View File

@@ -31,4 +31,12 @@ interface IRadioIndication extends @1.0::IRadioIndication{
* @param type Type of radio indication
*/
oneway carrierInfoForImsiEncryption(RadioIndicationType info);
};
/**
* Incremental network scan results
*
* @param type Type of radio indication
* @param result Network scan result as NetworkScanResult defined in types.hal
*/
oneway networkScanResult(RadioIndicationType type, NetworkScanResult result);
};

View File

@@ -46,4 +46,29 @@ interface IRadioResponse extends @1.0::IRadioResponse {
*/
oneway setSimCardPowerResponse_1_1(RadioResponseInfo info);
/**
* @param info Response info struct containing response type, serial no. and error
*
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:OPERATION_NOT_ALLOWED
* RadioError:DEVICE_IN_USE
* RadioError:INTERNAL_ERR
* RadioError:NO_MEMORY
* RadioError:MODEM_ERR
* RadioError:INVALID_ARGUMENTS
* RadioError:REQUEST_NOT_SUPPORTED
*/
oneway startNetworkScanResponse(RadioResponseInfo info);
/**
* @param info Response info struct containing response type, serial no. and error
*
* Valid errors returned:
* RadioError:NONE
* RadioError:INTERNAL_ERR
* RadioError:MODEM_ERR
*/
oneway stopNetworkScanResponse(RadioResponseInfo info);
};

View File

@@ -16,8 +16,149 @@
package android.hardware.radio@1.1;
import @1.0::CellInfo;
import @1.0::RadioError;
enum CardPowerState : int32_t {
POWER_DOWN,
POWER_UP,
POWER_UP_PASS_THROUGH,
};
enum RadioAccessNetworks : int32_t {
GERAN = 1, // GSM EDGE Radio Access Network
UTRAN = 2, // Universal Terrestrial Radio Access Network
EUTRAN = 3, // Evolved Universal Terrestrial Radio Access Network
};
enum GeranBands : int32_t {
BAND_T380 = 1,
BAND_T410 = 2,
BAND_450 = 3,
BAND_480 = 4,
BAND_710 = 5,
BAND_750 = 6,
BAND_T810 = 7,
BAND_850 = 8,
BAND_P900 = 9,
BAND_E900 = 10,
BAND_R900 = 11,
BAND_DCS1800 = 12,
BAND_PCS1900 = 13,
BAND_ER900 = 14,
};
enum UtranBands : int32_t {
BAND_1 = 1,
BAND_2 = 2,
BAND_3 = 3,
BAND_4 = 4,
BAND_5 = 5,
BAND_6 = 6,
BAND_7 = 7,
BAND_8 = 8,
BAND_9 = 9,
BAND_10 = 10,
BAND_11 = 11,
BAND_12 = 12,
BAND_13 = 13,
BAND_14 = 14,
BAND_19 = 19,
BAND_20 = 20,
BAND_21 = 21,
BAND_22 = 22,
BAND_25 = 25,
BAND_26 = 26,
};
enum EutranBands : int32_t {
BAND_1 = 1,
BAND_2 = 2,
BAND_3 = 3,
BAND_4 = 4,
BAND_5 = 5,
BAND_6 = 6,
BAND_7 = 7,
BAND_8 = 8,
BAND_9 = 9,
BAND_10 = 10,
BAND_11 = 11,
BAND_12 = 12,
BAND_13 = 13,
BAND_14 = 14,
BAND_17 = 17,
BAND_18 = 18,
BAND_19 = 19,
BAND_20 = 20,
BAND_21 = 21,
BAND_22 = 22,
BAND_23 = 23,
BAND_24 = 24,
BAND_25 = 25,
BAND_26 = 26,
BAND_27 = 27,
BAND_28 = 28,
BAND_30 = 30,
BAND_31 = 31,
BAND_33 = 33,
BAND_34 = 34,
BAND_35 = 35,
BAND_36 = 36,
BAND_37 = 37,
BAND_38 = 38,
BAND_39 = 39,
BAND_40 = 40,
BAND_41 = 41,
BAND_42 = 42,
BAND_43 = 43,
BAND_44 = 44,
BAND_45 = 45,
BAND_46 = 46,
BAND_47 = 47,
BAND_48 = 48,
BAND_65 = 65,
BAND_66 = 66,
BAND_68 = 68,
BAND_70 = 70,
};
enum ScanType : int32_t {
ONE_SHOT = 0, // Performs the scan only once
PERIODIC = 1, // Performs the scan periodically until cancelled
};
enum ScanStatus : int32_t {
PARTIAL = 1, // The result contains a part of the scan results
COMPLETE = 2, // The result contains the last part of the scan results
};
struct RadioAccessSpecifier {
RadioAccessNetworks radioAccessNetwork; // The type of network to scan
vec<GeranBands> geranBands; // Valid only if radioAccessNetwork = GERAN
// otherwise must be empty
// Maximum length of the vector is 8
vec<UtranBands> utranBands; // Valid only if radioAccessNetwork = UTRAN
// otherwise must be empty
// Maximum length of the vector is 8
vec<EutranBands> eutranBands; // Valid only if radioAccessNetwork = EUTRAN
// otherwise must be empty
// Maximum length of the vector is 8
vec<int32_t> channels; // The radio channels to scan as defined in
// 3GPP TS 25.101 and 36.101
// Maximum length of the vector is 32
};
struct NetworkScanRequest {
ScanType type; // One shot scan or periodic
int32_t interval; // Time interval in seconds between periodic scans, only
// valid when type = PERIODIC
// Range: 5 to 600
vec<RadioAccessSpecifier> specifiers; // networks with bands/channels to scan
// Maximum length of the vector is 8
};
struct NetworkScanResult {
ScanStatus status; // The status of the scan
RadioError error; // The error code of the incremental result
vec<CellInfo> networkInfos; // List of network information as CellInfo
};