77 lines
2.6 KiB
C
77 lines
2.6 KiB
C
#include "pico/stdlib.h"
|
|
#include "hardware/gpio.h"
|
|
#include "driver_mfrc522_interface.h"
|
|
|
|
#define MFRC522_CFG_IRQ_GPIO 14
|
|
|
|
static mfrc522_handle_t ctx = {0};
|
|
|
|
static void mfrc522_integration_irq_handler(uint gpio, uint32_t event_mask)
|
|
{
|
|
(void) gpio;
|
|
(void) event_mask;
|
|
|
|
// Dump return value for now, we cannot do anything at the moment.
|
|
(void) mfrc522_irq_handler(&ctx);
|
|
}
|
|
|
|
static void mfrc522_integration_irq_init(void)
|
|
{
|
|
gpio_set_irq_enabled_with_callback(MFRC522_CFG_IRQ_GPIO, GPIO_IRQ_EDGE_RISE, true,
|
|
mfrc522_integration_irq_handler);
|
|
}
|
|
|
|
void mfrc522_integration_init(void)
|
|
{
|
|
DRIVER_MFRC522_LINK_INIT(&ctx, mfrc522_handle_t);
|
|
DRIVER_MFRC522_LINK_RESET_GPIO_INIT(&ctx, mfrc522_interface_reset_gpio_init);
|
|
DRIVER_MFRC522_LINK_RESET_GPIO_DEINIT(&ctx, mfrc522_interface_reset_gpio_deinit);
|
|
DRIVER_MFRC522_LINK_RESET_GPIO_WRITE(&ctx, mfrc522_interface_reset_gpio_write);
|
|
DRIVER_MFRC522_LINK_IIC_INIT(&ctx, mfrc522_interface_iic_init);
|
|
DRIVER_MFRC522_LINK_IIC_DEINIT(&ctx, mfrc522_interface_iic_deinit);
|
|
DRIVER_MFRC522_LINK_IIC_WRITE(&ctx, mfrc522_interface_iic_write);
|
|
DRIVER_MFRC522_LINK_IIC_READ(&ctx, mfrc522_interface_iic_read);
|
|
DRIVER_MFRC522_LINK_UART_INIT(&ctx, mfrc522_interface_uart_init);
|
|
DRIVER_MFRC522_LINK_UART_DEINIT(&ctx, mfrc522_interface_uart_deinit);
|
|
DRIVER_MFRC522_LINK_UART_READ(&ctx, mfrc522_interface_uart_read);
|
|
DRIVER_MFRC522_LINK_UART_WRITE(&ctx, mfrc522_interface_uart_write);
|
|
DRIVER_MFRC522_LINK_UART_FLUSH(&ctx, mfrc522_interface_uart_flush);
|
|
DRIVER_MFRC522_LINK_SPI_INIT(&ctx, mfrc522_interface_spi_init);
|
|
DRIVER_MFRC522_LINK_SPI_DEINIT(&ctx, mfrc522_interface_spi_deinit);
|
|
DRIVER_MFRC522_LINK_SPI_READ(&ctx, mfrc522_interface_spi_read);
|
|
DRIVER_MFRC522_LINK_SPI_WRITE(&ctx, mfrc522_interface_spi_write);
|
|
DRIVER_MFRC522_LINK_DELAY_MS(&ctx, mfrc522_interface_delay_ms);
|
|
DRIVER_MFRC522_LINK_DEBUG_PRINT(&ctx, mfrc522_interface_debug_print);
|
|
DRIVER_MFRC522_LINK_RECEIVE_CALLBACK(&ctx, mfrc522_interface_receive_callback);
|
|
|
|
mfrc522_set_interface(&ctx, MFRC522_INTERFACE_SPI);
|
|
uint8_t init_retval = mfrc522_init(&ctx);
|
|
|
|
if (init_retval == 0) {
|
|
mfrc522_integration_irq_init();
|
|
} else {
|
|
printf("ERR: %s failed: %d\n", __FUNCTION__, init_retval);
|
|
}
|
|
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
stdio_init_all();
|
|
sleep_ms(2500);
|
|
|
|
printf("Hello World!\n");
|
|
|
|
mfrc522_integration_init();
|
|
|
|
const uint LED_PIN = PICO_DEFAULT_LED_PIN;
|
|
gpio_init(LED_PIN);
|
|
gpio_set_dir(LED_PIN, GPIO_OUT);
|
|
while (true) {
|
|
gpio_put(LED_PIN, 1);
|
|
sleep_ms(250);
|
|
gpio_put(LED_PIN, 0);
|
|
sleep_ms(250);
|
|
}
|
|
}
|