* nfs/clipper: BART station ids for San Lorenzo, Bay Fair
Update the BART station ids for the San Lorenzo and Bay Fair stations in
the East Bay of the San Francisco Bay Area.
* nfc/clipper: Update MUNI station ids
Add MUNI station ids for the T line "Central Subway" project, which
opened three new underground stations in 2022.
---------
Co-authored-by: あく <alleteam@gmail.com>
* NFC: Add NDEF Parser for MFUL, MFC and SLIX
* Fix inefficiency in MAD checking
* NFC: NDEF parser less RAM waste for contact vcards
* Fix typo
* Make PVS Happy
* NFC: hide TODO in 3rd party plugin
Co-authored-by: あく <alleteam@gmail.com>
* Quck fix for Plantain 4K tickets: now the balance, trips, dates are available. To do: get rid of mem size check, fix number parsing for 4B UID cards, fix validator info and last payment parsing
* 4B UID Quick'n'Dirty fix
* remove unnecessary variables, fbt format
Co-authored-by: あく <alleteam@gmail.com>
* Update ndef.c
included mifare classic support
* Update application.fam
* Update ndef.c
* Update ndef.c
* Update ndef.c
* Update ndef.c
* Update ndef.c for better parsing
Because mifare classic 1k has a sector trailer, the ndef parser might conflict with it if the payload is long enough or if there's too many payloads. This code removes all sector trailer in a new buffer and uses that for parsing without any problems.
* Rewrite NDEF as protocol agnostic
* Move type name buffer to stack when possible
* Parse URI without heap buffer
* Reduce binary sizes by using preprocessor defines
* Parse MFC without clone buffer and support MAD2
* Keep message count between different TLVs
* Simplify macro check
* Simplify length conversion
* Improve output of unparsed types
* Add some more logging
* Fix WiFi parsing
* Check MAD key before reading
* Rename ndef_read() to ndef_get()
* Update changelog
* Wording
---------
Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>
In the NFC Clipper card plugin, update the BART station codes for two
newer East Bay stations (Milpitas, and Berryessa/North San Jose), and
correct the station code for Castro Valley. These station ids come from
visiting the stations and checking what id they presented as in the
Clipper card data.
* FuriHal, drivers: rework gauge initialization, ensure that we can recover from any kind of internal/external issue
* Make PVS happy
* Format sources
* bq27220: add gaps injection into write operations
* Drivers: bq27220 cleanup and various fixes
* Drivers: bq27220 verbose logging and full access routine fix
* Drivers: better cfg mode exit handling in bq27220 driver
* Drivers: rewrite bq27220 based on bqstudio+ev2400, experiments and guessing. Fixes all known issues.
* PVS: hello license check
* Drivers: minimize reset count in bq27220 init sequence
* Drivers: bq27220 hide debug logging, reorganize routine to ensure predictable result and minimum amount of interaction with gauge, add documentation and notes.
* Drivers: more reliable bq27220_full_access routine
* Drivers: replace some warning with error in bq27220
* Drivers: move static asserts to headers in bq27220
* Fix PVS warnings
* Drivers: simplify logic in bq27220
---------
Co-authored-by: hedger <hedger@users.noreply.github.com>
* Add support for NTAG I2C Plus 1k and 2k chips so my Dangerous Things xSIID implant scans and displays NDEF properly.
* Update changelog
* Format
---------
Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>
* adding smartrider_parser
* adding SmartRider parser
new parser for SmartRider cards, a public transport smart card system used in Western Australia.
extracts and interprets key information from the card, including:
-Current balance
-Card serial number
-Concession type
-Purchase cost
-Details of the last two trips (including tag on/off status, cost, route, transaction number, and journey number)
* optimising
- removed all logging to simplify output.
- used early returns for clearer error handling.
- optimized setups outside loops to improve memory use.
- simplified flows by removing unnecessary loops.
- placed variables closer to their use for better readability.
- cached data blocks to streamline data handling.
- added a helper function for parsing trips, reducing redundancy.
- corrected loop counter types to avoid compile-time errors.
* cleaning displayed data
- removed transaction (txn) and journey (jrn) numbers to declutter the trip details.
- shortened "previous trip" to "prev trip" to optimize screen space usage.
* added and refined displayed data
added auto load field "threshold amount / reload amount"
changed serial to display first two digits as SR0 for consistency with physical card.
* Format
* Improved Verification Process
- Added definitions for STANDARD_KEY_2 and STANDARD_KEY_3
- Enhanced smartrider_verify function to check for all three specific keys:
- STANDARD_KEY_1 in Sector 0 as Key A
- STANDARD_KEY_2 in Sector 6 as Key A
- STANDARD_KEY_3 in Sector 6 as Key B
- Implemented read operations to verify actual key values stored on the card
- Added comparisons between read key data and expected key values
- Improved debug logging for each step of the verification process
* Integrated Verification into Parse Function
- Added key verification for sectors 0 and 6
- Implemented do-while loop structure for early exit on verification failure
- Moved block readability checks inside verification process
- Added parsed flag to indicate successful parsing
- Updated return value to reflect parsing success
- Maintained existing parsing logic and output format
* fixed false positives
recieved some cuid cards today so was able to test for myself can confirm works... finally
changes made:
-updated key assignment in smartrider_read
-simplified key verification in smartrider_parse
-improved error handling and logging
-streamlined data parsing process
-corrected key checking logic
-added checks for required block readability
-improved flow control with strategic breaks
-adjusted block data access method
* small optimizations
- refactored `smartrider_verify` and `smartrider_read` by abstracting repeated key operations into `authenticate_and_read` function for improved code maintainability.
- optimized `smartrider_read` by introducing a loop for key setup, reducing redundancy and improving efficiency.
- streamlined error handling in `smartrider_read` by replacing do-while loop with conditional checks.
- changed standard key references to use `standard_keys` array indices
* formatting
* Delete duplicate smartrider.c
* updated smartrider.c
* found 'fbt format'
* transaction parsing updates
-removed last trip/prev trip wording and replaced with "Trip History" header
-added date in front of each transaction
-only shows transaction cost if it's higher than 0
-changed tag on/tag off to +/- to save room
-added 8 more transactions to Trip History
-verified still working and formatted with fbt
* fixed reboot with partially unlocked card
-added bounds checking for all block accesses to prevent out-of-range memory access
-implemented improved error handling with an error_occurred flag
-introduced a maximum iteration count for date calculation to prevent infinite loops
-used snprintf with size limits for all string operations to avoid buffer overflows
-added validation for trip count to ensure it doesn't exceed the maximum allowed
-implemented checks to skip unread or out-of-range blocks during trip parsing
-added safeguards against corrupted or invalid timestamp data
* optimized SmartRider card parsing and verification
- replaced do-while loop with direct error checks in smartrider_parse
- optimized key verification using direct memcmp in smartrider_verify
- introduced inline functions for common operations (e.g., set_key, read_le16)
- replaced bubble sort with insertion sort for trip data
- simplified date calculation using a lookup table for days in month
- used uint_fast8_t for loop counters to allow compiler optimization
- added __attribute__((hot)) to key functions for aggressive optimization
- removed redundant variable declarations and function calls
- optimized memory usage with static const arrays for required blocks
- simplified error handling in smartrider_read and authenticate_and_read
- used __builtin_memcpy and __builtin_memcmp for potential compiler optimizations
- tested and formatted with fbt
* small fixes
-renamed "Trip History" to "Tag On/Off History"
-fixed date calculation to account for leap years
-misc changes
* Update changelog
---------
Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>