1
0
Fork 0
Commit graph

19 commits

Author SHA1 Message Date
324cf50653 RFID: Implement writing to blocks
In order to set the ID to the tag, we need to be able to write blocks.
Implement writeBlock() similarly to readBlock() to allow that.

Make sure to clean the communication buffer and handle failure states,
this will become more important for dual RFID readers as will allow
'chaining' calls and cover both readers without keeping track of
what reader sees what tag.

Only allow to write a byte for now, we don't need more.
2024-01-06 00:25:46 +00:00
73ceeb493c RFID: Clean up and generalize
Add a constant for the ID block used and replace it.

Clean up some comments and clarify expectations.

readBlock() did not properly halt tags after errors and the else
clause was superfluous. Properly handle error status.

Move currentActiveTags to be static and initialize it.
This allows for keeping track of max/current tags accross multiple instances.
2024-01-06 00:15:48 +00:00
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
73d80312aa Build: Introduce prod/dev environments
Platformio supports multiple environments and sharing a global configuration.
Make use of this to easily allow switching between the production build, with HID,
and the development build, with serial.

Update the README with information on how to build those environments.
2023-12-17 21:18:58 +00:00
df51ad3e36 IDs: Mystery lifted, Loup-Garou !
Update the promo names array with the newest year name.
2023-11-10 17:50:13 +00:00
a7c2856ef6 Speaker: Introduce audio playback
Introduce the Speaker class to play audio from the SD card when detecting
tags.
The only audio supported is WAV.

Audio playback is handled via interrupts, so it might try to read from the
SD card at the same time as the LCD class is trying to read new frames.
Update the LCD animation code to temporarily disable audio interrupts while
reading from the SD card.
2023-10-22 21:19:29 +01:00
caff96922e Com: Make the comment length explicit
sendComment cannot send more than 62 bytes, as limited by the HID report.
Sending more is prevented by vsnprintf, but change the function signature
to make it explicit that the array passed to it should be at most 62 bytes.
2023-10-22 21:16:49 +01:00
69909851c2 LCD: Introduce LCD display and animations
Add support for the LCD and using it for displaying animations.
Animations are automatically played if available for the ID of the
detected tag.

The code should support adding other kind of animations, for tags being
removed or for other UI interactions for example.
2023-10-21 22:01:10 +01:00
e21123538b Utils: Introduce utils and animation helpers
The next commit implements the LCD and animation support. To enable an easy
way to create animations for it, add details in the README regarding the way
the SD card is used and how the files need to be formatted.

Create the Utils directory and add a Rust project to do the bit flipping and
a script that automates all the steps described in the README.
Add a README for Utils explaining how to use them.
2023-10-21 21:59:54 +01:00
6c5a670366 IDs: Introduce ID handling functions and data
IDs will be needed by multiple subsystems, so introduce the needed
variables and handling functions.
2023-10-21 18:23:43 +01:00
da837ffbb4 RFID: Update comment refering to -ID
When a tag leaves, we don't negate the ID which would be
implied by writing -ID.
Clarify that we set the sign bit instead.
2023-10-16 22:16:47 +01:00
bedd1f4f95 Com: Implement proper communications
Implement a set of functions to create messages following the protocols
defined in the README for communication.
Handle HID, which is used to communicate with the interactive application.

Update README with details on the message structures.
2023-09-24 18:04:27 +01:00
8d80dd2604 RFID: Fix tag return when gone
Previously, the return value when a tag was gone was the negative ID.
However, this isn't the most effective to process later as a negative
number uses two's complement, changing all lower bits in addition
to the sign bit.

Change this to just set the sign bit instead. This still produces
a negative number, which is what we want to check to konw if the tag
is new or went away, but maintains the lower bits so the ID can be
retrieved with a simple bit-wise and.
2023-09-24 12:31:01 +01:00
aa2f2e4803 README: Add status
Add status of the project goals in the README and update them
with regards to the newly added RFID.
2023-09-10 20:29:06 +01:00
ec2c71b0be RFID: functional tag reading
Add a new class to handle the RFID module and associated data
in order to track active tags.
Update main with RFID initialization and a minimal usage to
check it is working as expected.
2023-09-10 20:28:27 +01:00
07654829ed Main structure and setup
pinMode most of what could be useful in the main and put modules
LOW to minimize power draw before the regulator is ON.

Add the skeleton for the setup, main loop and battery level checking.
2023-09-09 19:46:10 +01:00
09ebef0615 Add pinout
Pinout was autogenerated from KiCad and adapted for readability
2023-09-09 18:19:57 +01:00
378d116129 Init project
Add LICENSE and README
Basic platformio project structure with required libs
2023-09-09 18:01:24 +01:00