Merge "Default binderized implementation of android.hardware.nfc@1.0" am: a614ac0b88

am: b3bdadd0d0

Change-Id: Ib3f55c9ed8cfa1c9cef2a24c31b7585980b02d8a
This commit is contained in:
Martijn Coenen
2016-09-29 07:53:16 +00:00
committed by android-build-merger
4 changed files with 74 additions and 0 deletions

View File

@@ -6,3 +6,26 @@ LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := Nfc.cpp
LOCAL_SHARED_LIBRARIES := liblog libcutils libhardware libhwbinder libbase libcutils libutils libhidl android.hardware.nfc@1.0
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_MODULE := android.hardware.nfc@1.0-service
LOCAL_INIT_RC := android.hardware.nfc@1.0-service.rc
LOCAL_SRC_FILES := \
service.cpp \
LOCAL_SHARED_LIBRARIES := \
liblog \
libcutils \
libdl \
libbase \
libutils \
libhardware_legacy \
libhardware \
LOCAL_SHARED_LIBRARIES += \
libhwbinder \
libhidl \
android.hardware.nfc@1.0 \
include $(BUILD_EXECUTABLE)

View File

@@ -1,3 +1,6 @@
#define LOG_TAG "android.hardware.nfc@1.0-impl"
#include <utils/Log.h>
#include <hardware/hardware.h>
#include <hardware/nfc.h>
#include "Nfc.h"

View File

@@ -0,0 +1,4 @@
service nfc_hal_service /system/bin/hw/android.hardware.nfc@1.0-service
class hal
user nfc
group nfc readproc

View File

@@ -0,0 +1,44 @@
#define LOG_TAG "android.hardware.nfc@1.0-service"
#include <utils/Log.h>
#include <iostream>
#include <unistd.h>
#include <android/hardware/nfc/1.0/INfc.h>
#include <hidl/IServiceManager.h>
#include <hwbinder/IPCThreadState.h>
#include <hwbinder/ProcessState.h>
#include <utils/Errors.h>
#include <utils/StrongPointer.h>
using android::sp;
// libhwbinder:
using android::hardware::IPCThreadState;
using android::hardware::ProcessState;
// Generated HIDL files
using android::hardware::nfc::V1_0::INfc;
int main() {
ALOGI("Service is starting.");
const char instance[] = "nfc_nci";
ALOGI("Retrieving default implementation of instance %s.",
instance);
android::sp<INfc> service = INfc::getService(instance, true);
if (service.get() == nullptr) {
ALOGE("INfc::getService returned NULL, exiting");
return -1;
}
ALOGI("Default implementation using %s is %s",
instance, (service->isRemote() ? "REMOTE" : "LOCAL"));
LOG_FATAL_IF(service->isRemote(), "Implementation is REMOTE!");
ALOGI("Registering instance %s.", instance);
service->registerAsService("nfc_nci");
ALOGI("Ready.");
ProcessState::self()->setThreadPoolMaxThreadCount(0);
ProcessState::self()->startThreadPool();
IPCThreadState::self()->joinThreadPool();
}