Skip to main content

RFID and Barcode Reading

ReferenceAudience: API consumerUse: look up the members, types and limits of a reading object

These objects are sent with set_operating_mode, control_operation and set_post_filter, returned by get_operating_mode and get_post_filter, and published in dataEVT.

In the operating-mode tables, Default is the value in the reader's default operating mode: the mode it returns to after a reboot, as get_operating_mode reports it. Because set_operating_mode merges a partial update into the current mode, omitting a member keeps its current value, which is not necessarily the default. In the other tables, Default is the value the contract declares.

Operating Mode​

operatingModes​

The operatingMode.operatingModes object of set_operating_mode. Every member is optional: the command accepts a partial update. On reboot the reader discards the mode and returns to the default operating mode shown in the Default column.

FieldTypeRequiredDefaultLimitsMeaning
profilesoperatingModeProfileNo"BALANCED_PERFORMANCE"The named radio configuration
advancedConfigurationsobject (advancedConfigurations)NoThe radio settings used when profiles is ADVANCED; required then
inventoryProtocolinventoryProtocolNo"GEN2"The inventory protocol: GEN2, GEN2X or HYBRID
accessOperationsarray of accessOperationNoOperations run against every tag read
radioStartConditionsobject (radioStartConditions)NoWhen an inventory starts. When absent, it starts on control_operation START
radioStopConditionsobject (radioStopConditions)NoWhen an inventory stops. When absent, it runs until STOP
queryobject (queryPayload)NoThe EPC Gen2 Query parameters
selectarray of selectPayloadNoGen2 Select pre-filters
tagMetaDataToEnableobject (tagMetadataFlags)NoWhich optional fields each tag record carries
  • profiles: "ADVANCED" requires advancedConfigurations; without it the reply is code 22.
  • More than 32 select entries returns code 24.
  • The default operating mode carries no advancedConfigurations, accessOperations or select.

advancedConfigurations​

FieldTypeRequiredDefaultLimitsMeaning
transmitPowernumberNo0–300Transmit power. The contract states centi-dBm; its example value, 270, reads more naturally as tenths of a dBm, so confirm the unit on your firmware
linkProfilelinkProfileNoThe air-interface link profile: encoding and backscatter link frequency
sessiongen2SessionNoThe EPC Gen2 session. query.session sets the same thing; which wins is not documented
dynamicPowerbooleanNoWhether the radio adjusts transmit power during an inventory

radioStartConditions​

FieldTypeRequiredDefaultLimitsMeaning
triggerradioTriggerNo"IMMEDIATE"PRESSED, RELEASED, or IMMEDIATE without a trigger action
startDelayintegerNo0Delay before the inventory starts, in milliseconds
repeatbooleanNofalseWhether the trigger can restart the inventory after it stops

radioStopConditions​

FieldTypeRequiredDefaultLimitsMeaning
triggerradioTriggerNo"IMMEDIATE"PRESSED, RELEASED, or IMMEDIATE without a trigger action
tagCountintegerNoUnique tags to read before stopping. The meaning of 0 is not documented
stopTimeoutintegerNoTime, in milliseconds, after which the inventory stops. The meaning of 0 is not documented
inventoryCountintegerNoInventory cycles to complete before stopping. The meaning of 0 is not documented

Which stop condition wins when several are set is not documented.

queryPayload​

The query object.

FieldTypeRequiredDefaultLimitsMeaning
sessiongen2SessionNo"SESSION_1"The EPC Gen2 session
inventoryStateinventoryStateNo"STATE_A"The inventoried-flag state to select: STATE_A, STATE_B, or STATE_AB to alternate
slFlagslFlagNo"ALL"The SL flag state to select: ALL, ASSERTED or DEASSERTED
tagPopulationintegerNo30min 0The estimated number of tags in the field

selectPayload​

One entry of select. All seven members are required.

FieldTypeRequiredDefaultLimitsMeaning
enablebooleanYesWhether the filter is applied
tagPatternstringYesThe pattern to match, as even-length hex
memoryBankselectMemoryBankYesThe memory bank to match against
offsetintegerYesWhere the match starts, in bits
actionselectActionYesWhat the Select does to matching and non-matching tags
targetselectTargetYesThe flag the action changes: the SL flag or a session's inventoried flag
lengthintegerYesHow many bits to match

offset and length count bits here, and 16-bit words in accessOperationConfig.

accessOperation​

One entry of accessOperations.

FieldTypeRequiredDefaultLimitsMeaning
operationTypeaccessOperationTypeNoREAD, WRITE, ACCESS, LOCK or KILL; decides which config members apply
configobject (accessOperationConfig)NoThe operation's parameters

accessOperationConfig​

FieldTypeRequiredDefaultLimitsMeaning
memoryBankaccessMemoryBankNoThe memory bank, for READ and WRITE
offsetintegerNoWhere the operation starts, in 16-bit words
lengthintegerNoHow many 16-bit words to read or write
datastringNoThe data to write, as hex in whole 16-bit words
passwordstringNoThe access or kill password, exactly 8 hex characters
lockMemBanklockMemoryBankNoThe resource to lock or unlock
lockActionlockActionNoThe lock action; PERMANENT_LOCK and PERMANENT_UNLOCK cannot be undone

Which members each operationType uses: READ uses memoryBank, offset and length; WRITE also uses data; ACCESS and KILL use password; LOCK uses lockMemBank and lockAction. The contract states no conditional requirement, so a validator does not enforce this.

tagMetadataFlags​

The tagMetaDataToEnable object. In the default operating mode, RSSI and SEENCOUNT are on and every other flag is off.

FieldTypeRequiredDefaultLimitsMeaning
RSSIbooleanNotrueReport peakRssi
PHASEbooleanNofalseReport phase
SEENCOUNTbooleanNotrueReport seenCount
CHANNELbooleanNofalseReport channel
PCbooleanNofalseReport the Protocol Control word
XPCbooleanNofalseReport the Extended Protocol Control word
CRCbooleanNofalseReport the CRC
EPCbooleanNofalseReport the EPC; whether it controls EPC or EPCid is not documented
TIDbooleanNofalseReport the TID
USERbooleanNofalseReport USER memory
MACbooleanNofalseReport the reader's MAC address
HOSTNAMEbooleanNofalseReport the reader's host name

Control​

ctrlOprPayload​

The payload of control_operation.

FieldTypeRequiredDefaultLimitsMeaning
controlTypeenum: RFID, SCANNERYesRFID for an inventory, or SCANNER for a barcode scan
operationenum: START, STOPYesSTART or STOP

Post-Filter​

postFilterPayload​

The postFilterPayload object of set_post_filter: one rule and its operation. get_post_filter returns the installed rules in postFilterPayload.postFilter, without operation.

FieldTypeRequiredDefaultLimitsMeaning
dataEpTypedataEndpointTypeNoThe data endpoint the rule applies to. DATA_EP2 targets DATA2, which is currently not supported
matchPatternstringNoThe value compared with the tag ID. Even-length hex for PREFIX and SUFFIX; a regular expression for REGEX
matchPatternMethodmatchPatternMethodNoPREFIX, SUFFIX or REGEX
reportOperationreportOperationNoINCLUDE reports only matching tags; EXCLUDE drops them
operationenum: ADD, DELETE, MODIFYNoADD, DELETE or MODIFY

To delete the post filter on a data endpoint, send operation: "DELETE" with dataEpType alone. A rule has no identifier of its own, and the contract does not say which members MODIFY uses to find it. While a PREFIX rule is in use, select pre-filters cannot be applied.

Tag and Barcode Data​

dataEventPayload​

The data object of dataEVT. Either array can be absent.

FieldTypeRequiredDefaultLimitsMeaning
tagDataarray of tagDataRecordNoTag records. No record limit; firmware caps the whole message at 6144 bytes
barcodeDataarray of barcodeDataRecordNoBarcode records

tagDataRecord​

One tag record.

FieldTypeRequiredDefaultLimitsMeaning
EPCidstringYesThe tag's EPC identifier, as hex
EPCstringNoThe EPC memory bank, as hex
TIDstringNoThe TID memory bank, as hex
USERstringNoThe USER memory bank, as hex
RESERVEDstringNoThe RESERVED memory bank, as hex
PCstringNoThe Protocol Control word, as hex
CRCstringNoThe CRC, as hex
XPCstringNoThe Extended Protocol Control word, as hex, if the tag has one
channelnumberNoAn opaque radio channel index, not a frequency. Present only when every read is reported on its own
eventNumnumberYesThe per-report sequence counter; the only ordering signal
formatstringNoThe format of the tag data; the contract describes it as EPCid
peakRssinumberNoPeak signal strength, in dBm, since the tag's last report
phasenumberNoPhase of the tag's reply, in degrees. Present only when every read is reported on its own
seenCountnumberNoTimes the tag was read since its last report; 1 when every read is reported on its own
accessResultsarray of stringNoOne result per configured access operation, in order
userDefinedstringNoA user-defined string included on every event
firstSeenTimenumberNoWhen the tag was first seen, in milliseconds since the epoch
lastSeenTimenumberNoWhen the tag was last seen, in milliseconds since the epoch
MACstringNoThe MAC address of the reader that read the tag
HOSTNAMEstringNoThe host name of the reader that read the tag

Hex values arrive in either letter case. The metadata flag RSSI switches on peakRssi, PHASE switches on phase, SEENCOUNT switches on seenCount, and CHANNEL switches on channel; RESERVED, firstSeenTime, lastSeenTime, accessResults, userDefined and format have no flag.

barcodeDataRecord​

One barcode record.

FieldTypeRequiredDefaultLimitsMeaning
symbologystringNoThe barcode type, as a hexadecimal string such as 0x03
decodedBarcodestringYesThe decoded value

Related: 📕 set_operating_mode · 📕 control_operation · 📕 set_post_filter · 📕 dataEVT · 📕 Enumerations · 📕 Tag Data Stream

Was this helpful?