blob: 13004a502b51ef60d39ad1caf65b0e8a13b86a26 [file] [log] [blame]
Steven Moreland33e87b82016-11-22 15:34:39 -08001#ifndef ANDROID_HARDWARE_NFC_V1_0_NFC_H
2#define ANDROID_HARDWARE_NFC_V1_0_NFC_H
Iliyan Malchev678fa1f2016-09-22 15:53:53 -07003
4#include <android/hardware/nfc/1.0/INfc.h>
5#include <hidl/Status.h>
6#include <hardware/hardware.h>
7#include <hardware/nfc.h>
8namespace android {
9namespace hardware {
10namespace nfc {
11namespace V1_0 {
12namespace implementation {
13
14using ::android::hardware::nfc::V1_0::INfc;
15using ::android::hardware::nfc::V1_0::INfcClientCallback;
Iliyan Malchev678fa1f2016-09-22 15:53:53 -070016using ::android::hardware::Return;
17using ::android::hardware::Void;
18using ::android::hardware::hidl_vec;
19using ::android::hardware::hidl_string;
20using ::android::sp;
21
22struct Nfc : public INfc {
23 Nfc(nfc_nci_device_t* device);
Ruchi Kandoi51068e02016-11-18 14:11:33 -080024 ::android::hardware::Return<NfcStatus> open(const sp<INfcClientCallback>& clientCallback) override;
25 ::android::hardware::Return<uint32_t> write(const hidl_vec<uint8_t>& data) override;
26 ::android::hardware::Return<NfcStatus> coreInitialized(const hidl_vec<uint8_t>& data) override;
27 ::android::hardware::Return<NfcStatus> prediscover() override;
28 ::android::hardware::Return<NfcStatus> close() override;
29 ::android::hardware::Return<NfcStatus> controlGranted() override;
30 ::android::hardware::Return<NfcStatus> powerCycle() override;
Iliyan Malchev678fa1f2016-09-22 15:53:53 -070031
Steven Morelanda74426d2016-09-26 12:41:23 -070032 static void eventCallback(uint8_t event, uint8_t status) {
Iliyan Malchev678fa1f2016-09-22 15:53:53 -070033 if (mCallback != nullptr) {
34 mCallback->sendEvent(
Steven Morelanda74426d2016-09-26 12:41:23 -070035 (::android::hardware::nfc::V1_0::NfcEvent) event,
36 (::android::hardware::nfc::V1_0::NfcStatus) status);
Iliyan Malchev678fa1f2016-09-22 15:53:53 -070037 }
38 }
Steven Morelanda74426d2016-09-26 12:41:23 -070039 static void dataCallback(uint16_t data_len, uint8_t* p_data) {
40 hidl_vec<uint8_t> data;
41 data.setToExternal(p_data, data_len);
Iliyan Malchev678fa1f2016-09-22 15:53:53 -070042 if (mCallback != nullptr) {
43 mCallback->sendData(data);
44 }
45 }
46 private:
47 static sp<INfcClientCallback> mCallback;
48 const nfc_nci_device_t* mDevice;
49};
50
51extern "C" INfc* HIDL_FETCH_INfc(const char* name);
52
53} // namespace implementation
54} // namespace V1_0
55} // namespace nfc
56} // namespace hardware
57} // namespace android
58
Steven Moreland33e87b82016-11-22 15:34:39 -080059#endif // ANDROID_HARDWARE_NFC_V1_0_NFC_H