Add Gitea OTA firmware update, dual-slot partition layout, and Gitea Actions release workflow
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
idf_component_register(SRCS "multiple_scanners.c"
|
||||
INCLUDE_DIRS ".")
|
||||
@@ -0,0 +1,3 @@
|
||||
dependencies:
|
||||
abobija/rc522:
|
||||
version: '*'
|
||||
@@ -0,0 +1,117 @@
|
||||
#include <esp_log.h>
|
||||
#include "rc522.h"
|
||||
#include "driver/rc522_spi.h"
|
||||
#include "rc522_picc.h"
|
||||
|
||||
static const char *TAG = "rc522-multiple-scanners-example";
|
||||
|
||||
// SPI bus GPIOs
|
||||
|
||||
#define RC522_SPI_BUS_GPIO_MISO (25)
|
||||
#define RC522_SPI_BUS_GPIO_MOSI (23)
|
||||
#define RC522_SPI_BUS_GPIO_SCLK (19)
|
||||
|
||||
// CS GPIOs for each scanner
|
||||
|
||||
#define RC522_SPI_SCANNER_1_GPIO_SDA (22)
|
||||
#define RC522_SPI_SCANNER_2_GPIO_SDA (26)
|
||||
|
||||
// {{ Scanner configurations
|
||||
|
||||
static rc522_spi_config_t scanner_1_config = {
|
||||
.host_id = SPI3_HOST,
|
||||
.bus_config = &(spi_bus_config_t){
|
||||
.miso_io_num = RC522_SPI_BUS_GPIO_MISO,
|
||||
.mosi_io_num = RC522_SPI_BUS_GPIO_MOSI,
|
||||
.sclk_io_num = RC522_SPI_BUS_GPIO_SCLK,
|
||||
},
|
||||
.dev_config = {
|
||||
.spics_io_num = RC522_SPI_SCANNER_1_GPIO_SDA,
|
||||
},
|
||||
.rst_io_num = -1, // soft-reset
|
||||
};
|
||||
|
||||
// Second scanner does not need bus configuration,
|
||||
// since first scanner will initialize the bus.
|
||||
|
||||
static rc522_spi_config_t scanner_2_config = {
|
||||
.host_id = SPI3_HOST,
|
||||
.dev_config = {
|
||||
.spics_io_num = RC522_SPI_SCANNER_2_GPIO_SDA,
|
||||
},
|
||||
.rst_io_num = -1, // soft-reset
|
||||
};
|
||||
|
||||
// }}
|
||||
|
||||
// Drivers
|
||||
|
||||
static rc522_driver_handle_t driver_1;
|
||||
static rc522_driver_handle_t driver_2;
|
||||
|
||||
// Scanners
|
||||
|
||||
static rc522_handle_t scanner_1;
|
||||
static rc522_handle_t scanner_2;
|
||||
|
||||
// Event handler
|
||||
|
||||
static void on_picc_state_changed(void *arg, esp_event_base_t base, int32_t event_id, void *data)
|
||||
{
|
||||
rc522_handle_t scanner = (rc522_handle_t)arg;
|
||||
rc522_picc_state_changed_event_t *event = (rc522_picc_state_changed_event_t *)data;
|
||||
rc522_picc_t *picc = event->picc;
|
||||
|
||||
uint8_t scanner_no = 1;
|
||||
|
||||
if (scanner == scanner_2) {
|
||||
scanner_no = 2;
|
||||
}
|
||||
|
||||
if (picc->state == RC522_PICC_STATE_ACTIVE) {
|
||||
ESP_LOGI(TAG, "Card detected on the scanner #%d", scanner_no);
|
||||
rc522_picc_print(picc);
|
||||
}
|
||||
else if (picc->state == RC522_PICC_STATE_IDLE && event->old_state >= RC522_PICC_STATE_ACTIVE) {
|
||||
ESP_LOGI(TAG, "Card has been removed from the scanner #%d", scanner_no);
|
||||
}
|
||||
}
|
||||
|
||||
// App entry point
|
||||
|
||||
void app_main()
|
||||
{
|
||||
// Create drivers
|
||||
|
||||
rc522_spi_create(&scanner_1_config, &driver_1);
|
||||
rc522_spi_create(&scanner_2_config, &driver_2);
|
||||
|
||||
// Install drivers
|
||||
|
||||
rc522_driver_install(driver_1);
|
||||
rc522_driver_install(driver_2);
|
||||
|
||||
// Create scanners
|
||||
|
||||
rc522_create(
|
||||
&(rc522_config_t) {
|
||||
.driver = driver_1,
|
||||
},
|
||||
&scanner_1);
|
||||
|
||||
rc522_create(
|
||||
&(rc522_config_t) {
|
||||
.driver = driver_2,
|
||||
},
|
||||
&scanner_2);
|
||||
|
||||
// Register events for each scanner
|
||||
|
||||
rc522_register_events(scanner_1, RC522_EVENT_PICC_STATE_CHANGED, on_picc_state_changed, scanner_1);
|
||||
rc522_register_events(scanner_2, RC522_EVENT_PICC_STATE_CHANGED, on_picc_state_changed, scanner_2);
|
||||
|
||||
// Start scanners
|
||||
|
||||
rc522_start(scanner_1);
|
||||
rc522_start(scanner_2);
|
||||
}
|
||||
Reference in New Issue
Block a user