461deddb4d
Bug: 69110631 Test: NFC on/off Change-Id: I6c0173df6b6f49e7c07e9670c827b2944c6fe23f
71 lines
2.4 KiB
C++
71 lines
2.4 KiB
C++
#ifndef ANDROID_HARDWARE_NFC_V1_0_NFC_H
|
|
#define 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::Return;
|
|
using ::android::hardware::Void;
|
|
using ::android::hardware::hidl_vec;
|
|
using ::android::hardware::hidl_string;
|
|
using ::android::sp;
|
|
|
|
struct Nfc : public INfc, public hidl_death_recipient {
|
|
Nfc(nfc_nci_device_t* device);
|
|
::android::hardware::Return<NfcStatus> open(
|
|
const sp<INfcClientCallback>& clientCallback) override;
|
|
::android::hardware::Return<uint32_t> write(const hidl_vec<uint8_t>& data) override;
|
|
::android::hardware::Return<NfcStatus> coreInitialized(const hidl_vec<uint8_t>& data) override;
|
|
::android::hardware::Return<NfcStatus> prediscover() override;
|
|
::android::hardware::Return<NfcStatus> close() override;
|
|
::android::hardware::Return<NfcStatus> controlGranted() override;
|
|
::android::hardware::Return<NfcStatus> powerCycle() override;
|
|
|
|
static void eventCallback(uint8_t event, uint8_t status) {
|
|
if (mCallback != nullptr) {
|
|
auto ret = mCallback->sendEvent((::android::hardware::nfc::V1_0::NfcEvent)event,
|
|
(::android::hardware::nfc::V1_0::NfcStatus)status);
|
|
if (!ret.isOk()) {
|
|
ALOGW("Failed to call back into NFC process.");
|
|
}
|
|
}
|
|
}
|
|
static void dataCallback(uint16_t data_len, uint8_t* p_data) {
|
|
hidl_vec<uint8_t> data;
|
|
data.setToExternal(p_data, data_len);
|
|
if (mCallback != nullptr) {
|
|
auto ret = mCallback->sendData(data);
|
|
if (!ret.isOk()) {
|
|
ALOGW("Failed to call back into NFC process.");
|
|
}
|
|
}
|
|
}
|
|
|
|
virtual void serviceDied(uint64_t /*cookie*/,
|
|
const wp<::android::hidl::base::V1_0::IBase>& /*who*/) {
|
|
close();
|
|
}
|
|
|
|
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 // ANDROID_HARDWARE_NFC_V1_0_NFC_H
|