1
0
Fork 0

Compare commits

...

2 commits

Author SHA1 Message Date
a438cb13d4 Only play effects on arrival, use real tag
Remove the overide of the tag value used for testing.
We don't plan yet on playing effects when a tag leaves, so avoid
playing the effects twice and only do so when arriving.
2023-12-17 21:53:36 +00:00
aaa2b6553c RFID: Update definitions to allow a second reader
The board has a second SPI bus wired up for communication with two RFID readers
if needed.
However, the code only provided a constructor with no arguments, preventing
the use of a second instance on the different bus.

Update the constructor and the definitions to allow changing the chip select
and SPI bus used when creating an RFID reader.
2023-12-17 21:39:09 +00:00
2 changed files with 18 additions and 9 deletions

View file

@ -30,7 +30,15 @@ struct uidNode {
class RFID {
public:
RFID() : comData{}, sd(SD) {};
/***
* Use the main SPI port and NFC chip select by default, but allow choosing
* an alternate chip select and/or SPI bus if needed to allow multiple
* RFID readers in parallel.
*/
explicit RFID(const uint8_t chipSelect = pin_NFC1_CS, SPIClass &spiBus = SPI) :
driverPin(chipSelect), driverSpi(driverPin, spiBus),
mfrc(driverSpi), comData{}, sd(SD) {};
void init();
/***
* Check if any new tags are present or have left. Only one event is reported
@ -54,9 +62,9 @@ private:
uidNode* activeTags = nullptr;
uidNode* nextFreeTagSlot = activeTagsArray;
MFRC522DriverPinSimple driverPin{pin_NFC1_CS};
MFRC522DriverSPI driverSpi{driverPin};
MFRC522 mfrc{driverSpi};
MFRC522DriverPinSimple driverPin;
MFRC522DriverSPI driverSpi;
MFRC522 mfrc;
/*
* Array used to read and write blocks to the tags. Blocks are 16 bytes but

View file

@ -68,12 +68,13 @@ __attribute__((noreturn)) int main() {
tagEvent = rfid.checkTags();
if (tagEvent) {
tagEvent = 4;
Com::sendFigUpdate(tagEvent);
/* Start the audio first because of the possible WAV parsing delay. */
speaker.playNewSound(tagEvent);
lcd.startNewAnim(tagEvent);
/* Currently, we only play effects when placing a new figurine. */
if (!isIdGone(tagEvent)) {
/* Start the audio first as WAV parsing might delay playback. */
speaker.playNewSound(tagEvent);
lcd.startNewAnim(tagEvent);
}
}
/* TODO: Drop delay, WFE+timer interrupt(s) ? */