hidl: consumerir: Setup boilerplate code for HIDL hal
authorPaul Keith <javelinanddart@gmail.com>
Tue, 28 Jan 2020 02:19:30 +0000 (20:19 -0600)
committerPaul Keith <javelinanddart@gmail.com>
Tue, 28 Jan 2020 02:32:01 +0000 (20:32 -0600)
Change-Id: I5347b6b7d2b12f4f5ae0990503e50f22850746fb

hidl/consumerir/Android.bp [deleted file]
hidl/consumerir/Android.mk [new file with mode: 0644]
hidl/consumerir/ConsumerIr.cpp
hidl/consumerir/ConsumerIr.h
hidl/consumerir/android.hardware.ir@1.0-service.samsung.rc [new file with mode: 0644]
hidl/consumerir/service.cpp [new file with mode: 0644]

diff --git a/hidl/consumerir/Android.bp b/hidl/consumerir/Android.bp
deleted file mode 100644 (file)
index fa275dc..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-cc_library_shared {
-    // FIXME: this should only be -impl for a passthrough hal.
-    // In most cases, to convert this to a binderized implementation, you should:
-    // - change '-impl' to '-service' here and make it a cc_binary instead of a
-    //   cc_library_shared.
-    // - add a *.rc file for this module.
-    // - delete HIDL_FETCH_I* functions.
-    // - call configureRpcThreadpool and registerAsService on the instance.
-    // You may also want to append '-impl/-service' with a specific identifier like
-    // '-vendor' or '-<hardware identifier>' etc to distinguish it.
-    name: "android.hardware.ir@1.0-impl",
-    relative_install_path: "hw",
-    // FIXME: this should be 'vendor: true' for modules that will eventually be
-    // on AOSP.
-    proprietary: true,
-    srcs: [
-        "ConsumerIr.cpp",
-    ],
-    shared_libs: [
-        "libhidlbase",
-        "libhidltransport",
-        "libutils",
-        "android.hardware.ir@1.0",
-    ],
-}
diff --git a/hidl/consumerir/Android.mk b/hidl/consumerir/Android.mk
new file mode 100644 (file)
index 0000000..88b3d94
--- /dev/null
@@ -0,0 +1,42 @@
+#
+# Copyright (C) 2020 The LineageOS 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+    ConsumerIr.cpp \
+    service.cpp
+
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
+
+LOCAL_SHARED_LIBRARIES := \
+    libbase \
+    libbinder \
+    libhidlbase \
+    libhidltransport \
+    libutils \
+    android.hardware.ir@1.0
+
+LOCAL_MODULE := android.hardware.ir@1.0-service.samsung
+LOCAL_INIT_RC := android.hardware.ir@1.0-service.samsung.rc
+LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_OWNER := samsung
+LOCAL_VENDOR_MODULE := true
+
+include $(BUILD_EXECUTABLE)
index c97d5574709e46c2f6f52c64bb23dbca10b29e25..821dbe85eb7f15244d08f48e28627c898a53cd31 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2020 The LineageOS 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 "ConsumerIr.h"
 
 namespace android {
@@ -17,13 +33,6 @@ Return<void> ConsumerIr::getCarrierFreqs(getCarrierFreqs_cb _hidl_cb) {
     return Void();
 }
 
-
-// Methods from ::android::hidl::base::V1_0::IBase follow.
-
-//IConsumerIr* HIDL_FETCH_IConsumerIr(const char* /* name */) {
-    //return new ConsumerIr();
-//}
-//
 }  // namespace implementation
 }  // namespace V1_0
 }  // namespace ir
index 1cac73cc7ed2ea982b7e041b222d3776af8b692e..5adb6214a97437c364e177941d279a7929e90e50 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2020 The LineageOS 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_IR_V1_0_CONSUMERIR_H
 #define ANDROID_HARDWARE_IR_V1_0_CONSUMERIR_H
 
@@ -11,26 +27,16 @@ namespace ir {
 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 ConsumerIr : public IConsumerIr {
+class ConsumerIr : public IConsumerIr {
+  public:
     // Methods from ::android::hardware::ir::V1_0::IConsumerIr follow.
     Return<bool> transmit(int32_t carrierFreq, const hidl_vec<int32_t>& pattern) override;
     Return<void> getCarrierFreqs(getCarrierFreqs_cb _hidl_cb) override;
-
-    // Methods from ::android::hidl::base::V1_0::IBase follow.
-
 };
 
-// FIXME: most likely delete, this is only for passthrough implementations
-// extern "C" IConsumerIr* HIDL_FETCH_IConsumerIr(const char* name);
-
 }  // namespace implementation
 }  // namespace V1_0
 }  // namespace ir
diff --git a/hidl/consumerir/android.hardware.ir@1.0-service.samsung.rc b/hidl/consumerir/android.hardware.ir@1.0-service.samsung.rc
new file mode 100644 (file)
index 0000000..58e8235
--- /dev/null
@@ -0,0 +1,4 @@
+service vendor.ir-hal-1-0 /vendor/bin/hw/android.hardware.ir@1.0-service.samsung
+    class hal
+    user system
+    group system
diff --git a/hidl/consumerir/service.cpp b/hidl/consumerir/service.cpp
new file mode 100644 (file)
index 0000000..ab59a97
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2020 The LineageOS 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.ir@1.0-service.samsung"
+
+#include <android-base/logging.h>
+#include <hidl/HidlTransportSupport.h>
+#include <utils/Errors.h>
+
+#include "ConsumerIr.h"
+
+using android::hardware::configureRpcThreadpool;
+using android::hardware::joinRpcThreadpool;
+
+using android::hardware::ir::V1_0::IConsumerIr;
+using android::hardware::ir::V1_0::implementation::ConsumerIr;
+
+using android::OK;
+using android::sp;
+using android::status_t;
+
+int main() {
+    sp<IConsumerIr> ir = new ConsumerIr();
+
+    configureRpcThreadpool(1, true);
+
+    status_t status = ir->registerAsService();
+
+    if (status != OK) {
+        LOG(ERROR) << "Could not register service for IR HAL";
+        goto shutdown;
+    }
+
+    LOG(INFO) << "IR HAL service is Ready.";
+    joinRpcThreadpool();
+
+shutdown:
+    // In normal operation, we don't expect the thread pool to shutdown
+    LOG(ERROR) << "IR HAL failed to join thread pool.";
+    return 1;
+}