hidl: consumerir: Setup boilerplate code for HIDL hal

Change-Id: I5347b6b7d2b12f4f5ae0990503e50f22850746fb
tirimbino
Paul Keith 5 years ago committed by Jan Altensen
parent af24a5d942
commit bde3a83a2b
No known key found for this signature in database
GPG Key ID: 3E45BB95F7AD33DA
  1. 25
      hidl/consumerir/Android.bp
  2. 42
      hidl/consumerir/Android.mk
  3. 23
      hidl/consumerir/ConsumerIr.cpp
  4. 30
      hidl/consumerir/ConsumerIr.h
  5. 4
      hidl/consumerir/android.hardware.ir@1.0-service.samsung.rc
  6. 54
      hidl/consumerir/service.cpp

@ -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",
],
}

@ -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)

@ -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

@ -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

@ -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

@ -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;
}
Loading…
Cancel
Save