From 92a95b287040a6e4febfad00b946e4b00ca7eede Mon Sep 17 00:00:00 2001 From: Steven Moreland Date: Thu, 1 Dec 2016 09:29:48 -0800 Subject: [PATCH] Dumpstate: default service implementation. - dumpstate will not have passthrough mode. All new implementations are required anyway. It makes more sense to just have them binderized by default. Test: compiles/put on device in right location/running Bug: 31982882 Change-Id: Ib0c12a2e0da931060f0e9e990fb63b6c7bc9e872 --- dumpstate/1.0/default/Android.mk | 10 +++--- dumpstate/1.0/default/DumpstateDevice.cpp | 14 ++++---- dumpstate/1.0/default/DumpstateDevice.h | 2 -- .../android.hardware.dumpstate@1.0-service.rc | 4 +++ dumpstate/1.0/default/service.cpp | 34 +++++++++++++++++++ 5 files changed, 50 insertions(+), 14 deletions(-) create mode 100644 dumpstate/1.0/default/android.hardware.dumpstate@1.0-service.rc create mode 100644 dumpstate/1.0/default/service.cpp diff --git a/dumpstate/1.0/default/Android.mk b/dumpstate/1.0/default/Android.mk index 4d5c9087e7..0b1518447f 100644 --- a/dumpstate/1.0/default/Android.mk +++ b/dumpstate/1.0/default/Android.mk @@ -1,22 +1,22 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) -LOCAL_MODULE := android.hardware.dumpstate@1.0-impl +LOCAL_MODULE := android.hardware.dumpstate@1.0-service +LOCAL_INIT_RC := android.hardware.dumpstate@1.0-service.rc LOCAL_MODULE_RELATIVE_PATH := hw LOCAL_SRC_FILES := \ DumpstateDevice.cpp \ + service.cpp LOCAL_SHARED_LIBRARIES := \ android.hardware.dumpstate@1.0 \ libbase \ libcutils \ + libdumpstateutil \ libhidlbase \ libhidltransport \ libhwbinder \ liblog \ libutils -LOCAL_STATIC_LIBRARIES := \ - libdumpstateutil - -include $(BUILD_SHARED_LIBRARY) +include $(BUILD_EXECUTABLE) diff --git a/dumpstate/1.0/default/DumpstateDevice.cpp b/dumpstate/1.0/default/DumpstateDevice.cpp index 42642355bc..8000d85826 100644 --- a/dumpstate/1.0/default/DumpstateDevice.cpp +++ b/dumpstate/1.0/default/DumpstateDevice.cpp @@ -22,6 +22,9 @@ #include "DumpstateUtil.h" +using android::os::dumpstate::DumpFileToFd; +using android::os::dumpstate::RunCommandToFd; + namespace android { namespace hardware { namespace dumpstate { @@ -30,6 +33,10 @@ namespace implementation { // Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow. Return DumpstateDevice::dumpstateBoard(const hidl_handle& handle) { + // NOTE: this is just an example on how to use the DumpstateUtil.h functions to implement + // this interface - since HIDL_FETCH_IDumpstateDevice() is not defined, this function will never + // be called by dumpstate. + if (handle->numFds < 1) { ALOGE("no FDs\n"); return Void(); @@ -51,13 +58,6 @@ Return DumpstateDevice::dumpstateBoard(const hidl_handle& handle) { return Void(); } - -IDumpstateDevice* HIDL_FETCH_IDumpstateDevice(const char* /* name */) { - // TODO: temporary returning nullptr until it's implemented on master devices - return nullptr; -// return new DumpstateDevice(); -} - } // namespace implementation } // namespace V1_0 } // namespace dumpstate diff --git a/dumpstate/1.0/default/DumpstateDevice.h b/dumpstate/1.0/default/DumpstateDevice.h index f216304f7e..f8585f5545 100644 --- a/dumpstate/1.0/default/DumpstateDevice.h +++ b/dumpstate/1.0/default/DumpstateDevice.h @@ -41,8 +41,6 @@ struct DumpstateDevice : public IDumpstateDevice { }; -extern "C" IDumpstateDevice* HIDL_FETCH_IDumpstateDevice(const char* name); - } // namespace implementation } // namespace V1_0 } // namespace dumpstate diff --git a/dumpstate/1.0/default/android.hardware.dumpstate@1.0-service.rc b/dumpstate/1.0/default/android.hardware.dumpstate@1.0-service.rc new file mode 100644 index 0000000000..99b968e989 --- /dev/null +++ b/dumpstate/1.0/default/android.hardware.dumpstate@1.0-service.rc @@ -0,0 +1,4 @@ +service dumpstate-1-0 /system/bin/hw/android.hardware.dumpstate@1.0-service + class hal + user system + group system diff --git a/dumpstate/1.0/default/service.cpp b/dumpstate/1.0/default/service.cpp new file mode 100644 index 0000000000..0d5bd94114 --- /dev/null +++ b/dumpstate/1.0/default/service.cpp @@ -0,0 +1,34 @@ +/* + * 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. + */ +#define LOG_TAG "android.hardware.dumpstate@1.0-service" + +#include +#include + +#include "DumpstateDevice.h" + +using ::android::hardware::configureRpcThreadpool; +using ::android::hardware::dumpstate::V1_0::IDumpstateDevice; +using ::android::hardware::dumpstate::V1_0::implementation::DumpstateDevice; +using ::android::hardware::joinRpcThreadpool; +using ::android::sp; + +int main (int /* argc */, char * /* argv */ []) { + sp dumpstate = new DumpstateDevice; + configureRpcThreadpool(1, true); + dumpstate->registerAsService("dumpstate"); + joinRpcThreadpool(); +}