10#ifndef M5_UNIT_RFID_UNIT_UNIT_JRD4035_HPP
11#define M5_UNIT_RFID_UNIT_UNIT_JRD4035_HPP
50 virtual ~UnitJRD4035() =
default;
52 virtual bool begin()
override;
83 virtual bool writeIdle(
const bool enter,
const uint8_t minutes = 0)
override;
84 virtual bool wake()
override;
120 virtual bool sleep()
override;
123 const size_t mask_len)
override;
126 const uint16_t word_count,
const uint32_t access_password)
override;
128 const size_t len,
const uint32_t access_password)
override;
132 const uint8_t block_range,
const uint8_t* mask,
const size_t mask_len,
133 const uint32_t access_password,
const bool allow_permanent)
override;
134 virtual TagResult qtCommand(uint16_t& control,
const bool write,
const bool persistent,
135 const uint32_t access_password)
override;
138 virtual bool nxpEASAlarm(std::vector<uint8_t>& alarm)
override;
143 virtual bool pump(
const uint32_t timeout_ms)
override;
144 virtual bool start_polling_command(
const uint16_t count)
override;
145 virtual bool stop_polling_command()
override;
148 bool send_command(
const uint8_t command,
const uint8_t* param,
const uint16_t param_len);
161 bool send_and_wait(
m100::Frame& response,
const uint8_t command,
const uint8_t* param,
const uint16_t param_len,
162 const uint32_t timeout_ms = 0,
const uint8_t answer_command = 0);
164 bool read_frame(
m100::Frame& out,
const uint32_t timeout_ms);
170 void resynchronize();
172 bool read_module_information_kind(std::string& out,
const uint8_t kind);
183 bool succeeded(
const m100::Frame& response,
const char* what)
const;
199 static uint8_t error_code_of(
const m100::Frame& response);
215 TagResult send_tag_operation(
m100::Frame& response,
const uint8_t command,
const uint8_t* param,
216 const uint16_t param_len,
const char* what,
const uint8_t answer_command = 0);
219 uint8_t _frame_header{m100::jrd::FRAME_HEADER};
221 uint8_t _frame_end{m100::jrd::FRAME_END};
225 std::vector<uint8_t> _rx{};
227 m100::Frame _response{};
228 bool _response_pending{};
229 uint8_t _awaiting_command{};
233 config_t _cfg_jrd4035{};
Non-instantiable base class for UHF-RFID reader units.
Definition unit_UHFRFID.hpp:64
config_t config() const
Gets the configuration.
Definition unit_UHFRFID.hpp:102
UHF-RFID unit based on the JRD-4035 module (magicRF M100)
Definition unit_JRD4035.hpp:26
virtual bool writeTransmitPower(const int16_t dbm100) override
Write the transmit power in 1/100 dBm.
Definition unit_JRD4035.cpp:582
virtual bool writeQueryParameters(const m5::uhf::QueryParameters &qp) override
Write the query parameters.
Definition unit_JRD4035.cpp:668
virtual bool writeSelectEnabled(const bool enable) override
Apply the stored mask to tag operations, or stop applying it.
Definition unit_JRD4035.cpp:1163
virtual bool readBlockingSignal(m5::uhf::ChannelLevels &levels) override
Measure the blocking signal on every channel of the operating region.
Definition unit_JRD4035.cpp:1006
bool readDemodulatorParameters(m100::DemodulatorParameters &dp)
Read the receiver demodulator settings.
Definition unit_JRD4035.cpp:1053
virtual bool writeRegion(const m5::uhf::Region region) override
Write the operating region.
Definition unit_JRD4035.cpp:605
virtual TagResult nxpChangeEAS(const bool enable, const uint32_t access_password) override
Set or clear the Product Status Flag of an NXP UCODE G2X.
Definition unit_JRD4035.cpp:818
virtual bool readTransmitPower(int16_t &dbm100) override
Read the transmit power in 1/100 dBm.
Definition unit_JRD4035.cpp:568
virtual TagResult killTag(const uint32_t kill_password) override
Kill the addressed tag permanently.
Definition unit_JRD4035.cpp:1275
virtual TagResult lockTagMemory(const uint32_t payload, const uint32_t access_password) override
Apply a 20-bit Gen2 lock payload.
Definition unit_JRD4035.cpp:1256
config_t config() const
Gets the configuration.
Definition unit_JRD4035.hpp:57
virtual TagResult nxpChangeConfig(uint16_t &config, const uint16_t toggle, const uint32_t access_password) override
Read the Config-Word of an NXP UCODE G2X, or invert bits of it.
Definition unit_JRD4035.cpp:794
virtual bool wake() override
Wake the module from low power sleep.
Definition unit_JRD4035.cpp:930
virtual bool readModuleInformation(m5::uhf::ModuleInformation &info) override
Read the module information.
Definition unit_JRD4035.cpp:551
virtual bool writeIdle(const bool enter, const uint8_t minutes=0) override
Put the module into IDLE, or bring it out.
Definition unit_JRD4035.cpp:903
virtual bool readChannelRSSI(m5::uhf::ChannelLevels &levels) override
Measure the RSSI on every channel of the operating region.
Definition unit_JRD4035.cpp:1014
virtual bool sleep() override
Put the module into low power sleep.
Definition unit_JRD4035.cpp:917
virtual bool writeSelectParameter(const m5::uhf::Bank bank, const uint32_t pointer_bits, const uint8_t *mask, const size_t mask_len) override
Store the mask that picks out one tag.
Definition unit_JRD4035.cpp:1112
void config(const config_t &cfg)
Sets the configuration.
Definition unit_JRD4035.hpp:62
virtual TagResult blockPermalock(std::vector< uint8_t > &out, const m5::uhf::Bank bank, const uint16_t block_pointer, const uint8_t block_range, const uint8_t *mask, const size_t mask_len, const uint32_t access_password, const bool allow_permanent) override
Read or set which blocks of a bank are permanently locked.
Definition unit_JRD4035.cpp:691
virtual bool writeContinuousCarrier(const bool enable) override
Turn the unmodulated carrier on or off.
Definition unit_JRD4035.cpp:877
virtual TagResult writeTagMemory(const m5::uhf::Bank bank, const uint16_t word_address, const uint8_t *data, const size_t len, const uint32_t access_password) override
Write len bytes to bank, starting at word_address.
Definition unit_JRD4035.cpp:1228
virtual TagResult nxpReadProtect(const bool protect, const uint32_t access_password) override
Turn the read protection of an NXP UCODE G2X on or off.
Definition unit_JRD4035.cpp:861
virtual bool readRegion(m5::uhf::Region ®ion) override
Read the operating region.
Definition unit_JRD4035.cpp:592
virtual bool writeAutomaticFrequencyHopping(const bool enable) override
Enable or disable automatic frequency hopping.
Definition unit_JRD4035.cpp:643
bool writeDemodulatorParameters(const m100::DemodulatorParameters &dp)
Write the receiver demodulator settings.
Definition unit_JRD4035.cpp:1069
virtual TagResult qtCommand(uint16_t &control, const bool write, const bool persistent, const uint32_t access_password) override
Read or write the QT control word of the addressed tag.
Definition unit_JRD4035.cpp:750
virtual bool readChannel(uint8_t &index) override
Read the operating channel index.
Definition unit_JRD4035.cpp:620
virtual bool readSelectParameter(m5::uhf::SelectParameter &sp) override
Read back the select mask the reader holds.
Definition unit_JRD4035.cpp:1037
virtual bool writeOperatingChannels(const std::vector< uint8_t > &channels) override
Replace the channel list used for automatic frequency hopping.
Definition unit_JRD4035.cpp:962
virtual bool writeChannel(const uint8_t index) override
Write the operating channel index.
Definition unit_JRD4035.cpp:633
virtual m5::uhf::Reason classify(const uint8_t error_code) const override
Say what one of this reader's error codes means in EPC Gen2 terms.
Definition unit_JRD4035.cpp:1313
virtual TagResult readTagMemory(std::vector< uint8_t > &out, const m5::uhf::Bank bank, const uint16_t word_address, const uint16_t word_count, const uint32_t access_password) override
Read word_count 16-bit words from bank, starting at word_address.
Definition unit_JRD4035.cpp:1187
virtual bool readQueryParameters(m5::uhf::QueryParameters &qp) override
Read the query parameters.
Definition unit_JRD4035.cpp:654
virtual bool writeAutoSleepTime(const uint8_t minutes) override
Write the inactivity period after which the module sleeps automatically.
Definition unit_JRD4035.cpp:889
virtual bool nxpEASAlarm(std::vector< uint8_t > &alarm) override
Ask the field whether any tag has its Product Status Flag asserted.
Definition unit_JRD4035.cpp:834
Frame codec for the magicRF M100 family (JRD-4035 / JRD-100 / R200)
Top level namespace of M5Stack.
Signal level measured on each channel of the operating region.
Definition uhf.hpp:1454
EPC Gen2 query parameters.
Definition uhf.hpp:1302
The mask the reader holds, and how it is matched.
Definition uhf.hpp:1424
Settings for begin.
Definition unit_UHFRFID.hpp:70
Settings for begin.
Definition unit_JRD4035.hpp:36
m100::DemodulatorParameters demodulator
Definition unit_JRD4035.hpp:44
Receiver settings that decide how weak a reply the reader can still make sense of.
Definition m100_frame.hpp:757
Parsed frame.
Definition m100_frame.hpp:117
Reason
Why an operation meant to change a tag did not change it.
Definition uhf.hpp:90
Bank
EPC Gen2 memory bank.
Definition uhf.hpp:32
Region
Operating region.
Definition uhf.hpp:44
Base class for UHF-RFID reader units.
m5::stl::expected< void, uint8_t > TagResult
What became of an operation on a tag.
Definition unit_UHFRFID.hpp:35