android.hardware.nfc@1.0: provide a default implementation

b/31524912
Test: pass

Change-Id: Id9d34f62f4a2b92bdc3beb3e62c89c82743c0ca0
Signed-off-by: Iliyan Malchev <malchev@google.com>
diff --git a/nfc/1.0/default/Nfc.h b/nfc/1.0/default/Nfc.h
new file mode 100644
index 0000000..98cd57e
--- /dev/null
+++ b/nfc/1.0/default/Nfc.h
@@ -0,0 +1,60 @@
+#ifndef HIDL_GENERATED_android_hardware_nfc_V1_0_Nfc_H_
+#define HIDL_GENERATED_android_hardware_nfc_V1_0_Nfc_H_
+
+#include <android/hardware/nfc/1.0/INfc.h>
+#include <hidl/Status.h>
+#include <hardware/hardware.h>
+#include <hardware/nfc.h>
+namespace android {
+namespace hardware {
+namespace nfc {
+namespace V1_0 {
+namespace implementation {
+
+using ::android::hardware::nfc::V1_0::INfc;
+using ::android::hardware::nfc::V1_0::INfcClientCallback;
+using ::android::hardware::nfc::V1_0::nfc_data_t;
+using ::android::hardware::Return;
+using ::android::hardware::Void;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::hidl_string;
+using ::android::sp;
+
+struct Nfc : public INfc {
+  Nfc(nfc_nci_device_t* device);
+  ::android::hardware::Return<int32_t> open(const sp<INfcClientCallback>& clientCallback)  override;
+  ::android::hardware::Return<int32_t> write(const nfc_data_t& data)  override;
+  ::android::hardware::Return<int32_t> core_initialized(const hidl_vec<uint8_t>& data)  override;
+  ::android::hardware::Return<int32_t> pre_discover()  override;
+  ::android::hardware::Return<int32_t> close()  override;
+  ::android::hardware::Return<int32_t> control_granted()  override;
+  ::android::hardware::Return<int32_t> power_cycle()  override;
+
+  static void event_callback(uint8_t event, uint8_t status) {
+      if (mCallback != nullptr) {
+          mCallback->sendEvent(
+                  (::android::hardware::nfc::V1_0::nfc_event_t) event,
+                  (::android::hardware::nfc::V1_0::nfc_status_t) status);
+      }
+  }
+  static void data_callback(uint16_t data_len, uint8_t* p_data) {
+      nfc_data_t data;
+      data.data.setToExternal(p_data, data_len);
+      if (mCallback != nullptr) {
+          mCallback->sendData(data);
+      }
+  }
+  private:
+    static sp<INfcClientCallback> mCallback;
+    const nfc_nci_device_t*       mDevice;
+};
+
+extern "C" INfc* HIDL_FETCH_INfc(const char* name);
+
+}  // namespace implementation
+}  // namespace V1_0
+}  // namespace nfc
+}  // namespace hardware
+}  // namespace android
+
+#endif  // HIDL_GENERATED_android_hardware_nfc_V1_0_Nfc_H_