From 26487e7a11077c45bc1a5b3f301783ccfdcc5985 Mon Sep 17 00:00:00 2001 From: yinxu Date: Mon, 22 Jan 2018 16:29:00 -0800 Subject: [PATCH] Add default implementation for radio config HAL Bug: 64131518 Test: Basic telephony sanity Change-Id: I6bd6c6c46f8f70fd13b6c02ddfe399e04190133a --- radio/config/1.0/default/Android.bp | 20 +++++++ radio/config/1.0/default/RadioConfig.cpp | 56 ++++++++++++++++++ radio/config/1.0/default/RadioConfig.h | 59 +++++++++++++++++++ .../1.0/default/RadioConfigIndication.cpp | 40 +++++++++++++ .../1.0/default/RadioConfigIndication.h | 54 +++++++++++++++++ .../1.0/default/RadioConfigResponse.cpp | 46 +++++++++++++++ .../config/1.0/default/RadioConfigResponse.h | 56 ++++++++++++++++++ ...droid.hardware.radio.config@1.0-service.rc | 4 ++ radio/config/1.0/default/service.cpp | 42 +++++++++++++ 9 files changed, 377 insertions(+) create mode 100644 radio/config/1.0/default/Android.bp create mode 100644 radio/config/1.0/default/RadioConfig.cpp create mode 100644 radio/config/1.0/default/RadioConfig.h create mode 100644 radio/config/1.0/default/RadioConfigIndication.cpp create mode 100644 radio/config/1.0/default/RadioConfigIndication.h create mode 100644 radio/config/1.0/default/RadioConfigResponse.cpp create mode 100644 radio/config/1.0/default/RadioConfigResponse.h create mode 100644 radio/config/1.0/default/android.hardware.radio.config@1.0-service.rc create mode 100644 radio/config/1.0/default/service.cpp diff --git a/radio/config/1.0/default/Android.bp b/radio/config/1.0/default/Android.bp new file mode 100644 index 0000000000..f52335e2dd --- /dev/null +++ b/radio/config/1.0/default/Android.bp @@ -0,0 +1,20 @@ +cc_binary { + name: "android.hardware.radio.config@1.0-service", + init_rc: ["android.hardware.radio.config@1.0-service.rc"], + relative_install_path: "hw", + vendor: true, + srcs: [ + "RadioConfig.cpp", + "RadioConfigIndication.cpp", + "RadioConfigResponse.cpp", + "service.cpp", + ], + shared_libs: [ + "libhidlbase", + "libhidltransport", + "liblog", + "libutils", + "android.hardware.radio.config@1.0", + "android.hardware.radio@1.0", + ], +} diff --git a/radio/config/1.0/default/RadioConfig.cpp b/radio/config/1.0/default/RadioConfig.cpp new file mode 100644 index 0000000000..af4b77eeda --- /dev/null +++ b/radio/config/1.0/default/RadioConfig.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2018 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_0 { +namespace implementation { + +using namespace ::android::hardware::radio::config::V1_0; + +// Methods from ::android::hardware::radio::config::V1_0::IRadioConfig follow. +Return RadioConfig::setResponseFunctions( + const sp& radioConfigResponse, + const sp& radioConfigIndication) { + mRadioConfigResponse = radioConfigResponse; + mRadioConfigIndication = radioConfigIndication; + return Void(); +} + +Return RadioConfig::getSimSlotsStatus(int32_t /* serial */) { + hidl_vec slotStatus; + ::android::hardware::radio::V1_0::RadioResponseInfo info; + mRadioConfigResponse->getSimSlotsStatusResponse(info, slotStatus); + return Void(); +} + +Return RadioConfig::setSimSlotsMapping(int32_t /* serial */, + const hidl_vec& /* slotMap */) { + ::android::hardware::radio::V1_0::RadioResponseInfo info; + mRadioConfigResponse->setSimSlotsMappingResponse(info); + return Void(); +} + +} // namespace implementation +} // namespace V1_0 +} // namespace config +} // namespace radio +} // namespace hardware +} // namespace android diff --git a/radio/config/1.0/default/RadioConfig.h b/radio/config/1.0/default/RadioConfig.h new file mode 100644 index 0000000000..0f0ac752c2 --- /dev/null +++ b/radio/config/1.0/default/RadioConfig.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2018 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_0_RADIOCONFIG_H +#define ANDROID_HARDWARE_RADIO_CONFIG_V1_0_RADIOCONFIG_H + +#include +#include +#include + +namespace android { +namespace hardware { +namespace radio { +namespace config { +namespace V1_0 { +namespace implementation { + +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; +using ::android::sp; + +struct RadioConfig : public IRadioConfig { + sp mRadioConfigResponse; + sp mRadioConfigIndication; + // Methods from ::android::hardware::radio::config::V1_0::IRadioConfig follow. + Return setResponseFunctions( + const sp<::android::hardware::radio::config::V1_0::IRadioConfigResponse>& + radioConfigResponse, + const sp<::android::hardware::radio::config::V1_0::IRadioConfigIndication>& + radioConfigIndication) override; + Return getSimSlotsStatus(int32_t serial) override; + Return setSimSlotsMapping(int32_t serial, const hidl_vec& slotMap) override; +}; + +} // namespace implementation +} // namespace V1_0 +} // namespace config +} // namespace radio +} // namespace hardware +} // namespace android + +#endif // ANDROID_HARDWARE_RADIO_CONFIG_V1_0_RADIOCONFIG_H diff --git a/radio/config/1.0/default/RadioConfigIndication.cpp b/radio/config/1.0/default/RadioConfigIndication.cpp new file mode 100644 index 0000000000..1005ca39bc --- /dev/null +++ b/radio/config/1.0/default/RadioConfigIndication.cpp @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2018 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_0 { +namespace implementation { + +using namespace ::android::hardware::radio::V1_0; + +// Methods from ::android::hardware::radio::config::V1_0::IRadioConfigIndication follow. +Return RadioConfigIndication::simSlotsStatusChanged( + RadioIndicationType /* type */, const hidl_vec& /* slotStatus */) { + // TODO implement + return Void(); +} + +} // namespace implementation +} // namespace V1_0 +} // namespace config +} // namespace radio +} // namespace hardware +} // namespace android diff --git a/radio/config/1.0/default/RadioConfigIndication.h b/radio/config/1.0/default/RadioConfigIndication.h new file mode 100644 index 0000000000..cfab1e680e --- /dev/null +++ b/radio/config/1.0/default/RadioConfigIndication.h @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2018 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_0_RADIOCONFIGINDICATION_H +#define ANDROID_HARDWARE_RADIO_CONFIG_V1_0_RADIOCONFIGINDICATION_H + +#include +#include +#include + +namespace android { +namespace hardware { +namespace radio { +namespace config { +namespace V1_0 { +namespace implementation { + +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; +using ::android::sp; + +struct RadioConfigIndication : public IRadioConfigIndication { + // Methods from ::android::hardware::radio::config::V1_0::IRadioConfigIndication follow. + Return simSlotsStatusChanged( + ::android::hardware::radio::V1_0::RadioIndicationType type, + const hidl_vec<::android::hardware::radio::config::V1_0::SimSlotStatus>& slotStatus) + override; +}; + +} // namespace implementation +} // namespace V1_0 +} // namespace config +} // namespace radio +} // namespace hardware +} // namespace android + +#endif // ANDROID_HARDWARE_RADIO_CONFIG_V1_0_RADIOCONFIGINDICATION_H diff --git a/radio/config/1.0/default/RadioConfigResponse.cpp b/radio/config/1.0/default/RadioConfigResponse.cpp new file mode 100644 index 0000000000..029eab2604 --- /dev/null +++ b/radio/config/1.0/default/RadioConfigResponse.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2018 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_0 { +namespace implementation { + +using namespace ::android::hardware::radio::V1_0; +using namespace ::android::hardware::radio::config::V1_0; + +// Methods from ::android::hardware::radio::config::V1_0::IRadioConfigResponse follow. +Return RadioConfigResponse::getSimSlotsStatusResponse( + const RadioResponseInfo& /* info */, const hidl_vec& /* slotStatus */) { + // TODO implement + return Void(); +} + +Return RadioConfigResponse::setSimSlotsMappingResponse(const RadioResponseInfo& /* info */) { + // TODO implement + return Void(); +} + +} // namespace implementation +} // namespace V1_0 +} // namespace config +} // namespace radio +} // namespace hardware +} // namespace android diff --git a/radio/config/1.0/default/RadioConfigResponse.h b/radio/config/1.0/default/RadioConfigResponse.h new file mode 100644 index 0000000000..7d121fd7a8 --- /dev/null +++ b/radio/config/1.0/default/RadioConfigResponse.h @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2018 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_0_RADIOCONFIGRESPONSE_H +#define ANDROID_HARDWARE_RADIO_CONFIG_V1_0_RADIOCONFIGRESPONSE_H + +#include +#include +#include + +namespace android { +namespace hardware { +namespace radio { +namespace config { +namespace V1_0 { +namespace implementation { + +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; +using ::android::sp; + +struct RadioConfigResponse : public IRadioConfigResponse { + // Methods from ::android::hardware::radio::config::V1_0::IRadioConfigResponse follow. + Return getSimSlotsStatusResponse( + const ::android::hardware::radio::V1_0::RadioResponseInfo& info, + const hidl_vec<::android::hardware::radio::config::V1_0::SimSlotStatus>& slotStatus) + override; + Return setSimSlotsMappingResponse( + const ::android::hardware::radio::V1_0::RadioResponseInfo& info) override; +}; + +} // namespace implementation +} // namespace V1_0 +} // namespace config +} // namespace radio +} // namespace hardware +} // namespace android + +#endif // ANDROID_HARDWARE_RADIO_CONFIG_V1_0_RADIOCONFIGRESPONSE_H diff --git a/radio/config/1.0/default/android.hardware.radio.config@1.0-service.rc b/radio/config/1.0/default/android.hardware.radio.config@1.0-service.rc new file mode 100644 index 0000000000..fad16b1caa --- /dev/null +++ b/radio/config/1.0/default/android.hardware.radio.config@1.0-service.rc @@ -0,0 +1,4 @@ +service vendor.radio-config-hal-1-0 /vendor/bin/hw/android.hardware.radio.config@1.0-service + class hal + user system + group system diff --git a/radio/config/1.0/default/service.cpp b/radio/config/1.0/default/service.cpp new file mode 100644 index 0000000000..a06cc22d40 --- /dev/null +++ b/radio/config/1.0/default/service.cpp @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2018 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.0-service" + +#include +#include + +#include "RadioConfig.h" + +using android::hardware::configureRpcThreadpool; +using android::hardware::joinRpcThreadpool; +using android::hardware::radio::config::V1_0::IRadioConfig; +using android::hardware::radio::config::V1_0::implementation::RadioConfig; +using android::sp; +using android::status_t; +using android::OK; + +int main() { + configureRpcThreadpool(1, true); + + sp radioConfig = new RadioConfig; + status_t status = radioConfig->registerAsService(); + ALOGW_IF(status != OK, "Could not register IRadioConfig"); + ALOGD("Default service is ready."); + + joinRpcThreadpool(); + return 0; +} \ No newline at end of file