From 0368c7682d138d42b5035dc8a9d14814cc0ac9fe Mon Sep 17 00:00:00 2001 From: GogoVega Date: Tue, 24 May 2022 11:31:33 +0200 Subject: [PATCH] update readme and fix minor errors * Update bash command for library installation. * change: small EEPROMs (1 - 2Kbits) are not supported because pageSize = 8 < 10 (max byteNumber in MFRC522). * change: using pages in the `EraseAllCards()` function to speed up writing. --- README.md | 4 ++-- src/Card/Card.cpp | 12 +++++++----- src/Card/Card.h | 1 + src/RFIDtoEEPROM/RFIDtoEEPROM.h | 1 - 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 236aff4..7748140 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Go to the Libraries Manager on [PlatformIO](https://platformio.org/platformio-id Or use `platformIO Core CLI` and paste the following command: ```bash -pio lib install "gogovega/RFID to EEPROM@^1.1.0" +pio pkg install --library "gogovega/RFID to EEPROM@^1.1.0" ``` ## How It Works @@ -58,7 +58,6 @@ void begin(twiClockFreq_t twiFreq); Use one of the enumerations below to set EEPROM Size: ``` { - RFIDtoEEPROM_I2C::kbits_2, RFIDtoEEPROM_I2C::kbits_4, RFIDtoEEPROM_I2C::kbits_8, RFIDtoEEPROM_I2C::kbits_16, @@ -101,6 +100,7 @@ This library contains several functions: ## Future Features +- Support for small I2C EEPROMs (1 - 2Kbits). - Increase the number of recordable Cards (currently set to 255). - Improve error handling. diff --git a/src/Card/Card.cpp b/src/Card/Card.cpp index d5cc3a2..f2f6c25 100644 --- a/src/Card/Card.cpp +++ b/src/Card/Card.cpp @@ -72,9 +72,11 @@ void Card::ClearCardNumber() */ void Card::EraseAllCards() { - for (uint32_t n = 0; n < Code::length(); n++) + byte Code[_pageSize] = {}; + + for (uint32_t n = 0; n < (Code::length() / _pageSize); n++) { - Code::write(n, 0); + Code::write((n * _pageSize), Code, _pageSize); } } @@ -86,7 +88,7 @@ void Card::CardRestoration(uint8_t nbr) { /* Uncomment if you want to reset the Card byte Code[_byteNumber] = {}; - Code::Write(OFFSET(nbr), Code, _byteNumber); + Code::write(OFFSET(nbr), Code, _byteNumber); */ Code::write(0, nbr); @@ -125,7 +127,7 @@ bool Card::SaveCard(uint8_t *Code, uint8_t size) const uint8_t nbr = CardNumber(); // if size different from Constructor or better than 16 - if ((size != _byteNumber) || (size > 16)) + if ((size != _byteNumber) || (size > _pageSize)) return (NULL); // if Number of Cards over limit! @@ -160,7 +162,7 @@ bool Card::CardCheck(uint8_t *Code, uint8_t size) byte CodeRead[_byteNumber]; // if size different from Constructor or better than 16 - if ((size != _byteNumber) || (size > 16)) + if ((size != _byteNumber) || (size > _pageSize)) return (NULL); for (uint8_t i = 0; i < nbr; i++) diff --git a/src/Card/Card.h b/src/Card/Card.h index 830c333..79abe1c 100644 --- a/src/Card/Card.h +++ b/src/Card/Card.h @@ -56,6 +56,7 @@ class Card : protected Code void CardRestoration(uint8_t nbr); uint8_t _byteNumber; uint8_t _maxCards; + uint8_t _pageSize = 16; }; #endif // _Card_h diff --git a/src/RFIDtoEEPROM/RFIDtoEEPROM.h b/src/RFIDtoEEPROM/RFIDtoEEPROM.h index d5b3861..5f76549 100644 --- a/src/RFIDtoEEPROM/RFIDtoEEPROM.h +++ b/src/RFIDtoEEPROM/RFIDtoEEPROM.h @@ -41,7 +41,6 @@ class RFIDtoEEPROM_I2C : public Card //EEPROM size in kbits. enum eeprom_size_t { - kbits_2 = 2, kbits_4 = 4, kbits_8 = 8, kbits_16 = 16,