WIP: fix vintf, aidl
diff --git a/adapter/Android.bp b/adapter/Android.bp
index e359de2..ecfd6aa 100644
--- a/adapter/Android.bp
+++ b/adapter/Android.bp
@@ -18,24 +18,20 @@
     name: "android.hardware.biometrics.face@1.0-service.lmodroid",
     defaults: ["hidl_defaults"],
     init_rc: ["android.hardware.biometrics.face@1.0-service.lmodroid.rc"],
-    vintf_fragments: ["manifest_face_lmodroid.xml"],
     relative_install_path: "hw",
     srcs: [
         "BiometricsFace.cpp",
         "FaceHalServiceCallback.cpp",
         "service.cpp",
-        "binder-interfaces/IFaceHalService.cpp",
-        "binder-interfaces/IFaceHalServiceCallback.cpp"
-    ],
-    local_include_dirs: [
-        "binder-interfaces/include"
     ],
     vendor: true,
     shared_libs: [
         "libbinder",
+        "libbinder_ndk",
         "libhidlbase",
         "libutils",
         "liblog",
         "android.hardware.biometrics.face@1.0",
+        "LMOFaceClient_aidl-V1-ndk",
     ],
 }
diff --git a/adapter/BiometricsFace.cpp b/adapter/BiometricsFace.cpp
index 0f97eb6..92d279f 100644
--- a/adapter/BiometricsFace.cpp
+++ b/adapter/BiometricsFace.cpp
@@ -19,7 +19,7 @@
 
 namespace android::hardware::biometrics::face::implementation {
 
-BiometricsFace::BiometricsFace(sp<IFaceHalService> faceHalService) : mFaceHalService(faceHalService) {}
+BiometricsFace::BiometricsFace(IFaceHalService faceHalService) : mFaceHalService(faceHalService) {}
 
 Return<Status> intToStatus(int32_t error) {
     switch (error) {
@@ -50,7 +50,7 @@
 
 Return<Status> BiometricsFace::setActiveUser(int32_t userId, const hidl_string& storePath) {
     int32_t ret = 0;
-    mFaceHalService->setActiveUser(userId, android::String16(storePath.c_str()), &ret);
+    mFaceHalService->setActiveUser(userId, storePath.c_str(), &ret);
     return intToStatus(ret);
 }
 
diff --git a/adapter/BiometricsFace.h b/adapter/BiometricsFace.h
index 4fc6ffc..7e415a7 100644
--- a/adapter/BiometricsFace.h
+++ b/adapter/BiometricsFace.h
@@ -21,9 +21,9 @@
 #include <hidl/Status.h>
 #include <random>
 
-#include <com/libremobileos/faceunlock/client/IFaceHalService.h>
-#include <com/libremobileos/faceunlock/client/IFaceHalServiceCallback.h>
-#include <com/libremobileos/faceunlock/client/BnFaceHalServiceCallback.h>
+#include <aidl/com/libremobileos/faceunlock/client/IFaceHalService.h>
+#include <aidl/com/libremobileos/faceunlock/client/IFaceHalServiceCallback.h>
+#include <aidl/com/libremobileos/faceunlock/client/BnFaceHalServiceCallback.h>
 
 namespace android::hardware::biometrics::face::implementation {
 
@@ -38,13 +38,13 @@
 using ::android::hardware::biometrics::face::V1_0::IBiometricsFaceClientCallback;
 using ::android::hardware::biometrics::face::V1_0::Status;
 
-using ::com::libremobileos::faceunlock::client::BnFaceHalServiceCallback;
-using ::com::libremobileos::faceunlock::client::IFaceHalService;
-using ::com::libremobileos::faceunlock::client::IFaceHalServiceCallback;
+using ::aidl::com::libremobileos::faceunlock::client::BnFaceHalServiceCallback;
+using ::aidl::com::libremobileos::faceunlock::client::IFaceHalService;
+using ::aidl::com::libremobileos::faceunlock::client::IFaceHalServiceCallback;
 
 class BiometricsFace : public V1_0::IBiometricsFace {
   public:
-    BiometricsFace(sp<IFaceHalService>);
+    BiometricsFace(IFaceHalService);
 
     // Methods from ::android::hardware::biometrics::face::V1_0::IBiometricsFace follow.
     Return<void> setCallback(const sp<IBiometricsFaceClientCallback>& clientCallback,
diff --git a/adapter/FaceHalServiceCallback.cpp b/adapter/FaceHalServiceCallback.cpp
index d1d6142..3415e8e 100644
--- a/adapter/FaceHalServiceCallback.cpp
+++ b/adapter/FaceHalServiceCallback.cpp
@@ -24,41 +24,41 @@
 FaceHalServiceCallback::FaceHalServiceCallback(sp<IBiometricsFaceClientCallback> biometricsFaceClientCallback) : mBiometricsFaceClientCallback(biometricsFaceClientCallback) {}
 
 // Methods from ::com::libremobileos::faceunlock::client::IFaceHalServiceCallback follow.
-::android::binder::Status FaceHalServiceCallback::onEnrollResult(int64_t deviceId, int32_t faceId, int32_t userId, int32_t remaining) {
+::ndk::ScopedAStatus FaceHalServiceCallback::onEnrollResult(int64_t deviceId, int32_t faceId, int32_t userId, int32_t remaining) {
     mBiometricsFaceClientCallback->onEnrollResult(deviceId, faceId, userId, remaining);
-    return ::android::binder::Status::ok();
+    return ::ndk::ScopedAStatus::ok();
 }
 
-::android::binder::Status FaceHalServiceCallback::onAuthenticated(int64_t deviceId, int32_t faceId, int32_t userId, const ::std::vector<uint8_t> &token) {
+::ndk::ScopedAStatus FaceHalServiceCallback::onAuthenticated(int64_t deviceId, int32_t faceId, int32_t userId, const ::std::vector<uint8_t> &token) {
     mBiometricsFaceClientCallback->onAuthenticated(deviceId, faceId, userId, token);
-    return ::android::binder::Status::ok();
+    return ::ndk::ScopedAStatus::ok();
 }
 
-::android::binder::Status FaceHalServiceCallback::onAcquired(int64_t deviceId, int32_t userId, int32_t acquiredInfo, int32_t vendorCode) {
+::ndk::ScopedAStatus FaceHalServiceCallback::onAcquired(int64_t deviceId, int32_t userId, int32_t acquiredInfo, int32_t vendorCode) {
     mBiometricsFaceClientCallback->onAcquired(deviceId, userId, static_cast<FaceAcquiredInfo>(acquiredInfo), vendorCode);
-    return ::android::binder::Status::ok();
+    return ::ndk::ScopedAStatus::ok();
 }
 
-::android::binder::Status FaceHalServiceCallback::onError(int64_t deviceId, int32_t userId, int32_t error, int32_t vendorCode) {
+::ndk::ScopedAStatus FaceHalServiceCallback::onError(int64_t deviceId, int32_t userId, int32_t error, int32_t vendorCode) {
     mBiometricsFaceClientCallback->onError(deviceId, userId, static_cast<FaceError>(error), vendorCode);
-    return ::android::binder::Status::ok();
+    return ::ndk::ScopedAStatus::ok();
 }
 
-::android::binder::Status FaceHalServiceCallback::onRemoved(int64_t deviceId, const ::std::vector<int32_t> &faceIds, int32_t userId) {
+::ndk::ScopedAStatus FaceHalServiceCallback::onRemoved(int64_t deviceId, const ::std::vector<int32_t> &faceIds, int32_t userId) {
     std::vector<uint32_t> ufaceIds(begin(faceIds), end(faceIds));
     mBiometricsFaceClientCallback->onRemoved(deviceId, ufaceIds, userId);
-    return ::android::binder::Status::ok();
+    return ::ndk::ScopedAStatus::ok();
 }
 
-::android::binder::Status FaceHalServiceCallback::onEnumerate(int64_t deviceId, const ::std::vector<int32_t> &faceIds, int32_t userId) {
+::ndk::ScopedAStatus FaceHalServiceCallback::onEnumerate(int64_t deviceId, const ::std::vector<int32_t> &faceIds, int32_t userId) {
     std::vector<uint32_t> ufaceIds(begin(faceIds), end(faceIds));
     mBiometricsFaceClientCallback->onEnumerate(deviceId, ufaceIds, userId);
-    return ::android::binder::Status::ok();
+    return ::ndk::ScopedAStatus::ok();
 }
 
-::android::binder::Status FaceHalServiceCallback::onLockoutChanged(int64_t duration) {
+::ndk::ScopedAStatus FaceHalServiceCallback::onLockoutChanged(int64_t duration) {
     mBiometricsFaceClientCallback->onLockoutChanged(duration);
-    return ::android::binder::Status::ok();
+    return ::ndk::ScopedAStatus::ok();
 }
 
 }  // namespace android::hardware::biometrics::face::implementation
diff --git a/adapter/FaceHalServiceCallback.h b/adapter/FaceHalServiceCallback.h
index 8db0200..abf44df 100644
--- a/adapter/FaceHalServiceCallback.h
+++ b/adapter/FaceHalServiceCallback.h
@@ -24,20 +24,20 @@
 public:
     FaceHalServiceCallback(sp<IBiometricsFaceClientCallback>);
 
-    // Methods from ::com::libremobileos::faceunlock::client::IFaceHalServiceCallback follow.
-    ::android::binder::Status onEnrollResult(int64_t deviceId, int32_t faceId, int32_t userId, int32_t remaining) override;
+    // Methods from ::aidl::com::libremobileos::faceunlock::client::IFaceHalServiceCallback follow.
+    ::ndk::ScopedAStatus onEnrollResult(int64_t deviceId, int32_t faceId, int32_t userId, int32_t remaining) override;
 
-    ::android::binder::Status onAuthenticated(int64_t deviceId, int32_t faceId, int32_t userId, const ::std::vector<uint8_t> &token) override;
+    ::ndk::ScopedAStatus onAuthenticated(int64_t deviceId, int32_t faceId, int32_t userId, const ::std::vector<uint8_t> &token) override;
 
-    ::android::binder::Status onAcquired(int64_t deviceId, int32_t userId, int32_t acquiredInfo, int32_t vendorCode) override;
+    ::ndk::ScopedAStatus onAcquired(int64_t deviceId, int32_t userId, int32_t acquiredInfo, int32_t vendorCode) override;
 
-    ::android::binder::Status onError(int64_t deviceId, int32_t userId, int32_t error, int32_t vendorCode) override;
+    ::ndk::ScopedAStatus onError(int64_t deviceId, int32_t userId, int32_t error, int32_t vendorCode) override;
 
-    ::android::binder::Status onRemoved(int64_t deviceId, const ::std::vector<int32_t> &faceIds, int32_t userId) override;
+    ::ndk::ScopedAStatus onRemoved(int64_t deviceId, const ::std::vector<int32_t> &faceIds, int32_t userId) override;
 
-    ::android::binder::Status onEnumerate(int64_t deviceId, const ::std::vector<int32_t> &faceIds, int32_t userId) override;
+    ::ndk::ScopedAStatus onEnumerate(int64_t deviceId, const ::std::vector<int32_t> &faceIds, int32_t userId) override;
 
-    ::android::binder::Status onLockoutChanged(int64_t duration) override;
+    ::ndk::ScopedAStatus onLockoutChanged(int64_t duration) override;
 
 private:
     sp<IBiometricsFaceClientCallback> mBiometricsFaceClientCallback;
diff --git a/adapter/binder-interfaces/IFaceHalService.cpp b/adapter/binder-interfaces/IFaceHalService.cpp
deleted file mode 100644
index e672760..0000000
--- a/adapter/binder-interfaces/IFaceHalService.cpp
+++ /dev/null
@@ -1,1014 +0,0 @@
-#include <com/libremobileos/faceunlock/client/IFaceHalService.h>
-#include <com/libremobileos/faceunlock/client/BpFaceHalService.h>
-
-namespace com {
-
-namespace libremobileos {
-
-namespace faceunlock {
-
-namespace client {
-
-DO_NOT_DIRECTLY_USE_ME_IMPLEMENT_META_INTERFACE(FaceHalService, "com.libremobileos.faceunlock.client.IFaceHalService")
-
-}  // namespace client
-
-}  // namespace faceunlock
-
-}  // namespace libremobileos
-
-}  // namespace com
-#include <com/libremobileos/faceunlock/client/BpFaceHalService.h>
-#include <com/libremobileos/faceunlock/client/BnFaceHalService.h>
-#include <binder/Parcel.h>
-#include <android-base/macros.h>
-
-namespace com {
-
-namespace libremobileos {
-
-namespace faceunlock {
-
-namespace client {
-
-BpFaceHalService::BpFaceHalService(const ::android::sp<::android::IBinder>& _aidl_impl)
-    : BpInterface<IFaceHalService>(_aidl_impl){
-}
-
-::android::binder::Status BpFaceHalService::getDeviceId(int64_t* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_getDeviceId, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->getDeviceId(_aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readInt64(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::setCallback(const ::android::sp<::com::libremobileos::faceunlock::client::IFaceHalServiceCallback>& callback) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeStrongBinder(::com::libremobileos::faceunlock::client::IFaceHalServiceCallback::asBinder(callback));
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_setCallback, _aidl_data, &_aidl_reply, ::android::IBinder::FLAG_ONEWAY);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->setCallback(callback);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::setActiveUser(int32_t userId, const ::android::String16& storePath, int32_t* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(userId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeString16(storePath);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_setActiveUser, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->setActiveUser(userId, storePath, _aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readInt32(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::generateChallenge(int32_t timeout, int64_t* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(timeout);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_generateChallenge, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->generateChallenge(timeout, _aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readInt64(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::enroll(const ::std::vector<uint8_t>& token, int32_t timeout, const ::std::vector<int32_t>& disabledFeatures, int32_t* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeByteVector(token);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(timeout);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32Vector(disabledFeatures);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_enroll, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->enroll(token, timeout, disabledFeatures, _aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readInt32(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::revokeChallenge(int32_t* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_revokeChallenge, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->revokeChallenge(_aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readInt32(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::setFeature(int32_t feature, bool enable, const ::std::vector<uint8_t>& token, int32_t faceId, int32_t* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(feature);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeBool(enable);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeByteVector(token);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(faceId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_setFeature, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->setFeature(feature, enable, token, faceId, _aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readInt32(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::getFeature(int32_t feature, int32_t faceId, bool* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(feature);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(faceId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_getFeature, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->getFeature(feature, faceId, _aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readBool(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::getAuthenticatorId(int64_t* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_getAuthenticatorId, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->getAuthenticatorId(_aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readInt64(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::cancel(int32_t* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_cancel, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->cancel(_aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readInt32(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::enumerate(int32_t* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_enumerate, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->enumerate(_aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readInt32(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::remove(int32_t faceId, int32_t* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(faceId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_remove, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->remove(faceId, _aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readInt32(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::authenticate(int64_t operationId, int32_t* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt64(operationId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_authenticate, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->authenticate(operationId, _aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readInt32(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::userActivity(int32_t* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_userActivity, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->userActivity(_aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readInt32(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalService::resetLockout(const ::std::vector<uint8_t>& token, int32_t* _aidl_return) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeByteVector(token);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalService::TRANSACTION_resetLockout, _aidl_data, &_aidl_reply, 0);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalService::getDefaultImpl())) {
-     return IFaceHalService::getDefaultImpl()->resetLockout(token, _aidl_return);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_status.readFromParcel(_aidl_reply);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  if (!_aidl_status.isOk()) {
-    return _aidl_status;
-  }
-  _aidl_ret_status = _aidl_reply.readInt32(_aidl_return);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-}  // namespace client
-
-}  // namespace faceunlock
-
-}  // namespace libremobileos
-
-}  // namespace com
-#include <com/libremobileos/faceunlock/client/BnFaceHalService.h>
-#include <binder/Parcel.h>
-#include <binder/Stability.h>
-
-namespace com {
-
-namespace libremobileos {
-
-namespace faceunlock {
-
-namespace client {
-
-BnFaceHalService::BnFaceHalService()
-{
-  ::android::internal::Stability::markCompilationUnit(this);
-}
-
-::android::status_t BnFaceHalService::onTransact(uint32_t _aidl_code, const ::android::Parcel& _aidl_data, ::android::Parcel* _aidl_reply, uint32_t _aidl_flags) {
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  switch (_aidl_code) {
-  case BnFaceHalService::TRANSACTION_getDeviceId:
-  {
-    int64_t _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    ::android::binder::Status _aidl_status(getDeviceId(&_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeInt64(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_setCallback:
-  {
-    ::android::sp<::com::libremobileos::faceunlock::client::IFaceHalServiceCallback> in_callback;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readStrongBinder(&in_callback);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(setCallback(in_callback));
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_setActiveUser:
-  {
-    int32_t in_userId;
-    ::android::String16 in_storePath;
-    int32_t _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_userId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readString16(&in_storePath);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(setActiveUser(in_userId, in_storePath, &_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeInt32(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_generateChallenge:
-  {
-    int32_t in_timeout;
-    int64_t _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_timeout);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(generateChallenge(in_timeout, &_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeInt64(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_enroll:
-  {
-    ::std::vector<uint8_t> in_token;
-    int32_t in_timeout;
-    ::std::vector<int32_t> in_disabledFeatures;
-    int32_t _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readByteVector(&in_token);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_timeout);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32Vector(&in_disabledFeatures);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(enroll(in_token, in_timeout, in_disabledFeatures, &_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeInt32(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_revokeChallenge:
-  {
-    int32_t _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    ::android::binder::Status _aidl_status(revokeChallenge(&_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeInt32(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_setFeature:
-  {
-    int32_t in_feature;
-    bool in_enable;
-    ::std::vector<uint8_t> in_token;
-    int32_t in_faceId;
-    int32_t _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_feature);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readBool(&in_enable);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readByteVector(&in_token);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_faceId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(setFeature(in_feature, in_enable, in_token, in_faceId, &_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeInt32(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_getFeature:
-  {
-    int32_t in_feature;
-    int32_t in_faceId;
-    bool _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_feature);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_faceId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(getFeature(in_feature, in_faceId, &_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeBool(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_getAuthenticatorId:
-  {
-    int64_t _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    ::android::binder::Status _aidl_status(getAuthenticatorId(&_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeInt64(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_cancel:
-  {
-    int32_t _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    ::android::binder::Status _aidl_status(cancel(&_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeInt32(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_enumerate:
-  {
-    int32_t _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    ::android::binder::Status _aidl_status(enumerate(&_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeInt32(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_remove:
-  {
-    int32_t in_faceId;
-    int32_t _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_faceId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(remove(in_faceId, &_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeInt32(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_authenticate:
-  {
-    int64_t in_operationId;
-    int32_t _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt64(&in_operationId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(authenticate(in_operationId, &_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeInt32(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_userActivity:
-  {
-    int32_t _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    ::android::binder::Status _aidl_status(userActivity(&_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeInt32(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  case BnFaceHalService::TRANSACTION_resetLockout:
-  {
-    ::std::vector<uint8_t> in_token;
-    int32_t _aidl_return;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readByteVector(&in_token);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(resetLockout(in_token, &_aidl_return));
-    _aidl_ret_status = _aidl_status.writeToParcel(_aidl_reply);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    if (!_aidl_status.isOk()) {
-      break;
-    }
-    _aidl_ret_status = _aidl_reply->writeInt32(_aidl_return);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-  }
-  break;
-  default:
-  {
-    _aidl_ret_status = ::android::BBinder::onTransact(_aidl_code, _aidl_data, _aidl_reply, _aidl_flags);
-  }
-  break;
-  }
-  if (_aidl_ret_status == ::android::UNEXPECTED_NULL) {
-    _aidl_ret_status = ::android::binder::Status::fromExceptionCode(::android::binder::Status::EX_NULL_POINTER).writeToParcel(_aidl_reply);
-  }
-  return _aidl_ret_status;
-}
-
-}  // namespace client
-
-}  // namespace faceunlock
-
-}  // namespace libremobileos
-
-}  // namespace com
diff --git a/adapter/binder-interfaces/IFaceHalServiceCallback.cpp b/adapter/binder-interfaces/IFaceHalServiceCallback.cpp
deleted file mode 100644
index 5de5f1c..0000000
--- a/adapter/binder-interfaces/IFaceHalServiceCallback.cpp
+++ /dev/null
@@ -1,507 +0,0 @@
-#include <com/libremobileos/faceunlock/client/IFaceHalServiceCallback.h>
-#include <com/libremobileos/faceunlock/client/BpFaceHalServiceCallback.h>
-
-namespace com {
-
-namespace libremobileos {
-
-namespace faceunlock {
-
-namespace client {
-
-DO_NOT_DIRECTLY_USE_ME_IMPLEMENT_META_INTERFACE(FaceHalServiceCallback, "com.libremobileos.faceunlock.client.IFaceHalServiceCallback")
-
-}  // namespace client
-
-}  // namespace faceunlock
-
-}  // namespace libremobileos
-
-}  // namespace com
-#include <com/libremobileos/faceunlock/client/BpFaceHalServiceCallback.h>
-#include <com/libremobileos/faceunlock/client/BnFaceHalServiceCallback.h>
-#include <binder/Parcel.h>
-#include <android-base/macros.h>
-
-namespace com {
-
-namespace libremobileos {
-
-namespace faceunlock {
-
-namespace client {
-
-BpFaceHalServiceCallback::BpFaceHalServiceCallback(const ::android::sp<::android::IBinder>& _aidl_impl)
-    : BpInterface<IFaceHalServiceCallback>(_aidl_impl){
-}
-
-::android::binder::Status BpFaceHalServiceCallback::onEnrollResult(int64_t deviceId, int32_t faceId, int32_t userId, int32_t remaining) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt64(deviceId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(faceId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(userId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(remaining);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalServiceCallback::TRANSACTION_onEnrollResult, _aidl_data, &_aidl_reply, ::android::IBinder::FLAG_ONEWAY);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalServiceCallback::getDefaultImpl())) {
-     return IFaceHalServiceCallback::getDefaultImpl()->onEnrollResult(deviceId, faceId, userId, remaining);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalServiceCallback::onAuthenticated(int64_t deviceId, int32_t faceId, int32_t userId, const ::std::vector<uint8_t>& token) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt64(deviceId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(faceId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(userId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeByteVector(token);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalServiceCallback::TRANSACTION_onAuthenticated, _aidl_data, &_aidl_reply, ::android::IBinder::FLAG_ONEWAY);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalServiceCallback::getDefaultImpl())) {
-     return IFaceHalServiceCallback::getDefaultImpl()->onAuthenticated(deviceId, faceId, userId, token);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalServiceCallback::onAcquired(int64_t deviceId, int32_t userId, int32_t acquiredInfo, int32_t vendorCode) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt64(deviceId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(userId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(acquiredInfo);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(vendorCode);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalServiceCallback::TRANSACTION_onAcquired, _aidl_data, &_aidl_reply, ::android::IBinder::FLAG_ONEWAY);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalServiceCallback::getDefaultImpl())) {
-     return IFaceHalServiceCallback::getDefaultImpl()->onAcquired(deviceId, userId, acquiredInfo, vendorCode);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalServiceCallback::onError(int64_t deviceId, int32_t userId, int32_t error, int32_t vendorCode) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt64(deviceId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(userId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(error);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(vendorCode);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalServiceCallback::TRANSACTION_onError, _aidl_data, &_aidl_reply, ::android::IBinder::FLAG_ONEWAY);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalServiceCallback::getDefaultImpl())) {
-     return IFaceHalServiceCallback::getDefaultImpl()->onError(deviceId, userId, error, vendorCode);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalServiceCallback::onRemoved(int64_t deviceId, const ::std::vector<int32_t>& faceIds, int32_t userId) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt64(deviceId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32Vector(faceIds);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(userId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalServiceCallback::TRANSACTION_onRemoved, _aidl_data, &_aidl_reply, ::android::IBinder::FLAG_ONEWAY);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalServiceCallback::getDefaultImpl())) {
-     return IFaceHalServiceCallback::getDefaultImpl()->onRemoved(deviceId, faceIds, userId);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalServiceCallback::onEnumerate(int64_t deviceId, const ::std::vector<int32_t>& faceIds, int32_t userId) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt64(deviceId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32Vector(faceIds);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt32(userId);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalServiceCallback::TRANSACTION_onEnumerate, _aidl_data, &_aidl_reply, ::android::IBinder::FLAG_ONEWAY);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalServiceCallback::getDefaultImpl())) {
-     return IFaceHalServiceCallback::getDefaultImpl()->onEnumerate(deviceId, faceIds, userId);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-::android::binder::Status BpFaceHalServiceCallback::onLockoutChanged(int64_t duration) {
-  ::android::Parcel _aidl_data;
-  _aidl_data.markForBinder(remoteStrong());
-  ::android::Parcel _aidl_reply;
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  ::android::binder::Status _aidl_status;
-  _aidl_ret_status = _aidl_data.writeInterfaceToken(getInterfaceDescriptor());
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = _aidl_data.writeInt64(duration);
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_ret_status = remote()->transact(BnFaceHalServiceCallback::TRANSACTION_onLockoutChanged, _aidl_data, &_aidl_reply, ::android::IBinder::FLAG_ONEWAY);
-  if (UNLIKELY(_aidl_ret_status == ::android::UNKNOWN_TRANSACTION && IFaceHalServiceCallback::getDefaultImpl())) {
-     return IFaceHalServiceCallback::getDefaultImpl()->onLockoutChanged(duration);
-  }
-  if (((_aidl_ret_status) != (::android::OK))) {
-    goto _aidl_error;
-  }
-  _aidl_error:
-  _aidl_status.setFromStatusT(_aidl_ret_status);
-  return _aidl_status;
-}
-
-}  // namespace client
-
-}  // namespace faceunlock
-
-}  // namespace libremobileos
-
-}  // namespace com
-#include <com/libremobileos/faceunlock/client/BnFaceHalServiceCallback.h>
-#include <binder/Parcel.h>
-#include <binder/Stability.h>
-
-namespace com {
-
-namespace libremobileos {
-
-namespace faceunlock {
-
-namespace client {
-
-BnFaceHalServiceCallback::BnFaceHalServiceCallback()
-{
-  ::android::internal::Stability::markCompilationUnit(this);
-}
-
-::android::status_t BnFaceHalServiceCallback::onTransact(uint32_t _aidl_code, const ::android::Parcel& _aidl_data, ::android::Parcel* _aidl_reply, uint32_t _aidl_flags) {
-  ::android::status_t _aidl_ret_status = ::android::OK;
-  switch (_aidl_code) {
-  case BnFaceHalServiceCallback::TRANSACTION_onEnrollResult:
-  {
-    int64_t in_deviceId;
-    int32_t in_faceId;
-    int32_t in_userId;
-    int32_t in_remaining;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt64(&in_deviceId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_faceId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_userId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_remaining);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(onEnrollResult(in_deviceId, in_faceId, in_userId, in_remaining));
-  }
-  break;
-  case BnFaceHalServiceCallback::TRANSACTION_onAuthenticated:
-  {
-    int64_t in_deviceId;
-    int32_t in_faceId;
-    int32_t in_userId;
-    ::std::vector<uint8_t> in_token;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt64(&in_deviceId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_faceId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_userId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readByteVector(&in_token);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(onAuthenticated(in_deviceId, in_faceId, in_userId, in_token));
-  }
-  break;
-  case BnFaceHalServiceCallback::TRANSACTION_onAcquired:
-  {
-    int64_t in_deviceId;
-    int32_t in_userId;
-    int32_t in_acquiredInfo;
-    int32_t in_vendorCode;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt64(&in_deviceId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_userId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_acquiredInfo);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_vendorCode);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(onAcquired(in_deviceId, in_userId, in_acquiredInfo, in_vendorCode));
-  }
-  break;
-  case BnFaceHalServiceCallback::TRANSACTION_onError:
-  {
-    int64_t in_deviceId;
-    int32_t in_userId;
-    int32_t in_error;
-    int32_t in_vendorCode;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt64(&in_deviceId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_userId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_error);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_vendorCode);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(onError(in_deviceId, in_userId, in_error, in_vendorCode));
-  }
-  break;
-  case BnFaceHalServiceCallback::TRANSACTION_onRemoved:
-  {
-    int64_t in_deviceId;
-    ::std::vector<int32_t> in_faceIds;
-    int32_t in_userId;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt64(&in_deviceId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32Vector(&in_faceIds);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_userId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(onRemoved(in_deviceId, in_faceIds, in_userId));
-  }
-  break;
-  case BnFaceHalServiceCallback::TRANSACTION_onEnumerate:
-  {
-    int64_t in_deviceId;
-    ::std::vector<int32_t> in_faceIds;
-    int32_t in_userId;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt64(&in_deviceId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32Vector(&in_faceIds);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt32(&in_userId);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(onEnumerate(in_deviceId, in_faceIds, in_userId));
-  }
-  break;
-  case BnFaceHalServiceCallback::TRANSACTION_onLockoutChanged:
-  {
-    int64_t in_duration;
-    if (!(_aidl_data.checkInterface(this))) {
-      _aidl_ret_status = ::android::BAD_TYPE;
-      break;
-    }
-    _aidl_ret_status = _aidl_data.readInt64(&in_duration);
-    if (((_aidl_ret_status) != (::android::OK))) {
-      break;
-    }
-    ::android::binder::Status _aidl_status(onLockoutChanged(in_duration));
-  }
-  break;
-  default:
-  {
-    _aidl_ret_status = ::android::BBinder::onTransact(_aidl_code, _aidl_data, _aidl_reply, _aidl_flags);
-  }
-  break;
-  }
-  if (_aidl_ret_status == ::android::UNEXPECTED_NULL) {
-    _aidl_ret_status = ::android::binder::Status::fromExceptionCode(::android::binder::Status::EX_NULL_POINTER).writeToParcel(_aidl_reply);
-  }
-  return _aidl_ret_status;
-}
-
-}  // namespace client
-
-}  // namespace faceunlock
-
-}  // namespace libremobileos
-
-}  // namespace com
diff --git a/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/BnFaceHalService.h b/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/BnFaceHalService.h
deleted file mode 100644
index 6845397..0000000
--- a/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/BnFaceHalService.h
+++ /dev/null
@@ -1,41 +0,0 @@
-#pragma once
-
-#include <binder/IInterface.h>
-#include <com/libremobileos/faceunlock/client/IFaceHalService.h>
-
-namespace com {
-
-namespace libremobileos {
-
-namespace faceunlock {
-
-namespace client {
-
-class BnFaceHalService : public ::android::BnInterface<IFaceHalService> {
-public:
-  static constexpr uint32_t TRANSACTION_getDeviceId = ::android::IBinder::FIRST_CALL_TRANSACTION + 0;
-  static constexpr uint32_t TRANSACTION_setCallback = ::android::IBinder::FIRST_CALL_TRANSACTION + 1;
-  static constexpr uint32_t TRANSACTION_setActiveUser = ::android::IBinder::FIRST_CALL_TRANSACTION + 2;
-  static constexpr uint32_t TRANSACTION_generateChallenge = ::android::IBinder::FIRST_CALL_TRANSACTION + 3;
-  static constexpr uint32_t TRANSACTION_enroll = ::android::IBinder::FIRST_CALL_TRANSACTION + 4;
-  static constexpr uint32_t TRANSACTION_revokeChallenge = ::android::IBinder::FIRST_CALL_TRANSACTION + 5;
-  static constexpr uint32_t TRANSACTION_setFeature = ::android::IBinder::FIRST_CALL_TRANSACTION + 6;
-  static constexpr uint32_t TRANSACTION_getFeature = ::android::IBinder::FIRST_CALL_TRANSACTION + 7;
-  static constexpr uint32_t TRANSACTION_getAuthenticatorId = ::android::IBinder::FIRST_CALL_TRANSACTION + 8;
-  static constexpr uint32_t TRANSACTION_cancel = ::android::IBinder::FIRST_CALL_TRANSACTION + 9;
-  static constexpr uint32_t TRANSACTION_enumerate = ::android::IBinder::FIRST_CALL_TRANSACTION + 10;
-  static constexpr uint32_t TRANSACTION_remove = ::android::IBinder::FIRST_CALL_TRANSACTION + 11;
-  static constexpr uint32_t TRANSACTION_authenticate = ::android::IBinder::FIRST_CALL_TRANSACTION + 12;
-  static constexpr uint32_t TRANSACTION_userActivity = ::android::IBinder::FIRST_CALL_TRANSACTION + 13;
-  static constexpr uint32_t TRANSACTION_resetLockout = ::android::IBinder::FIRST_CALL_TRANSACTION + 14;
-  explicit BnFaceHalService();
-  ::android::status_t onTransact(uint32_t _aidl_code, const ::android::Parcel& _aidl_data, ::android::Parcel* _aidl_reply, uint32_t _aidl_flags) override;
-};  // class BnFaceHalService
-
-}  // namespace client
-
-}  // namespace faceunlock
-
-}  // namespace libremobileos
-
-}  // namespace com
diff --git a/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/BnFaceHalServiceCallback.h b/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/BnFaceHalServiceCallback.h
deleted file mode 100644
index aa3be49..0000000
--- a/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/BnFaceHalServiceCallback.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#pragma once
-
-#include <binder/IInterface.h>
-#include <com/libremobileos/faceunlock/client/IFaceHalServiceCallback.h>
-
-namespace com {
-
-namespace libremobileos {
-
-namespace faceunlock {
-
-namespace client {
-
-class BnFaceHalServiceCallback : public ::android::BnInterface<IFaceHalServiceCallback> {
-public:
-  static constexpr uint32_t TRANSACTION_onEnrollResult = ::android::IBinder::FIRST_CALL_TRANSACTION + 0;
-  static constexpr uint32_t TRANSACTION_onAuthenticated = ::android::IBinder::FIRST_CALL_TRANSACTION + 1;
-  static constexpr uint32_t TRANSACTION_onAcquired = ::android::IBinder::FIRST_CALL_TRANSACTION + 2;
-  static constexpr uint32_t TRANSACTION_onError = ::android::IBinder::FIRST_CALL_TRANSACTION + 3;
-  static constexpr uint32_t TRANSACTION_onRemoved = ::android::IBinder::FIRST_CALL_TRANSACTION + 4;
-  static constexpr uint32_t TRANSACTION_onEnumerate = ::android::IBinder::FIRST_CALL_TRANSACTION + 5;
-  static constexpr uint32_t TRANSACTION_onLockoutChanged = ::android::IBinder::FIRST_CALL_TRANSACTION + 6;
-  explicit BnFaceHalServiceCallback();
-  ::android::status_t onTransact(uint32_t _aidl_code, const ::android::Parcel& _aidl_data, ::android::Parcel* _aidl_reply, uint32_t _aidl_flags) override;
-};  // class BnFaceHalServiceCallback
-
-}  // namespace client
-
-}  // namespace faceunlock
-
-}  // namespace libremobileos
-
-}  // namespace com
diff --git a/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/BpFaceHalService.h b/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/BpFaceHalService.h
deleted file mode 100644
index f21a52d..0000000
--- a/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/BpFaceHalService.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#pragma once
-
-#include <binder/IBinder.h>
-#include <binder/IInterface.h>
-#include <utils/Errors.h>
-#include <com/libremobileos/faceunlock/client/IFaceHalService.h>
-
-namespace com {
-
-namespace libremobileos {
-
-namespace faceunlock {
-
-namespace client {
-
-class BpFaceHalService : public ::android::BpInterface<IFaceHalService> {
-public:
-  explicit BpFaceHalService(const ::android::sp<::android::IBinder>& _aidl_impl);
-  virtual ~BpFaceHalService() = default;
-  ::android::binder::Status getDeviceId(int64_t* _aidl_return) override;
-  ::android::binder::Status setCallback(const ::android::sp<::com::libremobileos::faceunlock::client::IFaceHalServiceCallback>& callback) override;
-  ::android::binder::Status setActiveUser(int32_t userId, const ::android::String16& storePath, int32_t* _aidl_return) override;
-  ::android::binder::Status generateChallenge(int32_t timeout, int64_t* _aidl_return) override;
-  ::android::binder::Status enroll(const ::std::vector<uint8_t>& token, int32_t timeout, const ::std::vector<int32_t>& disabledFeatures, int32_t* _aidl_return) override;
-  ::android::binder::Status revokeChallenge(int32_t* _aidl_return) override;
-  ::android::binder::Status setFeature(int32_t feature, bool enable, const ::std::vector<uint8_t>& token, int32_t faceId, int32_t* _aidl_return) override;
-  ::android::binder::Status getFeature(int32_t feature, int32_t faceId, bool* _aidl_return) override;
-  ::android::binder::Status getAuthenticatorId(int64_t* _aidl_return) override;
-  ::android::binder::Status cancel(int32_t* _aidl_return) override;
-  ::android::binder::Status enumerate(int32_t* _aidl_return) override;
-  ::android::binder::Status remove(int32_t faceId, int32_t* _aidl_return) override;
-  ::android::binder::Status authenticate(int64_t operationId, int32_t* _aidl_return) override;
-  ::android::binder::Status userActivity(int32_t* _aidl_return) override;
-  ::android::binder::Status resetLockout(const ::std::vector<uint8_t>& token, int32_t* _aidl_return) override;
-};  // class BpFaceHalService
-
-}  // namespace client
-
-}  // namespace faceunlock
-
-}  // namespace libremobileos
-
-}  // namespace com
diff --git a/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/BpFaceHalServiceCallback.h b/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/BpFaceHalServiceCallback.h
deleted file mode 100644
index 4cfa324..0000000
--- a/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/BpFaceHalServiceCallback.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#pragma once
-
-#include <binder/IBinder.h>
-#include <binder/IInterface.h>
-#include <utils/Errors.h>
-#include <com/libremobileos/faceunlock/client/IFaceHalServiceCallback.h>
-
-namespace com {
-
-namespace libremobileos {
-
-namespace faceunlock {
-
-namespace client {
-
-class BpFaceHalServiceCallback : public ::android::BpInterface<IFaceHalServiceCallback> {
-public:
-  explicit BpFaceHalServiceCallback(const ::android::sp<::android::IBinder>& _aidl_impl);
-  virtual ~BpFaceHalServiceCallback() = default;
-  ::android::binder::Status onEnrollResult(int64_t deviceId, int32_t faceId, int32_t userId, int32_t remaining) override;
-  ::android::binder::Status onAuthenticated(int64_t deviceId, int32_t faceId, int32_t userId, const ::std::vector<uint8_t>& token) override;
-  ::android::binder::Status onAcquired(int64_t deviceId, int32_t userId, int32_t acquiredInfo, int32_t vendorCode) override;
-  ::android::binder::Status onError(int64_t deviceId, int32_t userId, int32_t error, int32_t vendorCode) override;
-  ::android::binder::Status onRemoved(int64_t deviceId, const ::std::vector<int32_t>& faceIds, int32_t userId) override;
-  ::android::binder::Status onEnumerate(int64_t deviceId, const ::std::vector<int32_t>& faceIds, int32_t userId) override;
-  ::android::binder::Status onLockoutChanged(int64_t duration) override;
-};  // class BpFaceHalServiceCallback
-
-}  // namespace client
-
-}  // namespace faceunlock
-
-}  // namespace libremobileos
-
-}  // namespace com
diff --git a/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/IFaceHalService.h b/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/IFaceHalService.h
deleted file mode 100644
index 3905045..0000000
--- a/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/IFaceHalService.h
+++ /dev/null
@@ -1,98 +0,0 @@
-#pragma once
-
-#include <binder/IBinder.h>
-#include <binder/IInterface.h>
-#include <binder/Status.h>
-#include <com/libremobileos/faceunlock/client/IFaceHalServiceCallback.h>
-#include <cstdint>
-#include <utils/String16.h>
-#include <utils/StrongPointer.h>
-#include <vector>
-
-namespace com {
-
-namespace libremobileos {
-
-namespace faceunlock {
-
-namespace client {
-
-class IFaceHalService : public ::android::IInterface {
-public:
-  DECLARE_META_INTERFACE(FaceHalService)
-  virtual ::android::binder::Status getDeviceId(int64_t* _aidl_return) = 0;
-  virtual ::android::binder::Status setCallback(const ::android::sp<::com::libremobileos::faceunlock::client::IFaceHalServiceCallback>& callback) = 0;
-  virtual ::android::binder::Status setActiveUser(int32_t userId, const ::android::String16& storePath, int32_t* _aidl_return) = 0;
-  virtual ::android::binder::Status generateChallenge(int32_t timeout, int64_t* _aidl_return) = 0;
-  virtual ::android::binder::Status enroll(const ::std::vector<uint8_t>& token, int32_t timeout, const ::std::vector<int32_t>& disabledFeatures, int32_t* _aidl_return) = 0;
-  virtual ::android::binder::Status revokeChallenge(int32_t* _aidl_return) = 0;
-  virtual ::android::binder::Status setFeature(int32_t feature, bool enable, const ::std::vector<uint8_t>& token, int32_t faceId, int32_t* _aidl_return) = 0;
-  virtual ::android::binder::Status getFeature(int32_t feature, int32_t faceId, bool* _aidl_return) = 0;
-  virtual ::android::binder::Status getAuthenticatorId(int64_t* _aidl_return) = 0;
-  virtual ::android::binder::Status cancel(int32_t* _aidl_return) = 0;
-  virtual ::android::binder::Status enumerate(int32_t* _aidl_return) = 0;
-  virtual ::android::binder::Status remove(int32_t faceId, int32_t* _aidl_return) = 0;
-  virtual ::android::binder::Status authenticate(int64_t operationId, int32_t* _aidl_return) = 0;
-  virtual ::android::binder::Status userActivity(int32_t* _aidl_return) = 0;
-  virtual ::android::binder::Status resetLockout(const ::std::vector<uint8_t>& token, int32_t* _aidl_return) = 0;
-};  // class IFaceHalService
-
-class IFaceHalServiceDefault : public IFaceHalService {
-public:
-  ::android::IBinder* onAsBinder() override {
-    return nullptr;
-  }
-  ::android::binder::Status getDeviceId(int64_t*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status setCallback(const ::android::sp<::com::libremobileos::faceunlock::client::IFaceHalServiceCallback>&) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status setActiveUser(int32_t, const ::android::String16&, int32_t*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status generateChallenge(int32_t, int64_t*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status enroll(const ::std::vector<uint8_t>&, int32_t, const ::std::vector<int32_t>&, int32_t*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status revokeChallenge(int32_t*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status setFeature(int32_t, bool, const ::std::vector<uint8_t>&, int32_t, int32_t*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status getFeature(int32_t, int32_t, bool*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status getAuthenticatorId(int64_t*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status cancel(int32_t*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status enumerate(int32_t*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status remove(int32_t, int32_t*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status authenticate(int64_t, int32_t*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status userActivity(int32_t*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status resetLockout(const ::std::vector<uint8_t>&, int32_t*) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-};  // class IFaceHalServiceDefault
-
-}  // namespace client
-
-}  // namespace faceunlock
-
-}  // namespace libremobileos
-
-}  // namespace com
diff --git a/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/IFaceHalServiceCallback.h b/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/IFaceHalServiceCallback.h
deleted file mode 100644
index 544a5fd..0000000
--- a/adapter/binder-interfaces/include/com/libremobileos/faceunlock/client/IFaceHalServiceCallback.h
+++ /dev/null
@@ -1,64 +0,0 @@
-#pragma once
-
-#include <binder/IBinder.h>
-#include <binder/IInterface.h>
-#include <binder/Status.h>
-#include <cstdint>
-#include <utils/StrongPointer.h>
-#include <vector>
-
-namespace com {
-
-namespace libremobileos {
-
-namespace faceunlock {
-
-namespace client {
-
-class IFaceHalServiceCallback : public ::android::IInterface {
-public:
-  DECLARE_META_INTERFACE(FaceHalServiceCallback)
-  virtual ::android::binder::Status onEnrollResult(int64_t deviceId, int32_t faceId, int32_t userId, int32_t remaining) = 0;
-  virtual ::android::binder::Status onAuthenticated(int64_t deviceId, int32_t faceId, int32_t userId, const ::std::vector<uint8_t>& token) = 0;
-  virtual ::android::binder::Status onAcquired(int64_t deviceId, int32_t userId, int32_t acquiredInfo, int32_t vendorCode) = 0;
-  virtual ::android::binder::Status onError(int64_t deviceId, int32_t userId, int32_t error, int32_t vendorCode) = 0;
-  virtual ::android::binder::Status onRemoved(int64_t deviceId, const ::std::vector<int32_t>& faceIds, int32_t userId) = 0;
-  virtual ::android::binder::Status onEnumerate(int64_t deviceId, const ::std::vector<int32_t>& faceIds, int32_t userId) = 0;
-  virtual ::android::binder::Status onLockoutChanged(int64_t duration) = 0;
-};  // class IFaceHalServiceCallback
-
-class IFaceHalServiceCallbackDefault : public IFaceHalServiceCallback {
-public:
-  ::android::IBinder* onAsBinder() override {
-    return nullptr;
-  }
-  ::android::binder::Status onEnrollResult(int64_t, int32_t, int32_t, int32_t) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status onAuthenticated(int64_t, int32_t, int32_t, const ::std::vector<uint8_t>&) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status onAcquired(int64_t, int32_t, int32_t, int32_t) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status onError(int64_t, int32_t, int32_t, int32_t) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status onRemoved(int64_t, const ::std::vector<int32_t>&, int32_t) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status onEnumerate(int64_t, const ::std::vector<int32_t>&, int32_t) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-  ::android::binder::Status onLockoutChanged(int64_t) override {
-    return ::android::binder::Status::fromStatusT(::android::UNKNOWN_TRANSACTION);
-  }
-};  // class IFaceHalServiceCallbackDefault
-
-}  // namespace client
-
-}  // namespace faceunlock
-
-}  // namespace libremobileos
-
-}  // namespace com
diff --git a/adapter/service.cpp b/adapter/service.cpp
index 27a6280..1614511 100644
--- a/adapter/service.cpp
+++ b/adapter/service.cpp
@@ -17,11 +17,10 @@
 #define LOG_TAG "android.hardware.biometrics.face@1.0-service.lmodroid"
 
 #include "BiometricsFace.h"
-#include <binder/IBinder.h>
-#include <binder/IServiceManager.h>
 #include <android/hardware/biometrics/face/1.0/IBiometricsFace.h>
 #include <android/hardware/biometrics/face/1.0/types.h>
 #include <android/log.h>
+#include <android/binder_manager.h>
 #include <binder/ProcessState.h>
 #include <hidl/HidlSupport.h>
 #include <hidl/HidlTransportSupport.h>
@@ -32,31 +31,17 @@
 using android::hardware::joinRpcThreadpool;
 using android::hardware::biometrics::face::implementation::BiometricsFace;
 using android::hardware::biometrics::face::V1_0::IBiometricsFace;
-using ::com::libremobileos::faceunlock::client::IFaceHalService;
+using ::aidl::com::libremobileos::faceunlock::client::IFaceHalService;
 
 int main() {
-    sp<IBinder> binderFaceHal;
-    sp<IFaceHalService> faceHalService = nullptr;
-
     ALOGI("LMODroid BiometricsFace HAL is being started.");
     // the conventional HAL might start binder services
     android::ProcessState::self()->setThreadPoolMaxThreadCount(4);
     android::ProcessState::self()->startThreadPool();
     configureRpcThreadpool(4, true /*callerWillJoin*/);
 
-    unsigned int lastSleep = 1;
-    while (faceHalService == nullptr) {
-        // wait for faceunlockhal service to start
-        ALOGI("Waiting for faceunlockhal service to start...");
-        sleep(lastSleep++);
-        binderFaceHal = android::defaultServiceManager()->getService(android::String16("faceunlockhal"));
-        if (binderFaceHal != nullptr)
-            faceHalService = android::interface_cast<IFaceHalService>(binderFaceHal);
-        else if (lastSleep < 1 || lastSleep > 100) {
-            ALOGI("Gave up waiting for faceunlockhal service to start. Sleeping for a long time...");
-            lastSleep = 999999;
-        }
-    }
+    ALOGI("Waiting for faceunlockhal service to start...");
+    IFaceHalService faceHalService = IFaceHalService::fromBinder(SpAIBinder(AServiceManager_waitForService("faceunlockhal")));
 
     android::sp<IBiometricsFace> face = new BiometricsFace(faceHalService);
     const android::status_t status = face->registerAsService("lmodroid");
diff --git a/app/src/main/Android.bp b/app/src/main/Android.bp
index b45527c..abc147e 100644
--- a/app/src/main/Android.bp
+++ b/app/src/main/Android.bp
@@ -19,4 +19,5 @@
     required: ["LMOFaceUnlockSettingsOverlay"],
     jni_libs: ["libtensorflowlite_jni"],
     init_rc: ["LMOFaceUnlock.rc"],
+    vintf_fragments: ["manifest_face_lmodroid.xml"],
 }
diff --git a/adapter/manifest_face_lmodroid.xml b/app/src/main/manifest_face_lmodroid.xml
similarity index 100%
rename from adapter/manifest_face_lmodroid.xml
rename to app/src/main/manifest_face_lmodroid.xml
diff --git a/framework/Android.bp b/framework/Android.bp
index 6353d1a..546ec1b 100644
--- a/framework/Android.bp
+++ b/framework/Android.bp
@@ -1,12 +1,35 @@
+aidl_interface {
+    name: "LMOFaceClient_aidl",
+    vendor_available: true,
+    srcs: [
+        "client/**/*.aidl",
+    ],
+    local_include_dir: "client",
+    stability: "vintf",
+    // cheat around setting a version
+    owner: "libremobileos",
+    backend: {
+        java: {
+            enabled: true,
+            // markVintfStability() is a platform API
+            platform_apis: true,
+        },
+        cpp: {
+            enabled: true,
+        },
+        ndk: {
+            enabled: true,
+        },
+    },
+}
+
 java_library_static {
     name: "LMOFaceClient",
     platform_apis: true,
-    srcs: ["client/**/*.java", "client/**/*.aidl"],
-    aidl: {
-        include_dirs: [
-            "packages/apps/FaceUnlock/framework/client",
-        ],
-    },
+    srcs: ["client/**/*.java"],
+    static_libs: [
+        "LMOFaceClient_aidl-V1-java",
+    ],
 }
 
 java_library_static {
@@ -18,4 +41,4 @@
         "LMOFaceShared_java",
         "android.hardware.biometrics.face-V1.0-java",
     ],
-}
\ No newline at end of file
+}
diff --git a/framework/aidl_api/LMOFaceClient_aidl/current/com/libremobileos/faceunlock/client/IFaceHalService.aidl b/framework/aidl_api/LMOFaceClient_aidl/current/com/libremobileos/faceunlock/client/IFaceHalService.aidl
new file mode 100644
index 0000000..c68ed3a
--- /dev/null
+++ b/framework/aidl_api/LMOFaceClient_aidl/current/com/libremobileos/faceunlock/client/IFaceHalService.aidl
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2023 LibreMobileOS Foundation
+ *
+ * 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.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package com.libremobileos.faceunlock.client;
+@VintfStability
+interface IFaceHalService {
+  long getDeviceId();
+  oneway void setCallback(in com.libremobileos.faceunlock.client.IFaceHalServiceCallback callback);
+  int setActiveUser(int userId, String storePath);
+  long generateChallenge(int timeout);
+  int enroll(in byte[] token, int timeout, in int[] disabledFeatures);
+  int revokeChallenge();
+  int setFeature(int feature, boolean enable, in byte[] token, int faceId);
+  boolean getFeature(int feature, int faceId);
+  long getAuthenticatorId();
+  int cancel();
+  int enumerate();
+  int remove(int faceId);
+  int authenticate(long operationId);
+  int userActivity();
+  int resetLockout(in byte[] token);
+}
diff --git a/framework/aidl_api/LMOFaceClient_aidl/current/com/libremobileos/faceunlock/client/IFaceHalServiceCallback.aidl b/framework/aidl_api/LMOFaceClient_aidl/current/com/libremobileos/faceunlock/client/IFaceHalServiceCallback.aidl
new file mode 100644
index 0000000..f6fbae6
--- /dev/null
+++ b/framework/aidl_api/LMOFaceClient_aidl/current/com/libremobileos/faceunlock/client/IFaceHalServiceCallback.aidl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2023 LibreMobileOS Foundation
+ *
+ * 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.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package com.libremobileos.faceunlock.client;
+@VintfStability
+interface IFaceHalServiceCallback {
+  oneway void onEnrollResult(long deviceId, int faceId, int userId, int remaining);
+  oneway void onAuthenticated(long deviceId, int faceId, int userId, in byte[] token);
+  oneway void onAcquired(long deviceId, int userId, int acquiredInfo, int vendorCode);
+  oneway void onError(long deviceId, int userId, int error, int vendorCode);
+  oneway void onRemoved(long deviceId, in int[] faceIds, int userId);
+  oneway void onEnumerate(long deviceId, in int[] faceIds, int userId);
+  oneway void onLockoutChanged(long duration);
+}
diff --git a/framework/aidl_api/LMOFaceClient_aidl/current/com/libremobileos/faceunlock/client/IFaceUnlockManager.aidl b/framework/aidl_api/LMOFaceClient_aidl/current/com/libremobileos/faceunlock/client/IFaceUnlockManager.aidl
new file mode 100644
index 0000000..615eb2d
--- /dev/null
+++ b/framework/aidl_api/LMOFaceClient_aidl/current/com/libremobileos/faceunlock/client/IFaceUnlockManager.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2023 LibreMobileOS Foundation
+ *
+ * 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.
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package com.libremobileos.faceunlock.client;
+@VintfStability
+interface IFaceUnlockManager {
+  void enrollResult(int remaining);
+  void error(int error);
+  void finishEnroll(String encodedFaces, in byte[] token);
+}
diff --git a/framework/client/com/libremobileos/faceunlock/client/IFaceHalService.aidl b/framework/client/com/libremobileos/faceunlock/client/IFaceHalService.aidl
index 33b396c..55a79dd 100644
--- a/framework/client/com/libremobileos/faceunlock/client/IFaceHalService.aidl
+++ b/framework/client/com/libremobileos/faceunlock/client/IFaceHalService.aidl
@@ -18,6 +18,7 @@
 
 import com.libremobileos.faceunlock.client.IFaceHalServiceCallback;
 
+@VintfStability
 interface IFaceHalService {
     long getDeviceId();
 
@@ -48,4 +49,4 @@
     int userActivity();
 
     int resetLockout(in byte[] token);
-}
\ No newline at end of file
+}
diff --git a/framework/client/com/libremobileos/faceunlock/client/IFaceHalServiceCallback.aidl b/framework/client/com/libremobileos/faceunlock/client/IFaceHalServiceCallback.aidl
index 5713d98..379ab42 100644
--- a/framework/client/com/libremobileos/faceunlock/client/IFaceHalServiceCallback.aidl
+++ b/framework/client/com/libremobileos/faceunlock/client/IFaceHalServiceCallback.aidl
@@ -16,6 +16,7 @@
 
 package com.libremobileos.faceunlock.client;
 
+@VintfStability
 oneway interface IFaceHalServiceCallback {
     void onEnrollResult(long deviceId, int faceId, int userId, int remaining);
 
@@ -30,4 +31,4 @@
     void onEnumerate(long deviceId, in int[] faceIds, int userId);
 
     void onLockoutChanged(long duration);
-}
\ No newline at end of file
+}
diff --git a/framework/client/com/libremobileos/faceunlock/client/IFaceUnlockManager.aidl b/framework/client/com/libremobileos/faceunlock/client/IFaceUnlockManager.aidl
index 39909b1..389c82d 100644
--- a/framework/client/com/libremobileos/faceunlock/client/IFaceUnlockManager.aidl
+++ b/framework/client/com/libremobileos/faceunlock/client/IFaceUnlockManager.aidl
@@ -16,6 +16,7 @@
 
 package com.libremobileos.faceunlock.client;
 
+@VintfStability
 interface IFaceUnlockManager {
     void enrollResult(int remaining);
     void error(int error);
diff --git a/framework/server/com/libremobileos/faceunlock/server/FaceUnlockServer.java b/framework/server/com/libremobileos/faceunlock/server/FaceUnlockServer.java
index 8c96a0f..eaa1889 100644
--- a/framework/server/com/libremobileos/faceunlock/server/FaceUnlockServer.java
+++ b/framework/server/com/libremobileos/faceunlock/server/FaceUnlockServer.java
@@ -75,6 +75,13 @@
 	private String mStorePath = "/data/vendor_de/0/facedata";
 
 	private final IBinder mFaceUnlockHalBinder = new IFaceHalService.Stub() {
+
+        @Override
+        public final int getInterfaceVersion() { return super.VERSION; }
+
+        @Override
+		public final String getInterfaceHash() { return super.HASH; }
+
 		@Override
 		public long getDeviceId() {
 			return kDeviceId;
@@ -376,6 +383,13 @@
 	}
 
 	private final IBinder mFaceUnlockManagerBinder = new IFaceUnlockManager.Stub() {
+
+        @Override
+        public final int getInterfaceVersion() { return super.VERSION; }
+
+        @Override
+		public final String getInterfaceHash() { return super.HASH; }
+
 		@Override
 		public void enrollResult(int remaining) throws RemoteException {
 			if (mCallback != null) {