From 8c3011e5c7e6a0f5e03cc19dd07f22c08d6638d7 Mon Sep 17 00:00:00 2001 From: Cassie Date: Thu, 26 Oct 2017 15:51:48 -0700 Subject: [PATCH] Added CellIdentity struct in types.hal This change was made because the new scan API needs to include the human readable operator name other than PLMN in the scan results. In order to let teh operator name used by other structures and APIS, we added the operator name alphaLong and alphaShort, which were actually included in the OperatorInfo, into the CellIdentity. Bug: 63984327 Test: Basic telephony sanity Change-Id: I498b7f190b739c92975fe797e1c74e96d90ee823 --- radio/1.2/Android.bp | 31 +++++++++ radio/1.2/IRadioIndication.hal | 31 +++++++++ radio/1.2/IRadioResponse.hal | 44 ++++++++++++ radio/1.2/types.hal | 124 +++++++++++++++++++++++++++++++++ 4 files changed, 230 insertions(+) create mode 100644 radio/1.2/IRadioIndication.hal create mode 100644 radio/1.2/IRadioResponse.hal diff --git a/radio/1.2/Android.bp b/radio/1.2/Android.bp index d6535f5cae..dc787496d4 100644 --- a/radio/1.2/Android.bp +++ b/radio/1.2/Android.bp @@ -5,6 +5,8 @@ filegroup { srcs: [ "types.hal", "IRadio.hal", + "IRadioIndication.hal", + "IRadioResponse.hal", "ISap.hal", ], } @@ -19,6 +21,8 @@ genrule { out: [ "android/hardware/radio/1.2/types.cpp", "android/hardware/radio/1.2/RadioAll.cpp", + "android/hardware/radio/1.2/RadioIndicationAll.cpp", + "android/hardware/radio/1.2/RadioResponseAll.cpp", "android/hardware/radio/1.2/SapAll.cpp", ], } @@ -38,6 +42,16 @@ genrule { "android/hardware/radio/1.2/BnHwRadio.h", "android/hardware/radio/1.2/BpHwRadio.h", "android/hardware/radio/1.2/BsRadio.h", + "android/hardware/radio/1.2/IRadioIndication.h", + "android/hardware/radio/1.2/IHwRadioIndication.h", + "android/hardware/radio/1.2/BnHwRadioIndication.h", + "android/hardware/radio/1.2/BpHwRadioIndication.h", + "android/hardware/radio/1.2/BsRadioIndication.h", + "android/hardware/radio/1.2/IRadioResponse.h", + "android/hardware/radio/1.2/IHwRadioResponse.h", + "android/hardware/radio/1.2/BnHwRadioResponse.h", + "android/hardware/radio/1.2/BpHwRadioResponse.h", + "android/hardware/radio/1.2/BsRadioResponse.h", "android/hardware/radio/1.2/ISap.h", "android/hardware/radio/1.2/IHwSap.h", "android/hardware/radio/1.2/BnHwSap.h", @@ -84,12 +98,25 @@ genrule { ":android.hardware.radio@1.2_hal", ], out: [ + "android/hardware/radio/V1_2/CellIdentityCdma.java", + "android/hardware/radio/V1_2/CellIdentityGsm.java", + "android/hardware/radio/V1_2/CellIdentityLte.java", + "android/hardware/radio/V1_2/CellIdentityOperatorNames.java", + "android/hardware/radio/V1_2/CellIdentityWcdma.java", + "android/hardware/radio/V1_2/CellInfo.java", + "android/hardware/radio/V1_2/CellInfoCdma.java", + "android/hardware/radio/V1_2/CellInfoGsm.java", + "android/hardware/radio/V1_2/CellInfoLte.java", + "android/hardware/radio/V1_2/CellInfoWcdma.java", "android/hardware/radio/V1_2/IncrementalResultsPeriodicityRange.java", "android/hardware/radio/V1_2/MaxSearchTimeRange.java", "android/hardware/radio/V1_2/NetworkScanRequest.java", + "android/hardware/radio/V1_2/NetworkScanResult.java", "android/hardware/radio/V1_2/RadioConst.java", "android/hardware/radio/V1_2/ScanIntervalRange.java", "android/hardware/radio/V1_2/IRadio.java", + "android/hardware/radio/V1_2/IRadioIndication.java", + "android/hardware/radio/V1_2/IRadioResponse.java", "android/hardware/radio/V1_2/ISap.java", ], } @@ -119,6 +146,8 @@ genrule { ], out: [ "android/hardware/radio/1.2/ARadio.cpp", + "android/hardware/radio/1.2/ARadioIndication.cpp", + "android/hardware/radio/1.2/ARadioResponse.cpp", "android/hardware/radio/1.2/ASap.cpp", ], } @@ -132,6 +161,8 @@ genrule { ], out: [ "android/hardware/radio/1.2/ARadio.h", + "android/hardware/radio/1.2/ARadioIndication.h", + "android/hardware/radio/1.2/ARadioResponse.h", "android/hardware/radio/1.2/ASap.h", ], } diff --git a/radio/1.2/IRadioIndication.hal b/radio/1.2/IRadioIndication.hal new file mode 100644 index 0000000000..5d3efcf29d --- /dev/null +++ b/radio/1.2/IRadioIndication.hal @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.hardware.radio@1.2; + +import @1.0::RadioIndicationType; +import @1.1::IRadioIndication; + +/** + * Interface declaring unsolicited radio indications. + */ +interface IRadioIndication extends @1.1::IRadioIndication { + + /** + * Incremental network scan results + */ + oneway networkScanResult_1_2(RadioIndicationType type, NetworkScanResult result); +}; \ No newline at end of file diff --git a/radio/1.2/IRadioResponse.hal b/radio/1.2/IRadioResponse.hal new file mode 100644 index 0000000000..5bfbbaef56 --- /dev/null +++ b/radio/1.2/IRadioResponse.hal @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.hardware.radio@1.2; + +import @1.0::RadioResponseInfo; +import @1.1::IRadioResponse; + +/** + * Interface declaring response functions to solicited radio requests. + */ +interface IRadioResponse extends @1.1::IRadioResponse { + + /** + * @param info Response info struct containing response type, serial no. and error + * @param cellInfo List of current cell information known to radio + * + * Valid errors returned: + * RadioError:NONE + * RadioError:RADIO_NOT_AVAILABLE + * RadioError:NO_MEMORY + * RadioError:INTERNAL_ERR + * RadioError:SYSTEM_ERR + * RadioError:MODEM_ERR + * RadioError:NO_NETWORK_FOUND + * RadioError:REQUEST_NOT_SUPPORTED + * RadioError:NO_RESOURCES + * RadioError:CANCELLED + */ + oneway getCellInfoListResponse_1_2(RadioResponseInfo info, vec cellInfo); +}; diff --git a/radio/1.2/types.hal b/radio/1.2/types.hal index 381eb858ba..6b57ae3f46 100644 --- a/radio/1.2/types.hal +++ b/radio/1.2/types.hal @@ -16,8 +16,22 @@ package android.hardware.radio@1.2; +import @1.0::CdmaSignalStrength; +import @1.0::CellIdentityCdma; +import @1.0::CellIdentityGsm; +import @1.0::CellIdentityLte; +import @1.0::CellIdentityWcdma; +import @1.0::CellInfoTdscdma; +import @1.0::CellInfoType; +import @1.0::EvdoSignalStrength; +import @1.0::GsmSignalStrength; +import @1.0::LteSignalStrength; import @1.0::RadioConst; +import @1.0::TimeStampType; +import @1.0::WcdmaSignalStrength; import @1.1::RadioAccessSpecifier; +import @1.0::RadioError; +import @1.1::ScanStatus; import @1.1::ScanType; enum RadioConst : @1.0::RadioConst { @@ -97,3 +111,113 @@ struct NetworkScanRequest { */ vec mccMncs; }; + +struct NetworkScanResult { + /** + * The status of the scan. + */ + ScanStatus status; + + /** + * The error code of the incremental result. + */ + RadioError error; + + /** + * List of network information as CellInfo. + */ + vec networkInfos; +}; + +struct CellIdentityOperatorNames { + /** + * Long alpha Operator Name String or Enhanced Operator Name String. + */ + string alphaLong; + + /** + * Short alpha Operator Name String or Enhanced Operator Name String + */ + string alphaShort; +}; + +struct CellIdentityCdma { + @1.0::CellIdentityCdma base; + CellIdentityOperatorNames operatorNames; +}; + +struct CellIdentityGsm { + @1.0::CellIdentityGsm base; + CellIdentityOperatorNames operatorNames; +}; + +struct CellIdentityLte { + @1.0::CellIdentityLte base; + CellIdentityOperatorNames operatorNames; +}; + +struct CellIdentityWcdma { + @1.0::CellIdentityWcdma base; + CellIdentityOperatorNames operatorNames; +}; + +struct CellInfoGsm { + CellIdentityGsm cellIdentityGsm; + GsmSignalStrength signalStrengthGsm; +}; + +struct CellInfoWcdma { + CellIdentityWcdma cellIdentityWcdma; + WcdmaSignalStrength signalStrengthWcdma; +}; + +struct CellInfoCdma { + CellIdentityCdma cellIdentityCdma; + CdmaSignalStrength signalStrengthCdma; + EvdoSignalStrength signalStrengthEvdo; +}; + +struct CellInfoLte { + CellIdentityLte cellIdentityLte; + LteSignalStrength signalStrengthLte; +}; + +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 gsm; + /* + * Valid only if type = cdma and size = 1 else must be empty. + */ + vec cdma; + /* + * Valid only if type = lte and size = 1 else must be empty. + */ + vec lte; + /* + * Valid only if type = wcdma and size = 1 else must be empty. + */ + vec wcdma; + /* + * Valid only if type = tdscdma and size = 1 else must be empty. + */ + vec tdscdma; +}; \ No newline at end of file