Files
portable_modules/nfc/include/nfc_platform.h
2026-07-20 10:48:38 +08:00

86 lines
2.8 KiB
C

#ifndef PORTABLE_NFC_PLATFORM_H
#define PORTABLE_NFC_PLATFORM_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#define NFC_PLATFORM_WAIT_FOREVER 0xFFFFFFFFu
typedef void *nfc_platform_sem_t;
typedef void *nfc_platform_task_t;
typedef void (*nfc_platform_irq_handler_t)(void *arg);
typedef void (*nfc_platform_task_entry_t)(void *arg);
typedef enum {
NFC_PLATFORM_GPIO_IN = 0,
NFC_PLATFORM_GPIO_OUT = 1,
} nfc_platform_gpio_direction_t;
typedef enum {
NFC_PLATFORM_GPIO_PULL_DISABLE = 0,
NFC_PLATFORM_GPIO_PULL_UP = 1,
NFC_PLATFORM_GPIO_PULL_DOWN = 2,
} nfc_platform_gpio_pull_t;
typedef enum {
NFC_PLATFORM_GPIO_LOW = 0,
NFC_PLATFORM_GPIO_HIGH = 1,
} nfc_platform_gpio_level_t;
typedef enum {
NFC_PLATFORM_IRQ_NONE = 0,
NFC_PLATFORM_IRQ_RISING_EDGE = 1,
NFC_PLATFORM_IRQ_FALLING_EDGE = 2,
NFC_PLATFORM_IRQ_BOTH_EDGE = 3,
} nfc_platform_irq_edge_t;
void nfc_platform_log(const char *fmt, ...);
void nfc_platform_sleep_ms(uint32_t ms);
int nfc_platform_i2c_init(uint8_t bus, uint32_t fast_mode);
int nfc_platform_i2c_write(uint8_t bus,
uint8_t slave_addr,
uint16_t reg,
const uint8_t *data,
uint32_t len);
int nfc_platform_i2c_read(uint8_t bus,
uint8_t slave_addr,
uint16_t reg,
uint8_t *data,
uint32_t len);
int nfc_platform_gpio_init(uint32_t pin,
nfc_platform_gpio_direction_t direction,
nfc_platform_gpio_pull_t pull,
nfc_platform_gpio_level_t initial_level);
int nfc_platform_gpio_set_level(uint32_t pin, nfc_platform_gpio_level_t level);
int nfc_platform_gpio_get_level(uint32_t pin, uint8_t *level);
int nfc_platform_irq_register(uint32_t pin,
nfc_platform_irq_edge_t edge,
nfc_platform_gpio_pull_t pull,
void *arg,
nfc_platform_irq_handler_t handler);
int nfc_platform_irq_enable_wakeup(uint32_t pin, nfc_platform_irq_edge_t edge);
int nfc_platform_irq_disable_wakeup(uint32_t pin);
int nfc_platform_sem_create(nfc_platform_sem_t *sem, uint32_t initial_count);
int nfc_platform_sem_wait(nfc_platform_sem_t sem, uint32_t timeout_ms);
int nfc_platform_sem_release(nfc_platform_sem_t sem);
int nfc_platform_task_create(nfc_platform_task_t *task,
uint32_t stack_size,
uint32_t priority,
const char *name,
nfc_platform_task_entry_t entry,
void *arg);
#ifdef __cplusplus
}
#endif
#endif