M5Unit-NFC 0.1.0 git rev:93745b5
Loading...
Searching...
No Matches
unit_ST25R3916.hpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
3 *
4 * SPDX-License-Identifier: MIT
5 */
10#ifndef M5_UNIT_NFC_UNIT_ST25R3916_HPP
11#define M5_UNIT_NFC_UNIT_ST25R3916_HPP
12
13#include <M5UnitComponent.hpp>
14#include <esp_attr.h>
16#include "nfc/nfc.hpp"
17#include "nfc/a/nfca.hpp"
18#include "nfc/a/mifare.hpp"
20#include "nfc/b/nfcb.hpp"
21#include "nfc/f/nfcf.hpp"
22#include "nfc/v/nfcv.hpp"
23
24namespace m5 {
25namespace nfc {
26struct ListenerST25R3916ForA;
27struct ListenerST25R3916ForF;
28} // namespace nfc
29namespace unit {
30
31namespace nfc {
32struct AdapterST25R3916;
33} // namespace nfc
34
39class UnitST25R3916 : public Component {
40 M5_UNIT_COMPONENT_HPP_BUILDER(UnitST25R3916, 0x50 /* I2C address */);
41
42public:
47 explicit UnitST25R3916(const uint8_t arg = DEFAULT_ADDRESS) : Component(arg)
48 {
49 auto ccfg = component_config();
50 ccfg.clock = 400 * 1000U;
51 component_config(ccfg);
52 }
53 virtual ~UnitST25R3916() = default;
54
59 virtual bool begin() override;
64 virtual void update(const bool force = false) override;
65
70 struct config_t {
71 m5::nfc::NFC mode{m5::nfc::NFC::A};
72 bool vdd_voltage_5V{false};
73 uint8_t tx_am_modulation{13};
74 bool using_irq{};
75 uint8_t irq{};
76 bool emulation{};
77 };
78
81
86 {
87 return _cfg;
88 }
93 inline void config(const config_t& cfg)
94 {
95 _cfg = cfg;
96 }
98
103 inline m5::nfc::NFC NFCMode() const
104 {
105 return _nfcMode;
106 }
112 bool configureNFCMode(const m5::nfc::NFC mode);
118 bool configureEmulationMode(const m5::nfc::NFC mode);
119
125 inline bool isNFCMode(const m5::nfc::NFC mode) const
126 {
127 return NFCMode() == mode;
128 }
129
137 bool writeDirectCommand(const uint8_t cmd, const uint8_t* data = nullptr, const uint32_t dlen = 0u);
138
141
145 bool clearInterrupts();
147
150
157 bool writeInitiatorOperationMode(const st25r3916::InitiatorOperationMode mode, const uint8_t optional = 0);
165 bool writeTargetOperationMode(const st25r3916::TargetOperationMode mode, const uint8_t optional = 0);
166
173 bool writeBitrate(const m5::nfc::Bitrate tx, const m5::nfc::Bitrate rx);
175
178
185 bool readFIFOSize(uint16_t& bytes, uint8_t& bits);
194 uint32_t readFIFO(uint16_t& actual, uint8_t* buf, const uint16_t buf_size);
201 bool writeFIFO(const uint8_t* buf, const uint16_t buf_size);
203
206
211 inline bool readIOConfiguration1(uint8_t& value)
212 {
213 return read_register8(st25r3916::command::REG_IO_CONFIGURATION_1, value);
214 }
220 inline bool writeIOConfiguration1(const uint8_t value)
221 {
222 return write_register8(st25r3916::command::REG_IO_CONFIGURATION_1, value);
223 }
229 inline bool readIOConfiguration2(uint8_t& value)
230 {
231 return read_register8(st25r3916::command::REG_IO_CONFIGURATION_2, value);
232 }
238 inline bool writeIOConfiguration2(const uint8_t value)
239 {
240 return write_register8(st25r3916::command::REG_IO_CONFIGURATION_2, value);
241 }
247 inline bool readIOConfiguration(uint16_t& value)
248 {
249 return read_register16(st25r3916::command::REG_IO_CONFIGURATION_1, value);
250 }
256 inline bool writeIOConfiguration(const uint16_t value)
257 {
258 return write_register16(st25r3916::command::REG_IO_CONFIGURATION_1, value);
259 }
261
264
269 inline bool readOperationControl(uint8_t& value)
270 {
271 return read_register8(st25r3916::command::REG_OPERATION_CONTROL, value);
272 }
278 inline bool writeOperationControl(const uint8_t value)
279 {
280 return write_register8(st25r3916::command::REG_OPERATION_CONTROL, value);
281 }
287 inline bool readModeDefinition(uint8_t& value)
288 {
289 return read_register8(st25r3916::command::REG_MODE_DEFINITION, value);
290 }
296 inline bool writeModeDefinition(const uint8_t value)
297 {
298 return write_register8(st25r3916::command::REG_MODE_DEFINITION, value);
299 }
305 inline bool readBitrateDefinition(uint8_t& value)
306 {
307 return read_register8(st25r3916::command::REG_BITRATE_DEFINITION, value);
308 }
314 inline bool writeBitrateDefinition(const uint8_t value)
315 {
316 return write_register8(st25r3916::command::REG_BITRATE_DEFINITION, value);
317 }
319
322
327 inline bool readSettingsISO14443A(uint8_t& value)
328 {
329 return read_register8(st25r3916::command::REG_ISO14443A_SETTINGS, value);
330 }
336 inline bool writeSettingsISO14443A(const uint8_t value)
337 {
338 return write_register8(st25r3916::command::REG_ISO14443A_SETTINGS, value);
339 }
345 inline bool readSettingsISO14443B(uint8_t& value)
346 {
347 return read_register8(st25r3916::command::REG_ISO14443B_SETTINGS, value);
348 }
354 inline bool writeSettingsISO14443B(const uint8_t value)
355 {
356 return write_register8(st25r3916::command::REG_ISO14443B_SETTINGS, value);
357 }
363 inline bool readSettingsFelica(uint8_t& value)
364 {
365 return read_register8(st25r3916::command::REG_FELICA_SETTINGS, value);
366 }
372 inline bool writeSettingsFelica(const uint8_t value)
373 {
374 return write_register8(st25r3916::command::REG_FELICA_SETTINGS, value);
375 }
381 inline bool readNFCIP1PassiveTargetDefinition(uint8_t& value)
382 {
383 return read_register8(st25r3916::command::REG_NFCIP_1_PASSIVE_TARGET_DEFINITION, value);
384 }
390 inline bool writeNFCIP1PassiveTargetDefinition(const uint8_t value)
391 {
392 return write_register8(st25r3916::command::REG_NFCIP_1_PASSIVE_TARGET_DEFINITION, value);
393 }
399 inline bool readStreamModeDefinition(uint8_t& value)
400 {
401 return read_register8(st25r3916::command::REG_STREAM_MODE_DEFINITION, value);
402 }
408 inline bool writeStreamModeDefinition(const uint8_t value)
409 {
410 return write_register8(st25r3916::command::REG_STREAM_MODE_DEFINITION, value);
411 }
417 inline bool readAuxiliaryDefinition(uint8_t& value)
418 {
419 return read_register8(st25r3916::command::REG_AUXILIARY_DEFINITION, value);
420 }
426 inline bool writeAuxiliaryDefinition(const uint8_t value)
427 {
428 return write_register8(st25r3916::command::REG_AUXILIARY_DEFINITION, value);
429 }
430
436 inline bool readEMDSuppressionConfiguration(uint8_t& value)
437 {
438 return read_register8(st25r3916::command::REG_EMD_SUPPRESSION_CONFIGURATION, value);
439 }
445 inline bool writeEMDSuppressionConfiguration(const uint8_t value)
446 {
447 return write_register8(st25r3916::command::REG_EMD_SUPPRESSION_CONFIGURATION, value);
448 }
454 inline bool readSubcarrierStartTimer(uint8_t& value)
455 {
456 return read_register8(st25r3916::command::REG_SUBCARRIER_START_TIMER, value);
457 }
463 inline bool writeSubcarrierStartTimer(const uint8_t value)
464 {
465 return write_register8(st25r3916::command::REG_SUBCARRIER_START_TIMER, value);
466 }
468
471
476 inline bool readReceiverConfiguration1(uint8_t& value)
477 {
478 return read_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_1, value);
479 }
485 inline bool writeReceiverConfiguration1(const uint8_t value)
486 {
487 return write_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_1, value);
488 }
494 inline bool readReceiverConfiguration2(uint8_t& value)
495 {
496 return read_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_2, value);
497 }
503 inline bool writeReceiverConfiguration2(const uint8_t value)
504 {
505 return write_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_2, value);
506 }
512 inline bool readReceiverConfiguration3(uint8_t& value)
513 {
514 return read_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_3, value);
515 }
521 inline bool writeReceiverConfiguration3(const uint8_t value)
522 {
523 return write_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_3, value);
524 }
530 inline bool readReceiverConfiguration4(uint8_t& value)
531 {
532 return read_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_4, value);
533 }
539 inline bool writeReceiverConfiguration4(const uint8_t value)
540 {
541 return write_register8(st25r3916::command::REG_RECEIVER_CONFIGURATION_4, value);
542 }
548 inline bool readReceiverConfiguration(uint32_t& value)
549 {
550 return read_register32(st25r3916::command::REG_RECEIVER_CONFIGURATION_1, value);
551 }
557 inline bool writeReceiverConfiguration(const uint32_t value)
558 {
559 return write_register32(st25r3916::command::REG_RECEIVER_CONFIGURATION_1, value);
560 }
561
567 inline bool readP2PReceiverConfiguration(uint8_t& value)
568 {
569 return read_register8(st25r3916::command::REG_P2P_RECEIVER_CONFIGURATION, value);
570 }
576 inline bool writeP2PReceiverConfiguration(const uint8_t value)
577 {
578 return write_register8(st25r3916::command::REG_P2P_RECEIVER_CONFIGURATION, value);
579 }
585 inline bool readCorrelatorConfiguration1(uint8_t& value)
586 {
587 return read_register8(st25r3916::command::REG_CORRELATOR_CONFIGURATION_1, value);
588 }
594 inline bool writeCorrelatorConfiguration1(const uint8_t value)
595 {
596 return write_register8(st25r3916::command::REG_CORRELATOR_CONFIGURATION_1, value);
597 }
603 inline bool readCorrelatorConfiguration2(uint8_t& value)
604 {
605 return read_register8(st25r3916::command::REG_CORRELATOR_CONFIGURATION_2, value);
606 }
612 inline bool writeCorrelatorConfiguration2(const uint8_t value)
613 {
614 return write_register8(st25r3916::command::REG_CORRELATOR_CONFIGURATION_2, value);
615 }
621 inline bool readCorrelatorConfiguration(uint16_t& value)
622 {
623 return read_register16(st25r3916::command::REG_CORRELATOR_CONFIGURATION_1, value);
624 }
630 inline bool writeCorrelatorConfiguration(const uint16_t value)
631 {
632 return write_register16(st25r3916::command::REG_CORRELATOR_CONFIGURATION_1, value);
633 }
635
638
643 inline bool readMaskReceiveTimer(uint8_t& value)
644 {
645 return read_register8(st25r3916::command::REG_MASK_RECEIVER_TIMER, value);
646 }
652 inline bool writeMaskReceiveTimer(const uint8_t value)
653 {
654 return write_register8(st25r3916::command::REG_MASK_RECEIVER_TIMER, value);
655 }
661 inline bool readNoResponseTimer1(uint8_t& value)
662 {
663 return read_register8(st25r3916::command::REG_NO_RESPONSE_TIMER_1, value);
664 }
670 inline bool writeNoResponseTimer1(const uint8_t value)
671 {
672 return write_register8(st25r3916::command::REG_NO_RESPONSE_TIMER_1, value);
673 }
679 inline bool readNoResponseTimer2(uint8_t& value)
680 {
681 return read_register8(st25r3916::command::REG_NO_RESPONSE_TIMER_2, value);
682 }
688 inline bool writeNoResponseTimer2(const uint8_t value)
689 {
690 return write_register8(st25r3916::command::REG_NO_RESPONSE_TIMER_2, value);
691 }
697 inline bool readNoResponseTimer(uint16_t& value)
698 {
699 return read_register16(st25r3916::command::REG_NO_RESPONSE_TIMER_1, value);
700 }
706 inline bool writeNoResponseTimer(const uint16_t value)
707 {
708 return write_register16(st25r3916::command::REG_NO_RESPONSE_TIMER_1, value);
709 }
715 inline bool readTimerAndEMVControl(uint8_t& value)
716 {
717 return read_register8(st25r3916::command::REG_TIMER_AND_EMV_CONTROL, value);
718 }
724 inline bool writeTimerAndEMVControl(const uint8_t value)
725 {
726 return write_register8(st25r3916::command::REG_TIMER_AND_EMV_CONTROL, value);
727 }
733 inline bool readGeneralPurposeTimer1(uint8_t& value)
734 {
735 return read_register8(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_1, value);
736 }
742 inline bool writeGeneralPurposeTimer1(const uint8_t value)
743 {
744 return write_register8(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_1, value);
745 }
751 inline bool readGeneralPurposeTimer2(uint8_t& value)
752 {
753 return read_register8(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_2, value);
754 }
760 inline bool writeGeneralPurposeTimer2(const uint8_t value)
761 {
762 return write_register8(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_2, value);
763 }
769 inline bool readGeneralPurposeTimer(uint16_t& value)
770 {
771 return read_register16(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_1, value);
772 }
778 inline bool writeGeneralPurposeTimer(const uint16_t value)
779 {
780 return write_register16(st25r3916::command::REG_GENERAL_PURPOSE_TIMER_1, value);
781 }
787 inline bool readPPON2FieldWaiting(uint8_t& value)
788 {
789 return read_register8(st25r3916::command::REG_PPON2_FIELD_WAITING, value);
790 }
796 inline bool writePPON2FieldWaiting(const uint8_t value)
797 {
798 return write_register8(st25r3916::command::REG_PPON2_FIELD_WAITING, value);
799 }
800
806 inline bool readSquelchTimer(uint8_t& value)
807 {
808 return read_register8(st25r3916::command::REG_SQUELCH_TIMER, value);
809 }
815 inline bool writeSquelchTimer(const uint8_t value)
816 {
817 return write_register8(st25r3916::command::REG_SQUELCH_TIMER, value);
818 }
824 inline bool readNFCFieldOnGuardTimer(uint8_t& value)
825 {
826 return read_register8(st25r3916::command::REG_NFC_FIELD_ON_GUARD_TIMER, value);
827 }
833 inline bool writeNFCFieldOnGuardTimer(const uint8_t value)
834 {
835 return write_register8(st25r3916::command::REG_NFC_FIELD_ON_GUARD_TIMER, value);
836 }
838
841
846 inline bool readMaskMainInterrupt(uint8_t& value)
847 {
848 return read_register8(st25r3916::command::REG_MASK_MAIN_INTERRUPT, value);
849 }
855 inline bool writeMaskMainInterrupt(const uint8_t value)
856 {
857 if (write_register8(st25r3916::command::REG_MASK_MAIN_INTERRUPT, value)) {
858 _enabled_irq = (_enabled_irq & 0x00FFFFFF) | ((uint32_t)~value << 24);
859 return true;
860 }
861 return false;
862 }
868 inline bool readMaskTimerAndNFCInterrupt(uint8_t& value)
869 {
870 return read_register8(st25r3916::command::REG_MASK_TIMER_AND_NFC_INTERRUPT, value);
871 }
877 inline bool writeMaskTimerAndNFCInterrupt(const uint8_t value)
878 {
879 if (write_register8(st25r3916::command::REG_MASK_TIMER_AND_NFC_INTERRUPT, value)) {
880 _enabled_irq = (_enabled_irq & 0xFF00FFFF) | ((uint32_t)~value << 16);
881 return true;
882 }
883 return false;
884 }
890 inline bool readMaskErrorAndWakeupInterrupt(uint8_t& value)
891 {
892 return read_register8(st25r3916::command::REG_MASK_ERROR_AND_WAKEUP_INTERRUPT, value);
893 }
899 inline bool writeMaskErrorAndWakeupInterrupt(const uint8_t value)
900 {
901 if (write_register8(st25r3916::command::REG_MASK_ERROR_AND_WAKEUP_INTERRUPT, value)) {
902 _enabled_irq = (_enabled_irq & 0xFFFF00FF) | ((uint32_t)~value << 8);
903 return true;
904 }
905 return false;
906 }
912 inline bool readMaskPassiveTargetInterrupt(uint8_t& value)
913 {
914 return read_register8(st25r3916::command::REG_MASK_PASSIVE_TARGET_INTERRUPT, value);
915 }
921 inline bool writeMaskPassiveTargetInterrupt(const uint8_t value)
922 {
923 if (write_register8(st25r3916::command::REG_MASK_PASSIVE_TARGET_INTERRUPT, value)) {
924 _enabled_irq = (_enabled_irq & 0xFFFFFF00) | (uint32_t)~value;
925 return true;
926 }
927 return false;
928 }
934 inline bool readMaskInterrupts(uint32_t& value)
935 {
936 return read_register32(st25r3916::command::REG_MASK_MAIN_INTERRUPT, value);
937 }
943 inline bool writeMaskInterrupts(const uint32_t value)
944 {
945 if (write_register32(st25r3916::command::REG_MASK_MAIN_INTERRUPT, value)) {
946 _enabled_irq = ~value;
947 return true;
948 }
949 return false;
950 }
951
957 inline bool readMainInterrupt(uint8_t& value)
958 {
959 return read_register8(st25r3916::command::REG_MAIN_INTERRUPT, value);
960 }
966 inline bool readTimerAndNFCInterrupt(uint8_t& value)
967 {
968 return read_register8(st25r3916::command::REG_TIMER_AND_NFC_INTERRUPT, value);
969 }
976 inline bool readErrorAndWakeupInterrupt(uint8_t& value)
977 {
978 return read_register8(st25r3916::command::REG_ERROR_AND_WAKEUP_INTERRUPT, value);
979 }
985 inline bool readPassiveTargetInterrupt(uint8_t& value)
986 {
987 return read_register8(st25r3916::command::REG_PASSIVE_TARGET_INTERRUPT, value);
988 }
994 bool readInterrupts(uint32_t& value);
995
1001 inline bool readFIFOStatus1(uint8_t& value)
1002 {
1003 return read_register8(st25r3916::command::REG_FIFO_STATUS_1, value);
1004 }
1010 inline bool readFIFOStatus2(uint8_t& value)
1011 {
1012 return read_register8(st25r3916::command::REG_FIFO_STATUS_2, value);
1013 }
1019 inline bool readFIFOStatus(uint16_t& value)
1020 {
1021 return read_register16(st25r3916::command::REG_FIFO_STATUS_1, value);
1022 }
1023
1029 inline bool readCollisionDisplay(uint8_t& value)
1030 {
1031 return read_register8(st25r3916::command::REG_COLLISION_DISPLAY, value);
1032 }
1038 inline bool readPassiveTargetDisplay(uint8_t& value)
1039 {
1040 return read_register8(st25r3916::command::REG_PASSIVE_TARGET_DISPLAY, value);
1041 }
1043
1046
1051 inline bool readNumberOfTransmittedBytes1(uint8_t& value)
1052 {
1053 return read_register8(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_1, value);
1054 }
1060 inline bool writeNumberOfTransmittedBytes1(const uint8_t value)
1061 {
1062 return write_register8(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_1, value);
1063 }
1069 inline bool readNumberOfTransmittedBytes2(uint8_t& value)
1070 {
1071 return read_register8(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_2, value);
1072 }
1078 inline bool writeNumberOfTransmittedBytes2(const uint8_t value)
1079 {
1080 return write_register8(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_2, value);
1081 }
1087 inline bool readNumberOfTransmittedBytes(uint16_t& value)
1088 {
1089 return read_register16(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_1, value);
1090 }
1096 inline bool writeNumberOfTransmittedBytes(const uint16_t value)
1097 {
1098 return write_register16(st25r3916::command::REG_NUMBER_OF_TRANSMITTED_BYTES_1, value);
1099 }
1100
1107 inline bool writeNumberOfTransmittedBytes(const uint16_t bytes, const uint8_t bits)
1108 {
1109 // M5_LIB_LOGD("TransmitBytes:%u, %u", bytes, bits);
1110 return writeNumberOfTransmittedBytes(((bytes & 0x01FF) << 3 /* ntx 0-12 */) | (bits & 0x07 /*nbtx 0-2*/));
1111 }
1112
1118 inline bool readBitrateDetectionDisplay(uint8_t& value)
1119 {
1120 return read_register8(st25r3916::command::REG_BITRATE_DETECTION_DISPLAY, value);
1121 }
1123
1126
1131 inline bool readADConverterOutput(uint8_t& value)
1132 {
1133 return read_register8(st25r3916::command::REG_AD_CONVERTER_OUTPUT, value);
1134 }
1136
1139
1144 inline bool readAntennaTuningControl1(uint8_t& value)
1145 {
1146 return read_register8(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_1, value);
1147 }
1153 inline bool writeAntennaTuningControl1(const uint8_t value)
1154 {
1155 return write_register8(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_1, value);
1156 }
1162 inline bool readAntennaTuningControl2(uint8_t& value)
1163 {
1164 return read_register8(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_2, value);
1165 }
1171 inline bool writeAntennaTuningControl2(const uint8_t value)
1172 {
1173 return write_register8(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_2, value);
1174 }
1180 inline bool readAntennaTuningControl(uint16_t& value)
1181 {
1182 return read_register16(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_1, value);
1183 }
1189 inline bool writeAntennaTuningControl(const uint16_t value)
1190 {
1191 return write_register16(st25r3916::command::REG_ANTENNA_TUNING_CONTROL_1, value);
1192 }
1194
1197
1202 inline bool readTXDriver(uint8_t& value)
1203 {
1204 return read_register8(st25r3916::command::REG_TX_DRIVER, value);
1205 }
1211 inline bool writeTXDriver(const uint8_t value)
1212 {
1213 return write_register8(st25r3916::command::REG_TX_DRIVER, value);
1214 }
1220 inline bool readPassiveTargetModulation(uint8_t& value)
1221 {
1222 return read_register8(st25r3916::command::REG_PASSIVE_TARGET_MODULATION, value);
1223 }
1229 inline bool writePassiveTargetModulation(const uint8_t value)
1230 {
1231 return write_register8(st25r3916::command::REG_PASSIVE_TARGET_MODULATION, value);
1232 }
1233
1239 inline bool readAuxiliaryModulationSetting(uint8_t& value)
1240 {
1241 return read_register8(st25r3916::command::REG_AUXILIARY_MODULATION_SETTING, value);
1242 }
1248 inline bool writeAuxiliaryModulationSetting(const uint8_t value)
1249 {
1250 return write_register8(st25r3916::command::REG_AUXILIARY_MODULATION_SETTING, value);
1251 }
1257 inline bool readTXDriverTiming(uint8_t& value)
1258 {
1259 return read_register8(st25r3916::command::REG_TX_DRIVER_TIMING, value);
1260 }
1266 inline bool writeTXDriverTiming(const uint8_t value)
1267 {
1268 return write_register8(st25r3916::command::REG_TX_DRIVER_TIMING, value);
1269 }
1271
1274
1280 {
1281 return read_register8(st25r3916::command::REG_EXTERNAL_FIELD_DETECTOR_ACTIVATION_THRESHOLD, value);
1282 }
1288 inline bool writeExternalFieldDetectorActivationThreshold(const uint8_t value)
1289 {
1290 return write_register8(st25r3916::command::REG_EXTERNAL_FIELD_DETECTOR_ACTIVATION_THRESHOLD, value);
1291 }
1298 {
1299 return read_register8(st25r3916::command::REG_EXTERNAL_FIELD_DETECTOR_DEACTIVATION_THRESHOLD, value);
1300 }
1307 {
1308 return write_register8(st25r3916::command::REG_EXTERNAL_FIELD_DETECTOR_DEACTIVATION_THRESHOLD, value);
1309 }
1310
1316 inline bool readResistiveAMModulation(uint8_t& value)
1317 {
1318 return read_register8(st25r3916::command::REG_RESISTIVE_AM_MODULATION, value);
1319 }
1325 inline bool writeResistiveAMModulation(const uint8_t value)
1326 {
1327 return write_register8(st25r3916::command::REG_RESISTIVE_AM_MODULATION, value);
1328 }
1334 inline bool readTXDriverTimingDisplay(uint8_t& value)
1335 {
1336 return read_register8(st25r3916::command::REG_TX_DRIVER_TIMING_DISPLAY, value);
1337 }
1339
1342
1347 inline bool readRegulatorVoltageControl(uint8_t& value)
1348 {
1349 return read_register8(st25r3916::command::REG_REGULATOR_VOLTAGE_CONTROL, value);
1350 }
1356 inline bool writeRegulatorVoltageControl(const uint8_t value)
1357 {
1358 return write_register8(st25r3916::command::REG_REGULATOR_VOLTAGE_CONTROL, value);
1359 }
1365 inline bool readRegulatorDisplay(uint8_t& value)
1366 {
1367 return read_register8(st25r3916::command::REG_REGULATOR_DISPLAY, value);
1368 }
1370
1373
1378 inline bool readRSSIDisplay(uint8_t& value)
1379 {
1380 return read_register8(st25r3916::command::REG_RSSI_DISPLAY, value);
1381 }
1387 inline bool readGainReductionState(uint8_t& value)
1388 {
1389 return read_register8(st25r3916::command::REG_GAIN_REDUCTION_STATE, value);
1390 }
1392
1395
1400 inline bool readCapacitiveSensorControl(uint8_t& value)
1401 {
1402 return read_register8(st25r3916::command::REG_CAPACITIVE_SENSOR_CONTROL, value);
1403 }
1409 inline bool writeCapacitiveSensorControl(const uint8_t value)
1410 {
1411 return write_register8(st25r3916::command::REG_CAPACITIVE_SENSOR_CONTROL, value);
1412 }
1418 inline bool readCapacitiveSensorDisplay(uint8_t& value)
1419 {
1420 return read_register8(st25r3916::command::REG_CAPACITIVE_SENSOR_DISPLAY, value);
1421 }
1423
1426
1431 inline bool readAuxiliaryDisplay(uint8_t& value)
1432 {
1433 return read_register8(st25r3916::command::REG_AUXILIARY_DISPLAY, value);
1434 }
1436
1439
1444 inline bool readWakeupTimerControl(uint8_t& value)
1445 {
1446 return read_register8(st25r3916::command::REG_WAKEUP_TIMER_CONTROL, value);
1447 }
1453 inline bool writeWakeupTimerControl(const uint8_t value)
1454 {
1455 return write_register8(st25r3916::command::REG_WAKEUP_TIMER_CONTROL, value);
1456 }
1457
1463 inline bool readAmplitudeMeasurementConfiguration(uint8_t& value)
1464 {
1465 return read_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_CONFIGURATION, value);
1466 }
1472 inline bool writeAmplitudeMeasurementConfiguration(const uint8_t value)
1473 {
1474 return write_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_CONFIGURATION, value);
1475 }
1481 inline bool readAmplitudeMeasurementReference(uint8_t& value)
1482 {
1483 return read_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_REFERENCE, value);
1484 }
1490 inline bool writeAmplitudeMeasurementReference(const uint8_t value)
1491 {
1492 return write_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_REFERENCE, value);
1493 }
1500 {
1501 return read_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_AUTO_AVERAGING_DISPLAY, value);
1502 }
1508 inline bool readAmplitudeMeasurementDisplay(uint8_t& value)
1509 {
1510 return read_register8(st25r3916::command::REG_AMPLITUDE_MEASUREMENT_DISPLAY, value);
1511 }
1512
1518 inline bool readPhaseMeasurementConfiguration(uint8_t& value)
1519 {
1520 return read_register8(st25r3916::command::REG_PHASE_MEASUREMENT_CONFIGURATION, value);
1521 }
1527 inline bool writePhaseMeasurementConfiguration(const uint8_t value)
1528 {
1529 return write_register8(st25r3916::command::REG_PHASE_MEASUREMENT_CONFIGURATION, value);
1530 }
1536 inline bool readPhaseMeasurementReference(uint8_t& value)
1537 {
1538 return read_register8(st25r3916::command::REG_PHASE_MEASUREMENT_REFERENCE, value);
1539 }
1545 inline bool writePhaseMeasurementReference(const uint8_t value)
1546 {
1547 return write_register8(st25r3916::command::REG_PHASE_MEASUREMENT_REFERENCE, value);
1548 }
1555 {
1556 return read_register8(st25r3916::command::REG_PHASE_MEASUREMENT_AUTO_AVERAGING_DISPLAY, value);
1557 }
1563 inline bool readPhaseMeasurementDisplay(uint8_t& value)
1564 {
1565 return read_register8(st25r3916::command::REG_PHASE_MEASUREMENT_DISPLAY, value);
1566 }
1567
1574 {
1575 return read_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_CONFIGURATION, value);
1576 }
1582 inline bool writeCapacitanceMeasurementConfiguration(const uint8_t value)
1583 {
1584 return write_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_CONFIGURATION, value);
1585 }
1591 inline bool readCapacitanceMeasurementReference(uint8_t& value)
1592 {
1593 return read_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_REFERENCE, value);
1594 }
1600 inline bool writeCapacitanceMeasurementReference(const uint8_t value)
1601 {
1602 return write_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_REFERENCE, value);
1603 }
1610 {
1611 return read_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_AUTO_AVERAGING_DISPLAY, value);
1612 }
1618 inline bool readCapacitanceMeasurementDisplay(uint8_t& value)
1619 {
1620 return read_register8(st25r3916::command::REG_CAPACITANCE_MEASUREMENT_DISPLAY, value);
1621 }
1623
1626
1631 inline bool readOvershootProtectionConfiguration1(uint8_t& value)
1632 {
1633 return read_register8(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_1, value);
1634 }
1640 inline bool writeOvershootProtectionConfiguration1(const uint8_t value)
1641 {
1642 return write_register8(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_1, value);
1643 }
1649 inline bool readOvershootProtectionConfiguration2(uint8_t& value)
1650 {
1651 return read_register8(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_2, value);
1652 }
1658 inline bool writeOvershootProtectionConfiguration2(const uint8_t value)
1659 {
1660 return write_register8(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_2, value);
1661 }
1667 inline bool readOvershootProtectionConfiguration(uint16_t& value)
1668 {
1669 return read_register16(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_1, value);
1670 }
1676 inline bool writeOvershootProtectionConfiguration(const uint16_t value)
1677 {
1678 return write_register16(st25r3916::command::REG_OVERSHOOT_PROTECTION_CONFIGURATION_1, value);
1679 }
1680
1686 inline bool readUndershootProtectionConfiguration1(uint8_t& value)
1687 {
1688 return read_register8(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1, value);
1689 }
1695 inline bool writeUndershootProtectionConfiguration1(const uint8_t value)
1696 {
1697 return write_register8(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1, value);
1698 }
1704 inline bool readUndershootProtectionConfiguration2(uint8_t& value)
1705 {
1706 return read_register8(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_2, value);
1707 }
1713 inline bool writeUndershootProtectionConfiguration2(const uint8_t value)
1714 {
1715 return write_register8(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_2, value);
1716 }
1722 inline bool readUndershootProtectionConfiguration(uint16_t& value)
1723 {
1724 return read_register16(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1, value);
1725 }
1731 inline bool writeUndershootProtectionConfiguration(const uint16_t value)
1732 {
1733 return write_register16(st25r3916::command::REG_UNDERSHOOT_PROTECTION_CONFIGURATION_1, value);
1734 }
1736
1739
1745 bool readICIdentity(uint8_t& type, uint8_t& rev);
1747
1750
1755 bool disableField();
1760 bool enableField();
1762
1763 // ----------------------------------------------------------------------------------------------
1766
1777 uint32_t nfcaTransceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
1778 const uint32_t timeout_ms, const uint16_t min_rx_len = 0);
1786 bool nfcaTransmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms);
1788 bool nfcaEmulationTransmit(const uint8_t* tx, const uint16_t tx_len);
1797 bool nfcaReceive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms, const uint16_t min_rx_len = 0);
1798
1804 inline bool nfcaRequest(uint16_t& atqa)
1805 {
1806 return nfca_request_wakeup(atqa, true);
1807 }
1813 inline bool nfcaWakeup(uint16_t& atqa)
1814 {
1815 return nfca_request_wakeup(atqa, false);
1816 }
1825 bool nfcaSelectWithAnticollision(bool& completed, m5::nfc::a::PICC& picc, const uint8_t lv);
1831 bool nfcaSelect(const m5::nfc::a::PICC& picc);
1839 bool nfcaReadBlock(uint8_t rx[16], const uint8_t block);
1847 bool nfcaWriteBlock(const uint8_t block, const uint8_t tx[16]);
1852 bool nfcaHlt();
1854
1855 // ----------------------------------------------------------------------------------------------
1858
1866 const m5::nfc::a::PICC& picc, const uint8_t block,
1867 const m5::nfc::a::mifare::classic::Key& key = m5::nfc::a::mifare::classic::DEFAULT_KEY)
1868 {
1869 return mifare_classic_authenticate(m5::nfc::a::Command::AUTH_WITH_KEY_A, picc, block, key);
1870 }
1879 const m5::nfc::a::PICC& picc, const uint8_t block,
1880 const m5::nfc::a::mifare::classic::Key& key = m5::nfc::a::mifare::classic::DEFAULT_KEY)
1881 {
1882 return mifare_classic_authenticate(m5::nfc::a::Command::AUTH_WITH_KEY_B, picc, block, key);
1883 }
1891 bool mifareClassicValueBlock(const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg = 0);
1893
1894 // ----------------------------------------------------------------------------------------------
1897
1906 bool nfcbTransceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
1907 const uint32_t timeout_ms, const uint16_t min_rx_len = 0);
1915 bool nfcbTransmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms);
1923 bool nfcbReceive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms, const uint16_t min_rx_len = 0);
1925
1926 // ----------------------------------------------------------------------------------------------
1929
1938 bool nfcfTransceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
1939 const uint32_t timeout_ms, const uint16_t min_rx_len = 0);
1947 bool nfcfTransmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms);
1949 bool nfcfEmulationTransmit(const uint8_t* tx, const uint16_t tx_len);
1957 bool nfcfReceive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms, const uint16_t min_rx_len = 0);
1959
1960 // ----------------------------------------------------------------------------------------------
1963
1975 bool nfcvTransceive(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_bytes,
1976 const uint32_t timeout_ms,
1977 const m5::nfc::v::ModulationMode mode = m5::nfc::v::ModulationMode::OneOf4,
1978 const uint16_t min_rx_len = 0);
1987 bool nfcvTransmit(const uint8_t* tx, const uint16_t tx_len, const uint32_t timeout_ms,
1988 const m5::nfc::v::ModulationMode mode = m5::nfc::v::ModulationMode::OneOf4);
1997 bool nfcvReceive(uint8_t* rx, uint16_t& rx_len, const uint32_t timeout_ms, const uint16_t min_rx_len = 0);
1999
2003 bool writePtMemoryA(const uint8_t* tx, const uint32_t tx_len);
2005 bool writePtMemoryF(const uint8_t* tx, const uint32_t tx_len);
2007 bool writePtMemoryTSN(const uint8_t* tx, const uint32_t tx_len);
2009 bool readPtMemory(uint8_t* rx, const uint32_t rx_len);
2011
2012 // For debug
2013 void dumpRegister();
2014
2015protected:
2016 friend struct m5::nfc::ListenerST25R3916ForA;
2017 friend struct m5::nfc::ListenerST25R3916ForF;
2018
2019 static void IRAM_ATTR on_irq(void* arg);
2020
2021 bool read_register8(const uint8_t reg, uint8_t& v);
2022 bool read_register8(const uint16_t reg, uint8_t& v);
2023 bool write_register8(const uint8_t reg, const uint8_t v);
2024 bool write_register8(const uint16_t reg, const uint8_t v);
2025 bool read_register16(const uint8_t reg, uint16_t& v);
2026 bool read_register16(const uint16_t reg, uint16_t& v);
2027 bool write_register16(const uint8_t reg, const uint16_t v);
2028 bool write_register16(const uint16_t reg, const uint16_t v);
2029 bool read_register32(const uint8_t reg, uint32_t& v);
2030 bool read_register32(const uint16_t reg, uint32_t& v);
2031 bool write_register32(const uint8_t reg, const uint32_t v);
2032 bool write_register32(const uint16_t reg, const uint32_t v);
2033
2034 bool write_fwt_timer(const uint32_t ms);
2035 bool write_mask_receiver_timer(const uint32_t us);
2036 bool write_squelch_timer(const uint32_t us);
2037
2038 uint32_t wait_for_interrupt(const uint32_t irq, const uint32_t timeout_ms = 100);
2039
2040 bool wait_for_FIFO(const uint32_t timeout_ms, const uint16_t required_size = 0);
2041 bool read_FIFO(std::vector<uint8_t>& out);
2042
2043 // Mode configuration
2044 bool configure_nfc_a();
2045 bool configure_nfc_b();
2046 bool configure_nfc_f();
2047 bool configure_nfc_v();
2048 bool nfc_initial_field_on();
2049
2050 bool configure_emulation_a();
2051 bool configure_emulation_f();
2052
2053 // Utility
2054 bool modify_bit_register8(const uint8_t reg, const uint8_t set_mask, const uint8_t clear_mask);
2055 bool modify_bit_register8(const uint16_t reg, const uint8_t set_mask, const uint8_t clear_mask);
2056 bool set_bit_register8(const uint8_t reg, const uint8_t bits);
2057 bool set_bit_register8(const uint16_t reg, const uint8_t bits);
2058 bool clear_bit_register8(const uint8_t reg, const uint8_t bits);
2059 bool clear_bit_register8(const uint16_t reg, const uint8_t bits);
2060 inline bool change_bit_register8(const uint8_t reg, const uint8_t bits, const uint8_t mask)
2061 {
2062 return modify_bit_register8(reg, mask & bits, mask);
2063 }
2064 inline bool change_bit_register8(const uint16_t reg, const uint8_t bits, const uint8_t mask)
2065 {
2066 return modify_bit_register8(reg, mask & bits, mask);
2067 }
2068 bool change_test_bit_register8(const uint8_t reg, const uint8_t bits, const uint8_t mask);
2069 bool change_test_bit_register8(const uint16_t reg, const uint8_t bits, const uint8_t mask);
2070
2071 bool modify_interrupts(const uint32_t clr, const uint32_t set);
2072 inline bool enable_interrupts(const uint32_t mask)
2073 {
2074 return modify_interrupts(mask, 0);
2075 }
2076 inline bool disable_interrupts(const uint32_t mask)
2077 {
2078 return modify_interrupts(0, mask);
2079 }
2080
2081 bool enable_osc();
2082 bool disable_field();
2083
2084 // NFC-A
2085 bool nfca_request_wakeup(uint16_t& atqa, const bool req);
2086 bool nfca_anti_collision(uint8_t rbuf[5], const uint8_t lv);
2087
2088 // MIFARE
2089 bool mifare_classic_send_encrypt(const uint8_t* tx, const uint16_t tx_len);
2090 bool mifare_classic_transceive_encrypt(uint8_t* rx, uint16_t& rx_len, const uint8_t* tx, const uint16_t tx_len,
2091 const uint32_t timeout_ms, const bool include_crc, const bool decrypt);
2092 bool mifare_classic_authenticate(const m5::nfc::a::Command cmd, const m5::nfc::a::PICC& picc, const uint8_t block,
2094
2095private:
2096 config_t _cfg{};
2097
2098 volatile uint32_t _stored_irq{};
2099 uint32_t _enabled_irq{}; // for !_using_irq
2100
2101 volatile bool _interrupt_occurred{};
2102 m5::nfc::NFC _nfcMode{};
2103 bool _encrypted{};
2104 bool _using_irq{};
2105
2107};
2108
2114 M5_UNIT_COMPONENT_HPP_BUILDER(CapST25R3916, 0x06 /* SPI CS pin */);
2115
2116public:
2121 explicit CapST25R3916(const uint8_t cs_pin = DEFAULT_ADDRESS);
2122 virtual ~CapST25R3916() = default;
2123
2128 virtual bool begin() override;
2129};
2130
2131} // namespace unit
2132} // namespace m5
2133#endif
Definitions for ST25R3916.
InitiatorOperationMode
Initiator operation modes.
Definition ST25R3916_definition.hpp:29
TargetOperationMode
Target operation modes.
Definition ST25R3916_definition.hpp:44
Crypto1 for MIFARE Classic.
Definition mifare_classic_crypto1.hpp:27
ST25R3916 unit in CapCC1101 (SPI)
Definition unit_ST25R3916.hpp:2113
CapST25R3916(const uint8_t cs_pin=DEFAULT_ADDRESS)
Constructor.
Definition unit_ST25R3916.cpp:774
virtual bool begin() override
Initialize the unit.
Definition unit_ST25R3916.cpp:783
ST25R3916 Unit.
Definition unit_ST25R3916.hpp:39
bool readFIFOStatus(uint16_t &value)
Read the FIFO status 1-2.
Definition unit_ST25R3916.hpp:1019
bool readPhaseMeasurementAutoAveragingDisplay(uint8_t &value)
Read the phase measurement auto-averaging display.
Definition unit_ST25R3916.hpp:1554
bool writeMaskTimerAndNFCInterrupt(const uint8_t value)
Write the mask timer and NFC interrupt.
Definition unit_ST25R3916.hpp:877
bool nfcbTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const uint16_t min_rx_len=0)
Transceive with NFC-B PICC.
Definition unit_ST25R3916_nfcb.cpp:149
bool readCapacitanceMeasurementAutoAveragingDisplay(uint8_t &value)
Read the capacitance measurement auto-averaging display.
Definition unit_ST25R3916.hpp:1609
bool readMaskMainInterrupt(uint8_t &value)
Read the mask main interrupt.
Definition unit_ST25R3916.hpp:846
bool readOperationControl(uint8_t &value)
Read the operation control.
Definition unit_ST25R3916.hpp:269
bool writeResistiveAMModulation(const uint8_t value)
Write the resistive AM modulation.
Definition unit_ST25R3916.hpp:1325
bool readADConverterOutput(uint8_t &value)
Read the number of transmitted bytes 2.
Definition unit_ST25R3916.hpp:1131
bool writeEMDSuppressionConfiguration(const uint8_t value)
Write the EMD suppression configuration.
Definition unit_ST25R3916.hpp:445
bool writePtMemoryTSN(const uint8_t *tx, const uint32_t tx_len)
Write pattern memory TSN block.
Definition unit_ST25R3916_util.cpp:223
bool nfcaHlt()
Hlt for PICC.
Definition unit_ST25R3916_nfca.cpp:478
bool writeIOConfiguration1(const uint8_t value)
Write the I/O configuration 1.
Definition unit_ST25R3916.hpp:220
bool readSquelchTimer(uint8_t &value)
Read the squelch timer.
Definition unit_ST25R3916.hpp:806
bool readMaskReceiveTimer(uint8_t &value)
Read the mask receive timer.
Definition unit_ST25R3916.hpp:643
bool nfcaEmulationTransmit(const uint8_t *tx, const uint16_t tx_len)
Transmit in emulation (PICC) mode with minimal I2C overhead.
Definition unit_ST25R3916_nfca.cpp:208
bool readPassiveTargetInterrupt(uint8_t &value)
Read the passive target interrupt.
Definition unit_ST25R3916.hpp:985
bool readTimerAndNFCInterrupt(uint8_t &value)
Read the timer and NFC interrupt.
Definition unit_ST25R3916.hpp:966
bool readAntennaTuningControl1(uint8_t &value)
Read the Antenna tuning control 1.
Definition unit_ST25R3916.hpp:1144
bool writeMaskReceiveTimer(const uint8_t value)
Write the mask receive timer.
Definition unit_ST25R3916.hpp:652
bool writeNumberOfTransmittedBytes(const uint16_t value)
Write the number of transmitted bytes 1-2.
Definition unit_ST25R3916.hpp:1096
bool writeDirectCommand(const uint8_t cmd, const uint8_t *data=nullptr, const uint32_t dlen=0u)
Write the direct command with data.
Definition unit_ST25R3916.cpp:423
bool writeCorrelatorConfiguration(const uint16_t value)
Write the correlator configuration 1-2.
Definition unit_ST25R3916.hpp:630
bool writeExternalFieldDetectorDeactivationThreshold(const uint8_t value)
Write the external field detector deactivation threshold.
Definition unit_ST25R3916.hpp:1306
uint32_t nfcaTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const uint16_t min_rx_len=0)
Transceive.
Definition unit_ST25R3916_nfca.cpp:180
bool writeTargetOperationMode(const st25r3916::TargetOperationMode mode, const uint8_t optional=0)
Write the initiator operation mode and transition to target mode.
Definition unit_ST25R3916.cpp:458
bool readExternalFieldDetectorActivationThreshold(uint8_t &value)
Read the external field detector activation threshold.
Definition unit_ST25R3916.hpp:1279
bool readRegulatorVoltageControl(uint8_t &value)
Read the regulator voltage control.
Definition unit_ST25R3916.hpp:1347
bool readICIdentity(uint8_t &type, uint8_t &rev)
Read the IC identity.
Definition unit_ST25R3916.cpp:519
bool writeAmplitudeMeasurementReference(const uint8_t value)
Write the amplitude measurement reference.
Definition unit_ST25R3916.hpp:1490
bool writeExternalFieldDetectorActivationThreshold(const uint8_t value)
Write the external field detector activation threshold.
Definition unit_ST25R3916.hpp:1288
bool readAntennaTuningControl(uint16_t &value)
Read the Antenna tuning control 1-2.
Definition unit_ST25R3916.hpp:1180
bool writeOvershootProtectionConfiguration(const uint16_t value)
Write the overshoot protection configuration 1-2.
Definition unit_ST25R3916.hpp:1676
bool readInterrupts(uint32_t &value)
Read the all interrupt.
Definition unit_ST25R3916.cpp:429
bool readErrorAndWakeupInterrupt(uint8_t &value)
Read the error and wake-up interrupt.
Definition unit_ST25R3916.hpp:976
bool nfcfReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms, const uint16_t min_rx_len=0)
Receive from NFC-F PICC.
Definition unit_ST25R3916_nfcf.cpp:114
bool writeNoResponseTimer(const uint16_t value)
Write the no-response timer 1-2.
Definition unit_ST25R3916.hpp:706
bool readReceiverConfiguration3(uint8_t &value)
Read the receiver configuration 3.
Definition unit_ST25R3916.hpp:512
bool readSubcarrierStartTimer(uint8_t &value)
Read the subcarrier start timer.
Definition unit_ST25R3916.hpp:454
bool writeAntennaTuningControl1(const uint8_t value)
Write the Antenna tuning control 1.
Definition unit_ST25R3916.hpp:1153
bool clearInterrupts()
Clear interrupts flag.
Definition unit_ST25R3916.cpp:444
bool readNFCIP1PassiveTargetDefinition(uint8_t &value)
Read the NFCIP-1 passive target definition.
Definition unit_ST25R3916.hpp:381
bool writeSettingsISO14443A(const uint8_t value)
Write the settings for ISO14443A and NFC 106kb/s.
Definition unit_ST25R3916.hpp:336
bool readIOConfiguration2(uint8_t &value)
Read the I/O configuration 2.
Definition unit_ST25R3916.hpp:229
bool writeUndershootProtectionConfiguration1(const uint8_t value)
Write the undershoot protection configuration 1.
Definition unit_ST25R3916.hpp:1695
bool writeAmplitudeMeasurementConfiguration(const uint8_t value)
Write the amplitude measurement configuration.
Definition unit_ST25R3916.hpp:1472
bool nfcbTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
Transmit to NFC-B PICC.
Definition unit_ST25R3916_nfcb.cpp:155
bool readOvershootProtectionConfiguration(uint16_t &value)
Read the overshoot protection configuration 1-2.
Definition unit_ST25R3916.hpp:1667
bool writeReceiverConfiguration4(const uint8_t value)
Write the receiver configuration 4.
Definition unit_ST25R3916.hpp:539
bool readCapacitanceMeasurementReference(uint8_t &value)
Read the capacitance measurement reference.
Definition unit_ST25R3916.hpp:1591
bool writeIOConfiguration(const uint16_t value)
Definition unit_ST25R3916.hpp:256
bool readSettingsFelica(uint8_t &value)
Read the settings for ISO14443B and FeliCa.
Definition unit_ST25R3916.hpp:363
void config(const config_t &cfg)
Set the configuration.
Definition unit_ST25R3916.hpp:93
bool writeGeneralPurposeTimer2(const uint8_t value)
Write the general purpose timer 2.
Definition unit_ST25R3916.hpp:760
bool writeSettingsISO14443B(const uint8_t value)
Write the settings for ISO14443B.
Definition unit_ST25R3916.hpp:354
bool writePPON2FieldWaiting(const uint8_t value)
Write the PPON2 field waiting.
Definition unit_ST25R3916.hpp:796
bool readTXDriverTimingDisplay(uint8_t &value)
Read the TX driver timing display.
Definition unit_ST25R3916.hpp:1334
bool writeBitrateDefinition(const uint8_t value)
Write the bitrate definition.
Definition unit_ST25R3916.hpp:314
bool nfcaWriteBlock(const uint8_t block, const uint8_t tx[16])
Write the 1 block / 4 pages (16 bytes)
Definition unit_ST25R3916_nfca.cpp:522
bool readPtMemory(uint8_t *rx, const uint32_t rx_len)
Read pattern memory.
Definition unit_ST25R3916_util.cpp:232
bool writeWakeupTimerControl(const uint8_t value)
Write the Wake-up timer control.
Definition unit_ST25R3916.hpp:1453
bool nfcaRequest(uint16_t &atqa)
Request for idle PICC.
Definition unit_ST25R3916.hpp:1804
bool readBitrateDefinition(uint8_t &value)
Read the bitrate definition.
Definition unit_ST25R3916.hpp:305
bool readFIFOStatus1(uint8_t &value)
Read the FIFO status 1.
Definition unit_ST25R3916.hpp:1001
bool readFIFOStatus2(uint8_t &value)
Read the FIFO status 1.
Definition unit_ST25R3916.hpp:1010
bool writeCapacitiveSensorControl(const uint8_t value)
Write the capacitive sensor control.
Definition unit_ST25R3916.hpp:1409
bool readMaskTimerAndNFCInterrupt(uint8_t &value)
Read the mask timer and NFC interrupt.
Definition unit_ST25R3916.hpp:868
bool writeOperationControl(const uint8_t value)
Write the operation control.
Definition unit_ST25R3916.hpp:278
bool readStreamModeDefinition(uint8_t &value)
Read the stream mode definition.
Definition unit_ST25R3916.hpp:399
bool mifareClassicAuthenticateB(const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
Authentication using keyB of the specified block.
Definition unit_ST25R3916.hpp:1878
bool writeTXDriverTiming(const uint8_t value)
Write the TX driver timing.
Definition unit_ST25R3916.hpp:1266
bool writeCorrelatorConfiguration1(const uint8_t value)
Write the correlator configuration 1.
Definition unit_ST25R3916.hpp:594
bool nfcfTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const uint16_t min_rx_len=0)
Transceive with NFC-F PICC.
Definition unit_ST25R3916_nfcf.cpp:79
bool writeCapacitanceMeasurementReference(const uint8_t value)
Write the capacitance measurement reference.
Definition unit_ST25R3916.hpp:1600
bool readAuxiliaryModulationSetting(uint8_t &value)
Read the auxiliary modulation setting.
Definition unit_ST25R3916.hpp:1239
bool writeFIFO(const uint8_t *buf, const uint16_t buf_size)
Write to FIFO.
Definition unit_ST25R3916.cpp:505
bool readMaskInterrupts(uint32_t &value)
Read the all mask.
Definition unit_ST25R3916.hpp:934
bool readMaskPassiveTargetInterrupt(uint8_t &value)
Read the mask passive target interrupt.
Definition unit_ST25R3916.hpp:912
bool readUndershootProtectionConfiguration(uint16_t &value)
Read the undershoot protection configuration 1-2.
Definition unit_ST25R3916.hpp:1722
bool writeCorrelatorConfiguration2(const uint8_t value)
Write the correlator configuration 2.
Definition unit_ST25R3916.hpp:612
bool writeOvershootProtectionConfiguration2(const uint8_t value)
Write the overshoot protection configuration 2.
Definition unit_ST25R3916.hpp:1658
bool nfcvReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms, const uint16_t min_rx_len=0)
Receive from NFC-V PICC.
Definition unit_ST25R3916_nfcv.cpp:132
bool writeGeneralPurposeTimer(const uint16_t value)
Write the general purpose timer 1-2.
Definition unit_ST25R3916.hpp:778
bool readReceiverConfiguration(uint32_t &value)
Read the receiver configuration 1-4.
Definition unit_ST25R3916.hpp:548
bool nfcbReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms, const uint16_t min_rx_len=0)
Receive from NFC-B PICC.
Definition unit_ST25R3916_nfcb.cpp:175
bool readPhaseMeasurementConfiguration(uint8_t &value)
Read the phase measurement configuration.
Definition unit_ST25R3916.hpp:1518
bool readReceiverConfiguration2(uint8_t &value)
Read the receiver configuration 2.
Definition unit_ST25R3916.hpp:494
bool readSettingsISO14443A(uint8_t &value)
Read the settings for ISO14443A and NFC 106kb/s.
Definition unit_ST25R3916.hpp:327
bool nfcaReceive(uint8_t *rx, uint16_t &rx_len, const uint32_t timeout_ms, const uint16_t min_rx_len=0)
Receive raw bytes (no transmit)
Definition unit_ST25R3916_nfca.cpp:218
bool writeInitiatorOperationMode(const st25r3916::InitiatorOperationMode mode, const uint8_t optional=0)
Write the initiator operation mode and transition to initiator mode.
Definition unit_ST25R3916.cpp:451
bool writeP2PReceiverConfiguration(const uint8_t value)
Write the P2P receiver configuration.
Definition unit_ST25R3916.hpp:576
bool writeNoResponseTimer2(const uint8_t value)
Write the no-response timer 2.
Definition unit_ST25R3916.hpp:688
bool configureNFCMode(const m5::nfc::NFC mode)
Configure NFC mode.
Definition unit_ST25R3916.cpp:291
uint32_t readFIFO(uint16_t &actual, uint8_t *buf, const uint16_t buf_size)
Read from FIFO.
Definition unit_ST25R3916.cpp:484
bool readAmplitudeMeasurementConfiguration(uint8_t &value)
Read the amplitude measurement configuration.
Definition unit_ST25R3916.hpp:1463
bool readGainReductionState(uint8_t &value)
Read the gain reduction state.
Definition unit_ST25R3916.hpp:1387
bool writeNumberOfTransmittedBytes1(const uint8_t value)
Write the number of transmitted bytes 1.
Definition unit_ST25R3916.hpp:1060
bool readCapacitanceMeasurementDisplay(uint8_t &value)
Read the capacitance measurement display.
Definition unit_ST25R3916.hpp:1618
bool writeNoResponseTimer1(const uint8_t value)
Write the no-response timer 1.
Definition unit_ST25R3916.hpp:670
bool isNFCMode(const m5::nfc::NFC mode) const
Is the current operating mode the one specified?
Definition unit_ST25R3916.hpp:125
bool writePtMemoryA(const uint8_t *tx, const uint32_t tx_len)
Write pattern memory for NFC-A target.
Definition unit_ST25R3916_util.cpp:205
bool writeNFCFieldOnGuardTimer(const uint8_t value)
Write the NFC field on guard timer.
Definition unit_ST25R3916.hpp:833
bool readMainInterrupt(uint8_t &value)
Read the main interrupt.
Definition unit_ST25R3916.hpp:957
bool readAmplitudeMeasurementDisplay(uint8_t &value)
Read the amplitude measurement display.
Definition unit_ST25R3916.hpp:1508
bool readNumberOfTransmittedBytes1(uint8_t &value)
Read the number of transmitted bytes 1.
Definition unit_ST25R3916.hpp:1051
bool writePassiveTargetModulation(const uint8_t value)
Write the passive target modulation.
Definition unit_ST25R3916.hpp:1229
bool writeMaskErrorAndWakeupInterrupt(const uint8_t value)
Write the mask error and wake-up interrupt.
Definition unit_ST25R3916.hpp:899
bool readGeneralPurposeTimer2(uint8_t &value)
Read the general purpose timer 2.
Definition unit_ST25R3916.hpp:751
bool writeBitrate(const m5::nfc::Bitrate tx, const m5::nfc::Bitrate rx)
Set the bitrate for TX/RX.
Definition unit_ST25R3916.cpp:465
bool writePhaseMeasurementReference(const uint8_t value)
Write the phase measurement reference.
Definition unit_ST25R3916.hpp:1545
bool readEMDSuppressionConfiguration(uint8_t &value)
Read the EMD suppression configuration.
Definition unit_ST25R3916.hpp:436
bool readOvershootProtectionConfiguration1(uint8_t &value)
Read the overshoot protection configuration 1.
Definition unit_ST25R3916.hpp:1631
bool writePhaseMeasurementConfiguration(const uint8_t value)
Write the phase measurement configuration.
Definition unit_ST25R3916.hpp:1527
bool writeIOConfiguration2(const uint8_t value)
Definition unit_ST25R3916.hpp:238
bool writeUndershootProtectionConfiguration2(const uint8_t value)
Write the undershoot protection configuration 2.
Definition unit_ST25R3916.hpp:1713
bool readP2PReceiverConfiguration(uint8_t &value)
Read the P2P receiver configuration.
Definition unit_ST25R3916.hpp:567
bool writeRegulatorVoltageControl(const uint8_t value)
Write the regulator voltage control.
Definition unit_ST25R3916.hpp:1356
bool writeTimerAndEMVControl(const uint8_t value)
Write the timer and EMV control.
Definition unit_ST25R3916.hpp:724
bool writeNumberOfTransmittedBytes2(const uint8_t value)
Write the number of transmitted bytes 2.
Definition unit_ST25R3916.hpp:1078
bool writeReceiverConfiguration1(const uint8_t value)
Write the receiver configuration 1.
Definition unit_ST25R3916.hpp:485
bool nfcaTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
Transmit raw bytes (no receive)
Definition unit_ST25R3916_nfca.cpp:190
bool readGeneralPurposeTimer(uint16_t &value)
Read the general purpose timer 1-2.
Definition unit_ST25R3916.hpp:769
bool nfcaReadBlock(uint8_t rx[16], const uint8_t block)
Read the 1 block / 4 pages (16 bytes)
Definition unit_ST25R3916_nfca.cpp:507
bool readTXDriver(uint8_t &value)
Read the TX driver.
Definition unit_ST25R3916.hpp:1202
bool mifareClassicValueBlock(const m5::nfc::a::Command cmd, const uint8_t block, const uint32_t arg=0)
Operation for the value block.
Definition unit_ST25R3916_nfca.cpp:773
bool readRegulatorDisplay(uint8_t &value)
Read the regulator display.
Definition unit_ST25R3916.hpp:1365
bool readMaskErrorAndWakeupInterrupt(uint8_t &value)
Read the mask error and wake-up interrupt.
Definition unit_ST25R3916.hpp:890
bool writeMaskMainInterrupt(const uint8_t value)
Write the mask main interrupt.
Definition unit_ST25R3916.hpp:855
bool readIOConfiguration(uint16_t &value)
Read the I/O configuration 1-2.
Definition unit_ST25R3916.hpp:247
bool nfcvTransceive(uint8_t *rx, uint16_t &rx_len, const uint8_t *tx, const uint16_t tx_bytes, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4, const uint16_t min_rx_len=0)
Transceive.
Definition unit_ST25R3916_nfcv.cpp:90
virtual bool begin() override
Initialize the unit.
Definition unit_ST25R3916.cpp:121
bool readCollisionDisplay(uint8_t &value)
Read the collision display.
Definition unit_ST25R3916.hpp:1029
bool readExternalFieldDetectorDeactivationThreshold(uint8_t &value)
Read the external field detector deactivation threshold.
Definition unit_ST25R3916.hpp:1297
bool readCorrelatorConfiguration(uint16_t &value)
Read the correlator configuration 1-2.
Definition unit_ST25R3916.hpp:621
bool readOvershootProtectionConfiguration2(uint8_t &value)
Read the overshoot protection configuration 2.
Definition unit_ST25R3916.hpp:1649
UnitST25R3916(const uint8_t arg=DEFAULT_ADDRESS)
Constructor.
Definition unit_ST25R3916.hpp:47
bool writeMaskPassiveTargetInterrupt(const uint8_t value)
Write the mask passive target interrupt.
Definition unit_ST25R3916.hpp:921
bool nfcfEmulationTransmit(const uint8_t *tx, const uint16_t tx_len)
Transmit in emulation (PICC) mode with minimal I2C overhead.
Definition unit_ST25R3916_nfcf.cpp:104
config_t config()
Gets the configuration.
Definition unit_ST25R3916.hpp:85
bool writeReceiverConfiguration(const uint32_t value)
Write the receiver configuration 1-4.
Definition unit_ST25R3916.hpp:557
bool nfcaWakeup(uint16_t &atqa)
Wakeup for idle/halt PICC.
Definition unit_ST25R3916.hpp:1813
bool writeGeneralPurposeTimer1(const uint8_t value)
Write the general purpose timer 1.
Definition unit_ST25R3916.hpp:742
bool writeAuxiliaryModulationSetting(const uint8_t value)
Write the auxiliary modulation setting.
Definition unit_ST25R3916.hpp:1248
bool readCapacitiveSensorDisplay(uint8_t &value)
Read the capacitive sensor display.
Definition unit_ST25R3916.hpp:1418
bool readTimerAndEMVControl(uint8_t &value)
Read the timer and EMV control.
Definition unit_ST25R3916.hpp:715
bool readPhaseMeasurementReference(uint8_t &value)
Read the phase measurement reference.
Definition unit_ST25R3916.hpp:1536
bool disableField()
Disable the Field to stop communication with the PICC.
Definition unit_ST25R3916.cpp:531
bool readNoResponseTimer1(uint8_t &value)
Read the no-response timer 1.
Definition unit_ST25R3916.hpp:661
bool writeNumberOfTransmittedBytes(const uint16_t bytes, const uint8_t bits)
Write the number of transmitted bytes and after bytes.
Definition unit_ST25R3916.hpp:1107
bool readGeneralPurposeTimer1(uint8_t &value)
Read the general purpose timer 1.
Definition unit_ST25R3916.hpp:733
bool writeSquelchTimer(const uint8_t value)
Write the squelch timer.
Definition unit_ST25R3916.hpp:815
bool writeSettingsFelica(const uint8_t value)
Write the settings for ISO14443B and FeliCa.
Definition unit_ST25R3916.hpp:372
bool readReceiverConfiguration4(uint8_t &value)
Definition unit_ST25R3916.hpp:530
bool readNoResponseTimer(uint16_t &value)
Read the no-response timer 1-2.
Definition unit_ST25R3916.hpp:697
bool readCapacitiveSensorControl(uint8_t &value)
Read the capacitive sensor control.
Definition unit_ST25R3916.hpp:1400
bool readFIFOSize(uint16_t &bytes, uint8_t &bits)
Read the FIFO size.
Definition unit_ST25R3916.cpp:471
bool writeMaskInterrupts(const uint32_t value)
Write the all mask.
Definition unit_ST25R3916.hpp:943
bool writeReceiverConfiguration3(const uint8_t value)
Write the receiver configuration 3.
Definition unit_ST25R3916.hpp:521
bool writeNFCIP1PassiveTargetDefinition(const uint8_t value)
Definition unit_ST25R3916.hpp:390
m5::nfc::NFC NFCMode() const
Gets the current operating mode.
Definition unit_ST25R3916.hpp:103
bool readBitrateDetectionDisplay(uint8_t &value)
Read the bit rate detection display.
Definition unit_ST25R3916.hpp:1118
bool readCapacitanceMeasurementConfiguration(uint8_t &value)
Read the capacitance measurement configuration.
Definition unit_ST25R3916.hpp:1573
bool readNFCFieldOnGuardTimer(uint8_t &value)
Read the NFC field on guard timer.
Definition unit_ST25R3916.hpp:824
bool writeAuxiliaryDefinition(const uint8_t value)
Write the Auxiliary definition.
Definition unit_ST25R3916.hpp:426
bool readAntennaTuningControl2(uint8_t &value)
Read the Antenna tuning control 2.
Definition unit_ST25R3916.hpp:1162
bool readSettingsISO14443B(uint8_t &value)
Read the settings for ISO14443B.
Definition unit_ST25R3916.hpp:345
bool readCorrelatorConfiguration2(uint8_t &value)
Read the correlator configuration 2.
Definition unit_ST25R3916.hpp:603
bool writeAntennaTuningControl(const uint16_t value)
Write the Antenna tuning control 1-2.
Definition unit_ST25R3916.hpp:1189
bool nfcvTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms, const m5::nfc::v::ModulationMode mode=m5::nfc::v::ModulationMode::OneOf4)
Transmit to NFC-V PICC.
Definition unit_ST25R3916_nfcv.cpp:99
bool readPPON2FieldWaiting(uint8_t &value)
Read the PPON2 field waiting.
Definition unit_ST25R3916.hpp:787
bool writeModeDefinition(const uint8_t value)
Write the mode definition.
Definition unit_ST25R3916.hpp:296
bool configureEmulationMode(const m5::nfc::NFC mode)
Configure NFC mode for emulation.
Definition unit_ST25R3916.cpp:332
bool readUndershootProtectionConfiguration1(uint8_t &value)
Read the undershoot protection configuration 1.
Definition unit_ST25R3916.hpp:1686
bool readNumberOfTransmittedBytes(uint16_t &value)
Read the number of transmitted bytes 1-2.
Definition unit_ST25R3916.hpp:1087
bool enableField()
Enable the Field to begin supplying power to the PICC and start communication.
Definition unit_ST25R3916.cpp:541
bool readAmplitudeMeasurementAutoAveragingDisplay(uint8_t &value)
Read the amplitude measurement auto-averaging display.
Definition unit_ST25R3916.hpp:1499
bool readWakeupTimerControl(uint8_t &value)
Read the Wake-up timer control.
Definition unit_ST25R3916.hpp:1444
bool writeAntennaTuningControl2(const uint8_t value)
Write the Antenna tuning control 2.
Definition unit_ST25R3916.hpp:1171
bool readPassiveTargetDisplay(uint8_t &value)
Read the passive target.
Definition unit_ST25R3916.hpp:1038
bool writeStreamModeDefinition(const uint8_t value)
Write the stream mode definition.
Definition unit_ST25R3916.hpp:408
virtual void update(const bool force=false) override
Update the unit state.
Definition unit_ST25R3916.cpp:281
bool readModeDefinition(uint8_t &value)
Read the mode definition.
Definition unit_ST25R3916.hpp:287
bool readPhaseMeasurementDisplay(uint8_t &value)
Read the phase measurement display.
Definition unit_ST25R3916.hpp:1563
bool readAmplitudeMeasurementReference(uint8_t &value)
Read the amplitude measurement reference.
Definition unit_ST25R3916.hpp:1481
bool nfcaSelect(const m5::nfc::a::PICC &picc)
Select specific PICC.
Definition unit_ST25R3916_nfca.cpp:431
bool readIOConfiguration1(uint8_t &value)
Read the I/O configuration 1.
Definition unit_ST25R3916.hpp:211
bool writeReceiverConfiguration2(const uint8_t value)
Write the receiver configuration 2.
Definition unit_ST25R3916.hpp:503
bool readNoResponseTimer2(uint8_t &value)
Read the no-response timer 2.
Definition unit_ST25R3916.hpp:679
bool readRSSIDisplay(uint8_t &value)
Read the external field detector deactivation threshold.
Definition unit_ST25R3916.hpp:1378
bool readCorrelatorConfiguration1(uint8_t &value)
Read the correlator configuration 1.
Definition unit_ST25R3916.hpp:585
bool writeTXDriver(const uint8_t value)
Write the TX driver.
Definition unit_ST25R3916.hpp:1211
bool writeUndershootProtectionConfiguration(const uint16_t value)
Write the undershoot protection configuration 1-2.
Definition unit_ST25R3916.hpp:1731
bool readUndershootProtectionConfiguration2(uint8_t &value)
Read the undershoot protection configuration 2.
Definition unit_ST25R3916.hpp:1704
bool writePtMemoryF(const uint8_t *tx, const uint32_t tx_len)
Write pattern memory for NFC-F target.
Definition unit_ST25R3916_util.cpp:214
bool readAuxiliaryDefinition(uint8_t &value)
Read the Auxiliary definition.
Definition unit_ST25R3916.hpp:417
bool readReceiverConfiguration1(uint8_t &value)
Read the receiver configuration 1.
Definition unit_ST25R3916.hpp:476
bool nfcaSelectWithAnticollision(bool &completed, m5::nfc::a::PICC &picc, const uint8_t lv)
Select PICC with anti-collision.
Definition unit_ST25R3916_nfca.cpp:371
bool readAuxiliaryDisplay(uint8_t &value)
Read the auxiliary display.
Definition unit_ST25R3916.hpp:1431
bool writeSubcarrierStartTimer(const uint8_t value)
Write the subcarrier start timer.
Definition unit_ST25R3916.hpp:463
bool readResistiveAMModulation(uint8_t &value)
Read the resistive AM modulation.
Definition unit_ST25R3916.hpp:1316
bool nfcfTransmit(const uint8_t *tx, const uint16_t tx_len, const uint32_t timeout_ms)
Transmit to NFC-F PICC.
Definition unit_ST25R3916_nfcf.cpp:85
bool writeOvershootProtectionConfiguration1(const uint8_t value)
Write the overshoot protection configuration 1.
Definition unit_ST25R3916.hpp:1640
bool readNumberOfTransmittedBytes2(uint8_t &value)
Read the number of transmitted bytes 2.
Definition unit_ST25R3916.hpp:1069
bool mifareClassicAuthenticateA(const m5::nfc::a::PICC &picc, const uint8_t block, const m5::nfc::a::mifare::classic::Key &key=m5::nfc::a::mifare::classic::DEFAULT_KEY)
Authentication using keyA of the specified block.
Definition unit_ST25R3916.hpp:1865
bool readTXDriverTiming(uint8_t &value)
Read the TX driver timing.
Definition unit_ST25R3916.hpp:1257
bool readPassiveTargetModulation(uint8_t &value)
Read the passive target modulation.
Definition unit_ST25R3916.hpp:1220
bool writeCapacitanceMeasurementConfiguration(const uint8_t value)
Write the capacitance measurement configuration.
Definition unit_ST25R3916.hpp:1582
MIFARE definitions.
std::array< uint8_t, 6 > Key
MIFARE classic Key.
Definition mifare.hpp:50
Crypto1 for MIFARE Classic.
Top level namespace of M5Stack.
NFC related definitions.
Unit-related namespace.
NFC-V definitions.
NFC definitions.
NFC
NFC type.
Definition nfc.hpp:27
Bitrate
Communication bitrate.
Definition nfc.hpp:52
NFC-A definitions.
Command
ISO-14443-3/4,MIFARE,NTAG commands.
Definition nfca.hpp:684
NFC-B definitions.
NFC-F definitions.
NFC-V definitions.
ModulationMode
Definition nfcv.hpp:73
Definition emulation_layer_a_ST25R3916.cpp:52
Definition emulation_layer_f_ST25R3916.cpp:68
PICC for NFC-A.
Definition nfca.hpp:481
Settings for begin.
Definition unit_ST25R3916.hpp:70
bool using_irq
Exists IRQ PIN?
Definition unit_ST25R3916.hpp:74
bool vdd_voltage_5V
VDD voltage true:5V false:3.3V.
Definition unit_ST25R3916.hpp:72
m5::nfc::NFC mode
Initial target for Poll/Listen.
Definition unit_ST25R3916.hpp:71
uint8_t irq
IRQ PIN.
Definition unit_ST25R3916.hpp:75
bool emulation
Emulation mode?
Definition unit_ST25R3916.hpp:76
uint8_t tx_am_modulation
0-15 See also 4.5.48 TX driver register
Definition unit_ST25R3916.hpp:73