diff --git a/configstore/1.0/Android.bp b/configstore/1.0/Android.bp new file mode 100644 index 0000000000..c2cd54a2e7 --- /dev/null +++ b/configstore/1.0/Android.bp @@ -0,0 +1,62 @@ +// This file is autogenerated by hidl-gen. Do not edit manually. + +filegroup { + name: "android.hardware.configstore@1.0_hal", + srcs: [ + "types.hal", + "ISurfaceFlingerConfigs.hal", + ], +} + +genrule { + name: "android.hardware.configstore@1.0_genc++", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.configstore@1.0", + srcs: [ + ":android.hardware.configstore@1.0_hal", + ], + out: [ + "android/hardware/configstore/1.0/types.cpp", + "android/hardware/configstore/1.0/SurfaceFlingerConfigsAll.cpp", + ], +} + +genrule { + name: "android.hardware.configstore@1.0_genc++_headers", + tools: ["hidl-gen"], + cmd: "$(location hidl-gen) -o $(genDir) -Lc++ -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.configstore@1.0", + srcs: [ + ":android.hardware.configstore@1.0_hal", + ], + out: [ + "android/hardware/configstore/1.0/types.h", + "android/hardware/configstore/1.0/ISurfaceFlingerConfigs.h", + "android/hardware/configstore/1.0/IHwSurfaceFlingerConfigs.h", + "android/hardware/configstore/1.0/BnHwSurfaceFlingerConfigs.h", + "android/hardware/configstore/1.0/BpHwSurfaceFlingerConfigs.h", + "android/hardware/configstore/1.0/BsSurfaceFlingerConfigs.h", + ], +} + +cc_library_shared { + name: "android.hardware.configstore@1.0", + generated_sources: ["android.hardware.configstore@1.0_genc++"], + generated_headers: ["android.hardware.configstore@1.0_genc++_headers"], + export_generated_headers: ["android.hardware.configstore@1.0_genc++_headers"], + shared_libs: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "liblog", + "libutils", + "libcutils", + "android.hidl.base@1.0", + ], + export_shared_lib_headers: [ + "libhidlbase", + "libhidltransport", + "libhwbinder", + "libutils", + "android.hidl.base@1.0", + ], +} diff --git a/configstore/1.0/Android.mk b/configstore/1.0/Android.mk new file mode 100644 index 0000000000..010d5093b1 --- /dev/null +++ b/configstore/1.0/Android.mk @@ -0,0 +1,308 @@ +# This file is autogenerated by hidl-gen. Do not edit manually. + +LOCAL_PATH := $(call my-dir) + +################################################################################ + +include $(CLEAR_VARS) +LOCAL_MODULE := android.hardware.configstore@1.0-java +LOCAL_MODULE_CLASS := JAVA_LIBRARIES + +intermediates := $(call local-generated-sources-dir, COMMON) + +HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX) + +LOCAL_JAVA_LIBRARIES := \ + android.hidl.base@1.0-java \ + + +# +# Build types.hal (OptionalBool) +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/OptionalBool.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.configstore@1.0::types.OptionalBool + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +# +# Build types.hal (OptionalInt32) +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/OptionalInt32.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.configstore@1.0::types.OptionalInt32 + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +# +# Build types.hal (OptionalInt64) +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/OptionalInt64.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.configstore@1.0::types.OptionalInt64 + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +# +# Build types.hal (OptionalString) +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/OptionalString.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.configstore@1.0::types.OptionalString + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +# +# Build types.hal (OptionalUInt32) +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/OptionalUInt32.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.configstore@1.0::types.OptionalUInt32 + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +# +# Build types.hal (OptionalUInt64) +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/OptionalUInt64.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.configstore@1.0::types.OptionalUInt64 + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +# +# Build ISurfaceFlingerConfigs.hal +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/ISurfaceFlingerConfigs.java +$(GEN): $(HIDL) +$(GEN): PRIVATE_HIDL := $(HIDL) +$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/ISurfaceFlingerConfigs.hal +$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal +$(GEN): $(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.configstore@1.0::ISurfaceFlingerConfigs + +$(GEN): $(LOCAL_PATH)/ISurfaceFlingerConfigs.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) +include $(BUILD_JAVA_LIBRARY) + + +################################################################################ + +include $(CLEAR_VARS) +LOCAL_MODULE := android.hardware.configstore@1.0-java-static +LOCAL_MODULE_CLASS := JAVA_LIBRARIES + +intermediates := $(call local-generated-sources-dir, COMMON) + +HIDL := $(HOST_OUT_EXECUTABLES)/hidl-gen$(HOST_EXECUTABLE_SUFFIX) + +LOCAL_STATIC_JAVA_LIBRARIES := \ + android.hidl.base@1.0-java-static \ + + +# +# Build types.hal (OptionalBool) +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/OptionalBool.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.configstore@1.0::types.OptionalBool + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +# +# Build types.hal (OptionalInt32) +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/OptionalInt32.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.configstore@1.0::types.OptionalInt32 + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +# +# Build types.hal (OptionalInt64) +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/OptionalInt64.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.configstore@1.0::types.OptionalInt64 + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +# +# Build types.hal (OptionalString) +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/OptionalString.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.configstore@1.0::types.OptionalString + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +# +# Build types.hal (OptionalUInt32) +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/OptionalUInt32.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.configstore@1.0::types.OptionalUInt32 + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +# +# Build types.hal (OptionalUInt64) +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/OptionalUInt64.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.configstore@1.0::types.OptionalUInt64 + +$(GEN): $(LOCAL_PATH)/types.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) + +# +# Build ISurfaceFlingerConfigs.hal +# +GEN := $(intermediates)/android/hardware/configstore/V1_0/ISurfaceFlingerConfigs.java +$(GEN): $(HIDL) +$(GEN): PRIVATE_HIDL := $(HIDL) +$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/ISurfaceFlingerConfigs.hal +$(GEN): PRIVATE_DEPS += $(LOCAL_PATH)/types.hal +$(GEN): $(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.configstore@1.0::ISurfaceFlingerConfigs + +$(GEN): $(LOCAL_PATH)/ISurfaceFlingerConfigs.hal + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(GEN) +include $(BUILD_STATIC_JAVA_LIBRARY) + + + +include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/configstore/1.0/ISurfaceFlingerConfigs.hal b/configstore/1.0/ISurfaceFlingerConfigs.hal new file mode 100644 index 0000000000..4403a9013a --- /dev/null +++ b/configstore/1.0/ISurfaceFlingerConfigs.hal @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2017 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.configstore@1.0; + +interface ISurfaceFlingerConfigs { + vsyncEventPhaseOffsetNs() generates (OptionalInt64 value); + useTripleFramebuffer() generates (OptionalBool value); +}; diff --git a/configstore/1.0/default/Android.mk b/configstore/1.0/default/Android.mk new file mode 100644 index 0000000000..b168029f23 --- /dev/null +++ b/configstore/1.0/default/Android.mk @@ -0,0 +1,40 @@ +LOCAL_PATH := $(call my-dir) + +################################################################################ +include $(CLEAR_VARS) +LOCAL_MODULE := android.hardware.configstore@1.0-impl +LOCAL_PROPRIETARY_MODULE := true +LOCAL_MODULE_CLASS := SHARED_LIBRARIES +LOCAL_MODULE_RELATIVE_PATH := hw + +include $(LOCAL_PATH)/surfaceflinger.mk + +LOCAL_SHARED_LIBRARIES := \ + libbase \ + libhidlbase \ + libhidltransport \ + libutils \ + android.hardware.configstore@1.0 \ + android.hidl.base@1.0 + +include $(BUILD_SHARED_LIBRARY) + +################################################################################ +include $(CLEAR_VARS) +LOCAL_MODULE := android.hardware.configstore@1.0-service +LOCAL_PROPRIETARY_MODULE := true +LOCAL_MODULE_CLASS := EXECUTABLES +LOCAL_MODULE_RELATIVE_PATH := hw +LOCAL_INIT_RC := android.hardware.configstore@1.0-service.rc +LOCAL_SRC_FILES:= service.cpp + +LOCAL_SHARED_LIBRARIES := \ + liblog \ + libdl \ + libutils \ + libhidlbase \ + libhidltransport \ + android.hardware.configstore@1.0 \ + +include $(BUILD_EXECUTABLE) + diff --git a/configstore/1.0/default/SurfaceFlingerConfigs.cpp b/configstore/1.0/default/SurfaceFlingerConfigs.cpp new file mode 100644 index 0000000000..5d62b151e9 --- /dev/null +++ b/configstore/1.0/default/SurfaceFlingerConfigs.cpp @@ -0,0 +1,42 @@ +#include "SurfaceFlingerConfigs.h" + +#include + +namespace android { +namespace hardware { +namespace configstore { +namespace V1_0 { +namespace implementation { + +// Methods from ::android::hardware::configstore::V1_0::ISurfaceFlingerConfigs follow. +Return SurfaceFlingerConfigs::vsyncEventPhaseOffsetNs(vsyncEventPhaseOffsetNs_cb _hidl_cb) { +#ifdef VSYNC_EVENT_PHASE_OFFSET_NS + _hidl_cb({true, VSYNC_EVENT_PHASE_OFFSET_NS}); + LOG(INFO) << "vsync event phase offset ns = " << VSYNC_EVENT_PHASE_OFFSET_NS; +#else + _hidl_cb({false, 0}); +#endif + return Void(); +} + +Return SurfaceFlingerConfigs::useTripleFramebuffer(useTripleFramebuffer_cb _hidl_cb) { + bool value = false; +#ifdef USE_TRIPLE_FRAMEBUFFER + value = true; +#endif + _hidl_cb({true, value}); + LOG(INFO) << "SurfaceFlinger FrameBuffer: " << (value ? "triple" : "double"); + return Void(); +} + +// Methods from ::android::hidl::base::V1_0::IBase follow. + +ISurfaceFlingerConfigs* HIDL_FETCH_ISurfaceFlingerConfigs(const char* /* name */) { + return new SurfaceFlingerConfigs(); +} + +} // namespace implementation +} // namespace V1_0 +} // namespace configstore +} // namespace hardware +} // namespace android diff --git a/configstore/1.0/default/SurfaceFlingerConfigs.h b/configstore/1.0/default/SurfaceFlingerConfigs.h new file mode 100644 index 0000000000..c9652fc970 --- /dev/null +++ b/configstore/1.0/default/SurfaceFlingerConfigs.h @@ -0,0 +1,42 @@ +#ifndef ANDROID_HARDWARE_CONFIGSTORE_V1_0_SURFACEFLINGERCONFIGS_H +#define ANDROID_HARDWARE_CONFIGSTORE_V1_0_SURFACEFLINGERCONFIGS_H + +#include +#include +#include + +namespace android { +namespace hardware { +namespace configstore { +namespace V1_0 { +namespace implementation { + +using ::android::hardware::configstore::V1_0::ISurfaceFlingerConfigs; +using ::android::hardware::configstore::V1_0::OptionalBool; +using ::android::hidl::base::V1_0::IBase; +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 SurfaceFlingerConfigs : public ISurfaceFlingerConfigs { + // Methods from ::android::hardware::configstore::V1_0::ISurfaceFlingerConfigs follow. + Return vsyncEventPhaseOffsetNs(vsyncEventPhaseOffsetNs_cb _hidl_cb) override; + Return useTripleFramebuffer(useTripleFramebuffer_cb _hidl_cb) override; + + // Methods from ::android::hidl::base::V1_0::IBase follow. + +}; + +extern "C" ISurfaceFlingerConfigs* HIDL_FETCH_ISurfaceFlingerConfigs(const char* name); + +} // namespace implementation +} // namespace V1_0 +} // namespace configstore +} // namespace hardware +} // namespace android + +#endif // ANDROID_HARDWARE_CONFIGSTORE_V1_0_SURFACEFLINGERCONFIGS_H diff --git a/configstore/1.0/default/android.hardware.configstore@1.0-service.rc b/configstore/1.0/default/android.hardware.configstore@1.0-service.rc new file mode 100644 index 0000000000..8741bdde6b --- /dev/null +++ b/configstore/1.0/default/android.hardware.configstore@1.0-service.rc @@ -0,0 +1,4 @@ +service configstore-hal-1-0 /vendor/bin/hw/android.hardware.configstore@1.0-service + class hal + user system + group system diff --git a/configstore/1.0/default/service.cpp b/configstore/1.0/default/service.cpp new file mode 100644 index 0000000000..caec0ba463 --- /dev/null +++ b/configstore/1.0/default/service.cpp @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2017 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.configstore@1.0-service" + +#include +#include + +using android::hardware::configstore::V1_0::ISurfaceFlingerConfigs; +using android::hardware::configureRpcThreadpool; +using android::hardware::registerPassthroughServiceImplementation; +using android::hardware::joinRpcThreadpool; + +int main() { + // TODO(b/34857894): tune the max thread count. + configureRpcThreadpool(10, true); + registerPassthroughServiceImplementation(); + // other interface registration comes here + joinRpcThreadpool(); + return 0; +} diff --git a/configstore/1.0/default/surfaceflinger.mk b/configstore/1.0/default/surfaceflinger.mk new file mode 100644 index 0000000000..5a946f4a8c --- /dev/null +++ b/configstore/1.0/default/surfaceflinger.mk @@ -0,0 +1,10 @@ + +LOCAL_SRC_FILES += SurfaceFlingerConfigs.cpp + +ifneq ($(VSYNC_EVENT_PHASE_OFFSET_NS),) + LOCAL_CFLAGS += -DVSYNC_EVENT_PHASE_OFFSET_NS=$(VSYNC_EVENT_PHASE_OFFSET_NS) +endif + +ifeq ($(NUM_FRAMEBUFFER_SURFACE_BUFFERS),3) + LOCAL_CFLAGS += -DUSE_TRIPLE_FRAMEBUFFER +endif diff --git a/configstore/1.0/types.hal b/configstore/1.0/types.hal new file mode 100644 index 0000000000..49e9befa60 --- /dev/null +++ b/configstore/1.0/types.hal @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2017 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.configstore@1.0; + +struct OptionalBool { + bool specified; + bool value; +}; + +struct OptionalInt32 { + bool specified; + int32_t value; +}; + +struct OptionalUInt32 { + bool specified; + uint32_t value; +}; + +struct OptionalInt64 { + bool specified; + int64_t value; +}; + +struct OptionalUInt64 { + bool specified; + uint64_t value; +}; + +struct OptionalString { + bool specified; + string value; +}; diff --git a/configstore/Android.bp b/configstore/Android.bp new file mode 100644 index 0000000000..79b63f60bc --- /dev/null +++ b/configstore/Android.bp @@ -0,0 +1,5 @@ +// This is an autogenerated file, do not edit. +subdirs = [ + "1.0", + "utils", +] diff --git a/configstore/utils/Android.bp b/configstore/utils/Android.bp new file mode 100644 index 0000000000..aa420d19e0 --- /dev/null +++ b/configstore/utils/Android.bp @@ -0,0 +1,27 @@ +// +// Copyright (C) 2017 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_library_headers { + name: "android.hardware.configstore-utils", + defaults: ["hidl_defaults"], + export_include_dirs: ["include"], + shared_libs: [ + "libhidlbase" + ], + export_shared_lib_headers: [ + "libhidlbase" + ], +} diff --git a/configstore/utils/include/configstore/Utils.h b/configstore/utils/include/configstore/Utils.h new file mode 100644 index 0000000000..98ccae904f --- /dev/null +++ b/configstore/utils/include/configstore/Utils.h @@ -0,0 +1,94 @@ +// +// Copyright (C) 2017 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. +// + +#ifndef ANDROID_HARDWARE_CONFIGSTORE_UTILS_H +#define ANDROID_HARDWARE_CONFIGSTORE_UTILS_H + +#include +#include + +namespace android { +namespace hardware { +namespace configstore { +// arguments V: type for the value (i.e., OptionalXXX) +// I: interface class name +// func: member function pointer +using namespace V1_0; + +template (I::* func) + (std::function)> +decltype(V::value) get(const decltype(V::value) &defValue) { + auto getHelper = []()->V { + V ret; + sp configs = I::getService(); + + if (!configs.get()) { + // fallback to the default value + ret.specified = false; + } else { + (*configs.*func)([&ret](V v) { + ret = v; + }); + } + + return ret; + }; + static V cachedValue = getHelper(); + + return cachedValue.specified ? cachedValue.value : defValue; +} + +template (I::* func) + (std::function)> +bool getBool(const bool defValue) { + return get(defValue); +} + +template (I::* func) + (std::function)> +int32_t getInt32(const int32_t defValue) { + return get(defValue); +} + +template (I::* func) + (std::function)> +uint32_t getUInt32(const uint32_t defValue) { + return get(defValue); +} + +template (I::* func) + (std::function)> +int64_t getInt64(const int64_t defValue) { + return get(defValue); +} + +template (I::* func) + (std::function)> +uint64_t getUInt64(const uint64_t defValue) { + return get(defValue); +} + +template (I::* func) + (std::function)> +std::string getString(const std::string &defValue) { + return get(defValue); +} + +} // namespace configstore +} // namespace hardware +} // namespace android + +#endif // ANDROID_HARDWARE_CONFIGSTORE_UTILS_H