Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/flipperzero-firmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/targets/furi_hal_include/furi_hal_nfc.h')
-rw-r--r--firmware/targets/furi_hal_include/furi_hal_nfc.h118
1 files changed, 118 insertions, 0 deletions
diff --git a/firmware/targets/furi_hal_include/furi_hal_nfc.h b/firmware/targets/furi_hal_include/furi_hal_nfc.h
new file mode 100644
index 00000000..61d95e90
--- /dev/null
+++ b/firmware/targets/furi_hal_include/furi_hal_nfc.h
@@ -0,0 +1,118 @@
+/**
+ * @file furi_hal_nfc.h
+ * NFC HAL API
+ */
+
+#pragma once
+
+#include <rfal_nfc.h>
+#include <st_errno.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define FURI_HAL_NFC_UID_MAX_LEN 10
+
+/** Init nfc
+ */
+void furi_hal_nfc_init();
+
+/** Check if nfc worker is busy
+ *
+ * @return true if busy
+ */
+bool furi_hal_nfc_is_busy();
+
+/** NFC field on
+ */
+void furi_hal_nfc_field_on();
+
+/** NFC field off
+ */
+void furi_hal_nfc_field_off();
+
+/** NFC start sleep
+ */
+void furi_hal_nfc_start_sleep();
+
+/** NFC stop sleep
+ */
+void furi_hal_nfc_exit_sleep();
+
+/** NFC poll
+ *
+ * @param dev_list pointer to rfalNfcDevice buffer
+ * @param dev_cnt pointer device count
+ * @param timeout timeout in ms
+ * @param deactivate deactivate flag
+ *
+ * @return true on success
+ */
+bool furi_hal_nfc_detect(
+ rfalNfcDevice** dev_list,
+ uint8_t* dev_cnt,
+ uint32_t timeout,
+ bool deactivate);
+
+/** NFC listen
+ *
+ * @param uid pointer to uid buffer
+ * @param uid_len uid length
+ * @param atqa pointer to atqa
+ * @param sak sak
+ * @param activate_after_sak activate after sak flag
+ * @param timeout timeout in ms
+ *
+ * @return true on success
+ */
+bool furi_hal_nfc_listen(
+ uint8_t* uid,
+ uint8_t uid_len,
+ uint8_t* atqa,
+ uint8_t sak,
+ bool activate_after_sak,
+ uint32_t timeout);
+
+/** Get first command from reader after activation in emulation mode
+ *
+ * @param rx_buff pointer to receive buffer
+ * @param rx_len receive buffer length
+ *
+ * @return true on success
+ */
+bool furi_hal_nfc_get_first_frame(uint8_t** rx_buff, uint16_t** rx_len);
+
+/** NFC data exchange
+ *
+ * @param tx_buff transmit buffer
+ * @param tx_len transmit buffer length
+ * @param rx_buff receive buffer
+ * @param rx_len receive buffer length
+ * @param deactivate deactivate flag
+ *
+ * @return ST ReturnCode
+ */
+ReturnCode furi_hal_nfc_data_exchange(
+ uint8_t* tx_buff,
+ uint16_t tx_len,
+ uint8_t** rx_buff,
+ uint16_t** rx_len,
+ bool deactivate);
+
+ReturnCode furi_hal_nfc_raw_bitstream_exchange(
+ uint8_t* tx_buff,
+ uint16_t tx_bit_len,
+ uint8_t** rx_buff,
+ uint16_t** rx_bit_len,
+ bool deactivate);
+
+/** NFC deactivate and start sleep
+ */
+void furi_hal_nfc_deactivate();
+
+#ifdef __cplusplus
+}
+#endif