From 1461e63243fd575ce128ae7816c0857b1e09a643 Mon Sep 17 00:00:00 2001 From: whowechina Date: Sat, 16 Mar 2024 15:43:10 +0800 Subject: [PATCH] Attach I2C interface to skip init --- firmware/include/nfc.h | 7 ++++--- firmware/src/lib/nfc.c | 9 +++++++-- firmware/src/main.c | 4 ++-- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/firmware/include/nfc.h b/firmware/include/nfc.h index 1c8e150..75fe55b 100644 --- a/firmware/include/nfc.h +++ b/firmware/include/nfc.h @@ -33,9 +33,10 @@ typedef struct { uint8_t syscode[2]; } nfc_card_t; -/* should set i2c and spi port before init */ -void nfc_set_i2c(i2c_inst_t *port, uint8_t scl, uint8_t sda, uint32_t freq); -void nfc_set_spi(spi_inst_t *port, uint8_t miso, uint8_t sck, uint8_t mosi, +/* should init or attach i2c and spi port before init */ +void nfc_attach_i2c(i2c_inst_t *port); +void nfc_init_i2c(i2c_inst_t *port, uint8_t scl, uint8_t sda, uint32_t freq); +void nfc_init_spi(spi_inst_t *port, uint8_t miso, uint8_t sck, uint8_t mosi, uint8_t rst, uint8_t nss, uint8_t busy); void nfc_init(); diff --git a/firmware/src/lib/nfc.c b/firmware/src/lib/nfc.c index 5fd2a83..cc8c64f 100644 --- a/firmware/src/lib/nfc.c +++ b/firmware/src/lib/nfc.c @@ -79,7 +79,12 @@ static struct { uint8_t sda; } i2c = {0}; -void nfc_set_i2c(i2c_inst_t *port, uint8_t scl, uint8_t sda, uint32_t freq) +void nfc_attach_i2c(i2c_inst_t *port) +{ + i2c.port = port; +} + +void nfc_init_i2c(i2c_inst_t *port, uint8_t scl, uint8_t sda, uint32_t freq) { i2c.port = port; i2c.freq = freq; @@ -97,7 +102,7 @@ static struct { uint8_t busy; } spi = {0}; -void nfc_set_spi(spi_inst_t *port, uint8_t miso, uint8_t sck, uint8_t mosi, +void nfc_init_spi(spi_inst_t *port, uint8_t miso, uint8_t sck, uint8_t mosi, uint8_t rst, uint8_t nss, uint8_t busy) { spi.port = port; diff --git a/firmware/src/main.c b/firmware/src/main.c index 08ead73..2f58c90 100644 --- a/firmware/src/main.c +++ b/firmware/src/main.c @@ -223,8 +223,8 @@ void init() mutex_init(&core1_io_lock); save_init(0xca340a1c, &core1_io_lock); - nfc_set_i2c(I2C_PORT, I2C_SCL, I2C_SDA, I2C_FREQ); - nfc_set_spi(SPI_PORT, SPI_MISO, SPI_SCK, SPI_MOSI, SPI_RST, SPI_NSS, SPI_BUSY); + nfc_init_i2c(I2C_PORT, I2C_SCL, I2C_SDA, I2C_FREQ); + nfc_init_spi(SPI_PORT, SPI_MISO, SPI_SCK, SPI_MOSI, SPI_RST, SPI_NSS, SPI_BUSY); nfc_init(); nfc_set_wait_loop(wait_loop);