diff options
author | Sarah Chin <sarahchin@google.com> | 2019-11-07 10:43:16 -0800 |
---|---|---|
committer | Sarah Chin <sarahchin@google.com> | 2019-11-25 16:23:41 -0800 |
commit | b071f8ae53f5bbbb1dc091fa527891a6adbeca44 (patch) | |
tree | f362954579663f2c3823025d5026e0c56c17e82c /radio | |
parent | dca3711d86cf3282174f59eced465537abc52a52 (diff) | |
download | platform_hardware_interfaces-b071f8ae53f5bbbb1dc091fa527891a6adbeca44.tar.gz platform_hardware_interfaces-b071f8ae53f5bbbb1dc091fa527891a6adbeca44.tar.bz2 platform_hardware_interfaces-b071f8ae53f5bbbb1dc091fa527891a6adbeca44.zip |
Set up IRadioConfig 1.3 skeleton
Create IRadioConfig, IRadioConfigIndication, IRadioConfigResponse
Create vts for 1.3
Create default implementation for 1.3
Test: run vts -m VtsHalRadioConfigV1_3Target
Bug: 144101226
Change-Id: Ibf92683ca48b4053e86de3fb655ac15ad1e0725d
Merged-In: Ibf92683ca48b4053e86de3fb655ac15ad1e0725d
Diffstat (limited to 'radio')
21 files changed, 1009 insertions, 0 deletions
diff --git a/radio/config/1.3/Android.bp b/radio/config/1.3/Android.bp new file mode 100644 index 0000000000..88de666618 --- /dev/null +++ b/radio/config/1.3/Android.bp @@ -0,0 +1,23 @@ +// This file is autogenerated by hidl-gen -Landroidbp. + +hidl_interface { + name: "android.hardware.radio.config@1.3", + root: "android.hardware", + vndk: { + enabled: true, + }, + srcs: [ + "types.hal", + "IRadioConfig.hal", + "IRadioConfigIndication.hal", + "IRadioConfigResponse.hal", + ], + interfaces: [ + "android.hardware.radio.config@1.0", + "android.hardware.radio.config@1.1", + "android.hardware.radio.config@1.2", + "android.hardware.radio@1.0", + "android.hidl.base@1.0", + ], + gen_java: true, +} diff --git a/radio/config/1.3/IRadioConfig.hal b/radio/config/1.3/IRadioConfig.hal new file mode 100644 index 0000000000..a0ce6e089d --- /dev/null +++ b/radio/config/1.3/IRadioConfig.hal @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2019 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.config@1.3; + +import @1.1::IRadioConfig; + +/** + * This interface is used by telephony and telecom to talk to cellular radio for the purpose of + * radio configuration, and it is not associated with any specific modem or slot. + * All the functions have minimum one parameter: + * serial: which corresponds to serial no. of request. Serial numbers must only be memorized for the + * duration of a method call. If clients provide colliding serials (including passing the same + * serial to different methods), multiple responses (one for each method call) must still be served. + */ +interface IRadioConfig extends @1.1::IRadioConfig { + +}; diff --git a/radio/config/1.3/IRadioConfigIndication.hal b/radio/config/1.3/IRadioConfigIndication.hal new file mode 100644 index 0000000000..9ef496c4ba --- /dev/null +++ b/radio/config/1.3/IRadioConfigIndication.hal @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2019 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.config@1.3; + +import @1.2::IRadioConfigIndication; + +/** + * Interface declaring unsolicited radio config indications. + */ +interface IRadioConfigIndication extends @1.2::IRadioConfigIndication { + +}; diff --git a/radio/config/1.3/IRadioConfigResponse.hal b/radio/config/1.3/IRadioConfigResponse.hal new file mode 100644 index 0000000000..9c4c971f9f --- /dev/null +++ b/radio/config/1.3/IRadioConfigResponse.hal @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2019 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.config@1.3; + +import @1.2::IRadioConfigResponse; + +/** + * Interface declaring response functions to solicited radio config requests. + */ +interface IRadioConfigResponse extends @1.2::IRadioConfigResponse { + +}; diff --git a/radio/config/1.3/default/Android.bp b/radio/config/1.3/default/Android.bp new file mode 100644 index 0000000000..163c5c5d63 --- /dev/null +++ b/radio/config/1.3/default/Android.bp @@ -0,0 +1,28 @@ +cc_binary { + name: "android.hardware.radio.config@1.3-service", + init_rc: ["android.hardware.radio.config@1.3-service.rc"], + relative_install_path: "hw", + vintf_fragments: ["radio-config-default.xml"], + vendor: true, + srcs: [ + "RadioConfig.cpp", + "RadioConfigIndication.cpp", + "RadioConfigResponse.cpp", + "service.cpp", + ], + shared_libs: [ + "libhidlbase", + "liblog", + "libutils", + "android.hardware.radio.config@1.0", + "android.hardware.radio.config@1.1", + "android.hardware.radio.config@1.2", + "android.hardware.radio.config@1.3", + "android.hardware.radio@1.0", + "android.hardware.radio@1.1", + "android.hardware.radio@1.2", + "android.hardware.radio@1.3", + "android.hardware.radio@1.4", + "android.hardware.radio@1.5", + ], +} diff --git a/radio/config/1.3/default/RadioConfig.cpp b/radio/config/1.3/default/RadioConfig.cpp new file mode 100644 index 0000000000..c28119c311 --- /dev/null +++ b/radio/config/1.3/default/RadioConfig.cpp @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.1 (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.1 + * + * 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. + */ + +#include "RadioConfig.h" + +namespace android { +namespace hardware { +namespace radio { +namespace config { +namespace V1_3 { +namespace implementation { + +using namespace ::android::hardware::radio::V1_0; +using namespace ::android::hardware::radio::config; + +// Methods from ::android::hardware::radio::config::V1_0::IRadioConfig follow. +Return<void> RadioConfig::setResponseFunctions( + const sp<V1_0::IRadioConfigResponse>& radioConfigResponse, + const sp<V1_0::IRadioConfigIndication>& radioConfigIndication) { + mRadioConfigResponse = radioConfigResponse; + mRadioConfigIndication = radioConfigIndication; + + mRadioConfigResponseV1_3 = + V1_3::IRadioConfigResponse::castFrom(mRadioConfigResponse).withDefault(nullptr); + mRadioConfigIndicationV1_3 = + V1_3::IRadioConfigIndication::castFrom(mRadioConfigIndication).withDefault(nullptr); + if (mRadioConfigResponseV1_3 == nullptr || mRadioConfigIndicationV1_3 == nullptr) { + mRadioConfigResponseV1_3 = nullptr; + mRadioConfigIndicationV1_3 = nullptr; + } + + mRadioConfigResponseV1_2 = + V1_2::IRadioConfigResponse::castFrom(mRadioConfigResponse).withDefault(nullptr); + mRadioConfigIndicationV1_2 = + V1_2::IRadioConfigIndication::castFrom(mRadioConfigIndication).withDefault(nullptr); + if (mRadioConfigResponseV1_2 == nullptr || mRadioConfigIndicationV1_2 == nullptr) { + mRadioConfigResponseV1_2 = nullptr; + mRadioConfigIndicationV1_2 = nullptr; + } + + mRadioConfigResponseV1_1 = + V1_1::IRadioConfigResponse::castFrom(mRadioConfigResponse).withDefault(nullptr); + mRadioConfigIndicationV1_1 = + V1_1::IRadioConfigIndication::castFrom(mRadioConfigIndication).withDefault(nullptr); + if (mRadioConfigResponseV1_1 == nullptr || mRadioConfigIndicationV1_1 == nullptr) { + mRadioConfigResponseV1_1 = nullptr; + mRadioConfigIndicationV1_1 = nullptr; + } + + return Void(); +} + +Return<void> RadioConfig::getSimSlotsStatus(int32_t /* serial */) { + hidl_vec<V1_0::SimSlotStatus> slotStatus; + RadioResponseInfo info; + mRadioConfigResponse->getSimSlotsStatusResponse(info, slotStatus); + return Void(); +} + +Return<void> RadioConfig::setSimSlotsMapping(int32_t /* serial */, + const hidl_vec<uint32_t>& /* slotMap */) { + RadioResponseInfo info; + mRadioConfigResponse->setSimSlotsMappingResponse(info); + return Void(); +} + +// Methods from ::android::hardware::radio::config::V1_1::IRadioConfig follow. +Return<void> RadioConfig::getPhoneCapability(int32_t /* serial */) { + V1_1::PhoneCapability phoneCapability; + RadioResponseInfo info; + mRadioConfigResponseV1_1->getPhoneCapabilityResponse(info, phoneCapability); + return Void(); +} + +Return<void> RadioConfig::setPreferredDataModem(int32_t /* serial */, uint8_t /* modemId */) { + RadioResponseInfo info; + mRadioConfigResponseV1_1->setPreferredDataModemResponse(info); + return Void(); +} + +Return<void> RadioConfig::setModemsConfig(int32_t /* serial */, + const V1_1::ModemsConfig& /* modemsConfig */) { + RadioResponseInfo info; + mRadioConfigResponseV1_1->setModemsConfigResponse(info); + return Void(); +} + +Return<void> RadioConfig::getModemsConfig(int32_t /* serial */) { + V1_1::ModemsConfig modemsConfig; + RadioResponseInfo info; + mRadioConfigResponseV1_1->getModemsConfigResponse(info, modemsConfig); + return Void(); +} + +} // namespace implementation +} // namespace V1_3 +} // namespace config +} // namespace radio +} // namespace hardware +} // namespace android diff --git a/radio/config/1.3/default/RadioConfig.h b/radio/config/1.3/default/RadioConfig.h new file mode 100644 index 0000000000..00585e6df2 --- /dev/null +++ b/radio/config/1.3/default/RadioConfig.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.1 (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.1 + * + * 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. + */ + +#ifndef ANDROID_HARDWARE_RADIO_CONFIG_V1_3_RADIOCONFIG_H +#define ANDROID_HARDWARE_RADIO_CONFIG_V1_3_RADIOCONFIG_H + +#include <android/hardware/radio/config/1.3/IRadioConfig.h> +#include <android/hardware/radio/config/1.3/IRadioConfigIndication.h> +#include <android/hardware/radio/config/1.3/IRadioConfigResponse.h> +#include <hidl/MQDescriptor.h> +#include <hidl/Status.h> + +namespace android { +namespace hardware { +namespace radio { +namespace config { +namespace V1_3 { +namespace implementation { + +using namespace ::android::hardware::radio::config; + +using ::android::sp; +using ::android::hardware::hidl_array; +using ::android::hardware::hidl_memory; +using ::android::hardware::hidl_string; +using ::android::hardware::hidl_vec; +using ::android::hardware::Return; +using ::android::hardware::Void; + +struct RadioConfig : public V1_3::IRadioConfig { + sp<V1_0::IRadioConfigResponse> mRadioConfigResponse; + sp<V1_0::IRadioConfigIndication> mRadioConfigIndication; + sp<V1_1::IRadioConfigResponse> mRadioConfigResponseV1_1; + sp<V1_1::IRadioConfigIndication> mRadioConfigIndicationV1_1; + sp<V1_2::IRadioConfigResponse> mRadioConfigResponseV1_2; + sp<V1_2::IRadioConfigIndication> mRadioConfigIndicationV1_2; + sp<V1_3::IRadioConfigResponse> mRadioConfigResponseV1_3; + sp<V1_3::IRadioConfigIndication> mRadioConfigIndicationV1_3; + + // Methods from ::android::hardware::radio::config::V1_0::IRadioConfig follow. + Return<void> setResponseFunctions( + const sp<V1_0::IRadioConfigResponse>& radioConfigResponse, + const sp<V1_0::IRadioConfigIndication>& radioConfigIndication); + Return<void> getSimSlotsStatus(int32_t serial); + Return<void> setSimSlotsMapping(int32_t serial, const hidl_vec<uint32_t>& slotMap); + + // Methods from ::android::hardware::radio::config::V1_1::IRadioConfig follow. + Return<void> getPhoneCapability(int32_t serial); + Return<void> setPreferredDataModem(int32_t serial, uint8_t modemId); + Return<void> setModemsConfig(int32_t serial, const V1_1::ModemsConfig& modemsConfig); + Return<void> getModemsConfig(int32_t serial); +}; + +} // namespace implementation +} // namespace V1_3 +} // namespace config +} // namespace radio +} // namespace hardware +} // namespace android + +#endif // ANDROID_HARDWARE_RADIO_CONFIG_V1_3_RADIOCONFIG_H diff --git a/radio/config/1.3/default/RadioConfigIndication.cpp b/radio/config/1.3/default/RadioConfigIndication.cpp new file mode 100644 index 0000000000..eb77a48ec1 --- /dev/null +++ b/radio/config/1.3/default/RadioConfigIndication.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.1 (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.1 + * + * 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. + */ + +#include "RadioConfigIndication.h" + +namespace android { +namespace hardware { +namespace radio { +namespace config { +namespace V1_3 { +namespace implementation { + +using namespace ::android::hardware::radio::V1_0; +using namespace ::android::hardware::radio::config::V1_0; +using namespace ::android::hardware::radio::config::V1_2; + +// Methods from ::android::hardware::radio::config::V1_0::IRadioConfigIndication follow. +Return<void> RadioConfigIndication::simSlotsStatusChanged( + RadioIndicationType /* type */, const hidl_vec<V1_0::SimSlotStatus>& /* slotStatus */) { + // TODO implement + return Void(); +} + +// Methods from ::android::hardware::radio::config::V1_2::IRadioConfigIndication follow. +Return<void> RadioConfigIndication::simSlotsStatusChanged_1_2( + RadioIndicationType /* type */, const hidl_vec<V1_2::SimSlotStatus>& /* slotStatus */) { + // TODO implement + return Void(); +} + +} // namespace implementation +} // namespace V1_3 +} // namespace config +} // namespace radio +} // namespace hardware +} // namespace android diff --git a/radio/config/1.3/default/RadioConfigIndication.h b/radio/config/1.3/default/RadioConfigIndication.h new file mode 100644 index 0000000000..3697492375 --- /dev/null +++ b/radio/config/1.3/default/RadioConfigIndication.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.1 (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.1 + * + * 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. + */ + +#ifndef ANDROID_HARDWARE_RADIO_CONFIG_V1_3_RADIOCONFIGINDICATION_H +#define ANDROID_HARDWARE_RADIO_CONFIG_V1_3_RADIOCONFIGINDICATION_H + +#include <android/hardware/radio/config/1.3/IRadioConfigIndication.h> +#include <hidl/MQDescriptor.h> +#include <hidl/Status.h> + +namespace android { +namespace hardware { +namespace radio { +namespace config { +namespace V1_3 { +namespace implementation { + +using namespace ::android::hardware::radio::V1_0; +using namespace ::android::hardware::radio::config; + +using ::android::sp; +using ::android::hardware::hidl_array; +using ::android::hardware::hidl_memory; +using ::android::hardware::hidl_string; +using ::android::hardware::hidl_vec; +using ::android::hardware::Return; +using ::android::hardware::Void; + +struct RadioConfigIndication : public IRadioConfigIndication { + // Methods from ::android::hardware::radio::config::V1_0::IRadioConfigIndication follow. + Return<void> simSlotsStatusChanged(RadioIndicationType type, + const hidl_vec<V1_0::SimSlotStatus>& slotStatus) override; + + // Methods from ::android::hardware::radio::config::V1_2::IRadioConfigIndication follow. + Return<void> simSlotsStatusChanged_1_2( + RadioIndicationType type, const hidl_vec<V1_2::SimSlotStatus>& slotStatus) override; +}; + +} // namespace implementation +} // namespace V1_3 +} // namespace config +} // namespace radio +} // namespace hardware +} // namespace android + +#endif // ANDROID_HARDWARE_RADIO_CONFIG_V1_3_RADIOCONFIGINDICATION_H diff --git a/radio/config/1.3/default/RadioConfigResponse.cpp b/radio/config/1.3/default/RadioConfigResponse.cpp new file mode 100644 index 0000000000..48e81dade3 --- /dev/null +++ b/radio/config/1.3/default/RadioConfigResponse.cpp @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.1 (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.1 + * + * 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. + */ + +#include "RadioConfigResponse.h" + +namespace android { +namespace hardware { +namespace radio { +namespace config { +namespace V1_3 { +namespace implementation { + +using namespace ::android::hardware::radio::V1_0; +using namespace ::android::hardware::radio::config::V1_0; +using namespace ::android::hardware::radio::config::V1_1; +using namespace ::android::hardware::radio::config::V1_2; + +// Methods from ::android::hardware::radio::config::V1_0::IRadioConfigResponse follow. +Return<void> RadioConfigResponse::getSimSlotsStatusResponse( + const RadioResponseInfo& /* info */, + const hidl_vec<V1_0::SimSlotStatus>& /* slotStatus */) { + // TODO implement + return Void(); +} + +Return<void> RadioConfigResponse::setSimSlotsMappingResponse(const RadioResponseInfo& /* info */) { + // TODO implement + return Void(); +} + +// Methods from ::android::hardware::radio::config::V1_1::IRadioConfigResponse follow. +Return<void> RadioConfigResponse::getPhoneCapabilityResponse( + const RadioResponseInfo& /* info */, const V1_1::PhoneCapability& /* phoneCapability */) { + // TODO implement + return Void(); +} + +Return<void> RadioConfigResponse::setPreferredDataModemResponse( + const RadioResponseInfo& /* info */) { + // TODO implement + return Void(); +} + +Return<void> RadioConfigResponse::setModemsConfigResponse(const RadioResponseInfo& /* info */) { + // TODO implement + return Void(); +} + +Return<void> RadioConfigResponse::getModemsConfigResponse( + const RadioResponseInfo& /* info */, const V1_1::ModemsConfig& /* modemsConfig */) { + // TODO implement + return Void(); +} + +// Methods from ::android::hardware::radio::config::V1_2::IRadioConfigResponse follow. +Return<void> RadioConfigResponse::getSimSlotsStatusResponse_1_2( + const RadioResponseInfo& /* info */, + const hidl_vec<V1_2::SimSlotStatus>& /* slotStatus */) { + // TODO implement + return Void(); +} + +} // namespace implementation +} // namespace V1_3 +} // namespace config +} // namespace radio +} // namespace hardware +} // namespace android diff --git a/radio/config/1.3/default/RadioConfigResponse.h b/radio/config/1.3/default/RadioConfigResponse.h new file mode 100644 index 0000000000..0f0033fa6a --- /dev/null +++ b/radio/config/1.3/default/RadioConfigResponse.h @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.1 (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.1 + * + * 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. + */ + +#ifndef ANDROID_HARDWARE_RADIO_CONFIG_V1_3_RADIOCONFIGRESPONSE_H +#define ANDROID_HARDWARE_RADIO_CONFIG_V1_3_RADIOCONFIGRESPONSE_H + +#include <android/hardware/radio/config/1.3/IRadioConfigResponse.h> +#include <hidl/MQDescriptor.h> +#include <hidl/Status.h> + +namespace android { +namespace hardware { +namespace radio { +namespace config { +namespace V1_3 { +namespace implementation { + +using ::android::sp; +using ::android::hardware::hidl_array; +using ::android::hardware::hidl_memory; +using ::android::hardware::hidl_string; +using ::android::hardware::hidl_vec; +using ::android::hardware::Return; +using ::android::hardware::Void; + +struct RadioConfigResponse : public IRadioConfigResponse { + // Methods from ::android::hardware::radio::config::V1_0::IRadioConfigResponse follow. + Return<void> getSimSlotsStatusResponse( + const ::android::hardware::radio::V1_0::RadioResponseInfo& info, + const hidl_vec<::android::hardware::radio::config::V1_0::SimSlotStatus>& slotStatus) + override; + Return<void> setSimSlotsMappingResponse( + const ::android::hardware::radio::V1_0::RadioResponseInfo& info) override; + + // Methods from ::android::hardware::radio::config::V1_1::IRadioConfigResponse follow. + Return<void> getPhoneCapabilityResponse( + const ::android::hardware::radio::V1_0::RadioResponseInfo& info, + const ::android::hardware::radio::config::V1_1::PhoneCapability& phoneCapability) + override; + Return<void> setPreferredDataModemResponse( + const ::android::hardware::radio::V1_0::RadioResponseInfo& info) override; + Return<void> setModemsConfigResponse( + const ::android::hardware::radio::V1_0::RadioResponseInfo& info) override; + Return<void> getModemsConfigResponse( + const ::android::hardware::radio::V1_0::RadioResponseInfo& info, + const ::android::hardware::radio::config::V1_1::ModemsConfig& modemsConfig) override; + + // Methods from ::android::hardware::radio::config::V1_2::IRadioConfigResponse follow. + Return<void> getSimSlotsStatusResponse_1_2( + const ::android::hardware::radio::V1_0::RadioResponseInfo& info, + const hidl_vec<::android::hardware::radio::config::V1_2::SimSlotStatus>& slotStatus) + override; + + // Methods from ::android::hidl::base::V1_0::IBase follow. +}; + +} // namespace implementation +} // namespace V1_3 +} // namespace config +} // namespace radio +} // namespace hardware +} // namespace android + +#endif // ANDROID_HARDWARE_RADIO_CONFIG_V1_3_RADIOCONFIGRESPONSE_H diff --git a/radio/config/1.3/default/android.hardware.radio.config@1.3-service.rc b/radio/config/1.3/default/android.hardware.radio.config@1.3-service.rc new file mode 100644 index 0000000000..6df9b52ba5 --- /dev/null +++ b/radio/config/1.3/default/android.hardware.radio.config@1.3-service.rc @@ -0,0 +1,7 @@ +service vendor.radio-config-hal-1-3 /vendor/bin/hw/android.hardware.radio.config@1.3-service + interface android.hardware.radio.config@1.0::IRadioConfig default + interface android.hardware.radio.config@1.1::IRadioConfig default + interface android.hardware.radio.config@1.3::IRadioConfig default + class hal + user system + group system diff --git a/radio/config/1.3/default/radio-config-default.xml b/radio/config/1.3/default/radio-config-default.xml new file mode 100644 index 0000000000..72f363e30f --- /dev/null +++ b/radio/config/1.3/default/radio-config-default.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2019, 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. +*/ +--> +<manifest version="1.0" type="device"> + <hal format="hidl"> + <name>android.hardware.radio.config</name> + <transport>hwbinder</transport> + <version>1.3</version> + <interface> + <name>IRadioConfig</name> + <instance>default</instance> + </interface> + </hal> +</manifest> diff --git a/radio/config/1.3/default/service.cpp b/radio/config/1.3/default/service.cpp new file mode 100644 index 0000000000..b1e67366e9 --- /dev/null +++ b/radio/config/1.3/default/service.cpp @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.1 (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.1 + * + * 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. + */ + +#define LOG_TAG "android.hardware.radio.config@1.3-service" + +#include <android/hardware/radio/config/1.3/IRadioConfig.h> +#include <hidl/HidlTransportSupport.h> + +#include "RadioConfig.h" + +using android::OK; +using android::sp; +using android::status_t; +using android::hardware::configureRpcThreadpool; +using android::hardware::joinRpcThreadpool; +using android::hardware::radio::config::V1_3::IRadioConfig; +using android::hardware::radio::config::V1_3::implementation::RadioConfig; + +int main() { + configureRpcThreadpool(1, true); + sp<IRadioConfig> radioConfig = new RadioConfig; + const status_t status = radioConfig->registerAsService(); + ALOGW_IF(status != OK, "Could not register IRadioConfig 1.3"); + ALOGD("Default service is ready."); + + joinRpcThreadpool(); + return 1; +} diff --git a/radio/config/1.3/types.hal b/radio/config/1.3/types.hal new file mode 100644 index 0000000000..866002acad --- /dev/null +++ b/radio/config/1.3/types.hal @@ -0,0 +1,17 @@ +/* + * Copyright (C) 2019 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.config@1.3; diff --git a/radio/config/1.3/vts/functional/Android.bp b/radio/config/1.3/vts/functional/Android.bp new file mode 100644 index 0000000000..6b28faf7a0 --- /dev/null +++ b/radio/config/1.3/vts/functional/Android.bp @@ -0,0 +1,35 @@ +// +// Copyright (C) 2019 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. +// + +cc_test { + name: "VtsHalRadioConfigV1_3TargetTest", + defaults: ["VtsHalTargetTestDefaults"], + srcs: [ + "radio_config_hidl_hal_api.cpp", + "radio_config_hidl_hal_test.cpp", + "radio_config_response.cpp", + "VtsHalRadioConfigV1_3TargetTest.cpp", + ], + static_libs: [ + "RadioVtsTestUtilBase", + "android.hardware.radio.config@1.0", + "android.hardware.radio.config@1.1", + "android.hardware.radio.config@1.2", + "android.hardware.radio.config@1.3", + ], + header_libs: ["radio.util.header@1.0"], + test_suites: ["general-tests", "vts-core"], +} diff --git a/radio/config/1.3/vts/functional/VtsHalRadioConfigV1_3TargetTest.cpp b/radio/config/1.3/vts/functional/VtsHalRadioConfigV1_3TargetTest.cpp new file mode 100644 index 0000000000..3bacacf63c --- /dev/null +++ b/radio/config/1.3/vts/functional/VtsHalRadioConfigV1_3TargetTest.cpp @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2019 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. + */ + +#include <radio_config_hidl_hal_utils.h> + +INSTANTIATE_TEST_SUITE_P( + PerInstance, RadioConfigHidlTest, + testing::ValuesIn(android::hardware::getAllHalInstanceNames( + ::android::hardware::radio::config::V1_3::IRadioConfig::descriptor)), + android::hardware::PrintInstanceNameToString); diff --git a/radio/config/1.3/vts/functional/radio_config_hidl_hal_api.cpp b/radio/config/1.3/vts/functional/radio_config_hidl_hal_api.cpp new file mode 100644 index 0000000000..07e9eded5a --- /dev/null +++ b/radio/config/1.3/vts/functional/radio_config_hidl_hal_api.cpp @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2019 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. + */ + +#include <radio_config_hidl_hal_utils.h> + +#define ASSERT_OK(ret) ASSERT_TRUE(ret.isOk()) diff --git a/radio/config/1.3/vts/functional/radio_config_hidl_hal_test.cpp b/radio/config/1.3/vts/functional/radio_config_hidl_hal_test.cpp new file mode 100644 index 0000000000..dbb4bf44e3 --- /dev/null +++ b/radio/config/1.3/vts/functional/radio_config_hidl_hal_test.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2019 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. + */ + +#include <radio_config_hidl_hal_utils.h> + +void RadioConfigHidlTest::SetUp() { + radioConfig = ::android::hardware::radio::config::V1_3::IRadioConfig::getService(GetParam()); + ASSERT_NE(nullptr, radioConfig.get()); + + radioConfigRsp = new (std::nothrow) RadioConfigResponse(*this); + ASSERT_NE(nullptr, radioConfigRsp.get()); + + count_ = 0; + + radioConfig->setResponseFunctions(radioConfigRsp, nullptr); +} + +/* + * Notify that the response message is received. + */ +void RadioConfigHidlTest::notify(int receivedSerial) { + std::unique_lock<std::mutex> lock(mtx_); + if (serial == receivedSerial) { + count_++; + cv_.notify_one(); + } +} + +/* + * Wait till the response message is notified or till TIMEOUT_PERIOD. + */ +std::cv_status RadioConfigHidlTest::wait() { + std::unique_lock<std::mutex> lock(mtx_); + + std::cv_status status = std::cv_status::no_timeout; + auto now = std::chrono::system_clock::now(); + while (count_ == 0) { + status = cv_.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD)); + if (status == std::cv_status::timeout) { + return status; + } + } + count_--; + return status; +} diff --git a/radio/config/1.3/vts/functional/radio_config_hidl_hal_utils.h b/radio/config/1.3/vts/functional/radio_config_hidl_hal_utils.h new file mode 100644 index 0000000000..9b78c04944 --- /dev/null +++ b/radio/config/1.3/vts/functional/radio_config_hidl_hal_utils.h @@ -0,0 +1,128 @@ +/* + * Copyright (C) 2019 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. + */ + +#include <android-base/logging.h> + +#include <chrono> +#include <condition_variable> +#include <mutex> + +#include <android/hardware/radio/config/1.3/IRadioConfig.h> +#include <android/hardware/radio/config/1.3/IRadioConfigIndication.h> +#include <android/hardware/radio/config/1.3/IRadioConfigResponse.h> +#include <android/hardware/radio/config/1.3/types.h> + +#include <gtest/gtest.h> +#include <hidl/GtestPrinter.h> +#include <hidl/ServiceManagement.h> + +#include "vts_test_util.h" + +using namespace ::android::hardware::radio::config::V1_1; +using namespace ::android::hardware::radio::config::V1_2; +using namespace ::android::hardware::radio::config::V1_3; + +using ::android::sp; +using ::android::hardware::hidl_string; +using ::android::hardware::hidl_vec; +using ::android::hardware::Return; +using ::android::hardware::Void; + +using ::android::hardware::radio::V1_0::RadioResponseInfo; +using ::android::hardware::radio::V1_0::RadioResponseType; + +#define TIMEOUT_PERIOD 75 + +class RadioConfigHidlTest; + +/* Callback class for radio config response */ +class RadioConfigResponse : public ::android::hardware::radio::config::V1_3::IRadioConfigResponse { + protected: + RadioConfigHidlTest& parent; + + public: + RadioResponseInfo rspInfo; + PhoneCapability phoneCap; + + RadioConfigResponse(RadioConfigHidlTest& parent); + virtual ~RadioConfigResponse() = default; + + /* 1.0 Api */ + Return<void> getSimSlotsStatusResponse( + const RadioResponseInfo& info, + const hidl_vec<::android::hardware::radio::config::V1_0::SimSlotStatus>& slotStatus); + + Return<void> setSimSlotsMappingResponse(const RadioResponseInfo& info); + + /* 1.1 Api */ + Return<void> getPhoneCapabilityResponse(const RadioResponseInfo& info, + const PhoneCapability& phoneCapability); + + Return<void> setPreferredDataModemResponse(const RadioResponseInfo& info); + + Return<void> getModemsConfigResponse(const RadioResponseInfo& info, + const ModemsConfig& mConfig); + + Return<void> setModemsConfigResponse(const RadioResponseInfo& info); + + /* 1.2 Api */ + Return<void> getSimSlotsStatusResponse_1_2(const RadioResponseInfo& info, + const hidl_vec<SimSlotStatus>& slotStatus); +}; + +/* Callback class for radio config indication */ +class RadioConfigIndication + : public ::android::hardware::radio::config::V1_3::IRadioConfigIndication { + protected: + RadioConfigHidlTest& parent; + + public: + RadioConfigIndication(RadioConfigHidlTest& parent); + virtual ~RadioConfigIndication() = default; + + /* 1.2 Api */ + Return<void> simSlotsStatusChanged_1_2( + ::android::hardware::radio::V1_0::RadioIndicationType type, + const hidl_vec<SimSlotStatus>& slotStatus); +}; + +// The main test class for Radio config HIDL. +class RadioConfigHidlTest : public ::testing::TestWithParam<std::string> { + protected: + std::mutex mtx_; + std::condition_variable cv_; + int count_; + + public: + virtual void SetUp() override; + + /* Used as a mechanism to inform the test about data/event callback */ + void notify(int receivedSerial); + + /* Test code calls this function to wait for response */ + std::cv_status wait(); + + void updateSimCardStatus(); + + /* Serial number for radio request */ + int serial; + + /* radio config service handle */ + sp<::android::hardware::radio::config::V1_3::IRadioConfig> radioConfig; + + /* radio config response handle */ + sp<RadioConfigResponse> radioConfigRsp; +}; diff --git a/radio/config/1.3/vts/functional/radio_config_response.cpp b/radio/config/1.3/vts/functional/radio_config_response.cpp new file mode 100644 index 0000000000..1ca960eae9 --- /dev/null +++ b/radio/config/1.3/vts/functional/radio_config_response.cpp @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2019 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. + */ + +#include <radio_config_hidl_hal_utils.h> + +using ::android::hardware::radio::V1_0::RadioResponseInfo; + +// SimSlotStatus slotStatus; + +RadioConfigResponse::RadioConfigResponse(RadioConfigHidlTest& parent) : parent(parent) {} + +/* 1.0 Apis */ +Return<void> RadioConfigResponse::getSimSlotsStatusResponse( + const RadioResponseInfo& /* info */, + const ::android::hardware::hidl_vec< + ::android::hardware::radio::config::V1_0::SimSlotStatus>& /* slotStatus */) { + return Void(); +} + +Return<void> RadioConfigResponse::setSimSlotsMappingResponse(const RadioResponseInfo& /* info */) { + return Void(); +} + +/* 1.1 Apis */ +Return<void> RadioConfigResponse::getPhoneCapabilityResponse( + const RadioResponseInfo& info, const PhoneCapability& phoneCapability) { + rspInfo = info; + phoneCap = phoneCapability; + parent.notify(info.serial); + return Void(); +} + +Return<void> RadioConfigResponse::setPreferredDataModemResponse( + const RadioResponseInfo& /* info */) { + return Void(); +} + +Return<void> RadioConfigResponse::getModemsConfigResponse(const RadioResponseInfo& /* info */, + const ModemsConfig& /* mConfig */) { + return Void(); +} + +Return<void> RadioConfigResponse::setModemsConfigResponse(const RadioResponseInfo& /* info */) { + return Void(); +} + +/* 1.2 Apis */ +Return<void> RadioConfigResponse::getSimSlotsStatusResponse_1_2( + const RadioResponseInfo& /* info */, + const ::android::hardware::hidl_vec<SimSlotStatus>& /* slotStatus */) { + return Void(); +}
\ No newline at end of file |