Access Operations¶
Starting Reader firmware version 3.24.43 IoT Connector
supports performing access operations. The following access operations are supported.
Read
Write
Lock
Kill
Access opreations can be performed using IoT Connector
by setting the operating mode. IoT Connector
can accept a maximum of 64 access operations in a sequence in operating mode.
For more info on the operating mode, refer to Operating Modes Schema
Read Operations¶
IoT Connector
supports tag read operations. Following memory banks can be read using the IoT Connector
EPC
TID
USER
RESERVED
Read operations can be performed by supplying the appropriate accesses entry in the operating mode on the IoT Connector
.
For example: To read the word #2 of the EPC bank, the following would be the operating mode.
{ "type": "CUSTOM", "accesses":{ "type": "READ", "config": { "membank": "EPC", "wordPointer": 2, "wordCount": 1 } } }
The result of the read access operation is sent as a data event on the data channel. For the example above the following message on the data channel indicates the access result.
{ "data": { "accessResults":["bbbb"], "eventNum":84, "format":"epc", "idHex":"bbbbbbbbbbbbbbbbbbbbbbbb" }, "timestamp":"2023-04-13T11:49:33.809+0000", "type":"CUSTOM" }
Write Operations¶
IoT Connector
supports tag write operations. Following memory banks can be written using the IoT Connector
EPC
TID
USER
RESERVED
Write operations can be performed by supplying the appropriate accesses entry in the operating mode on the IoT Connector
.
For example: To write 0xBBBB to word #2 of the EPC bank, the following would be the access object:
{ "type": "CUSTOM", "accesses":{ "type": "WRITE", "config": { "membank":"EPC", "wordPointer": 2, "data": "bbbb" } } }
The result of the write access operation is sent as a data event on the data channel. For the example above the following message on the data channel indicates the access result when successful.
{ "data": { "accessResults":["SUCCESS"], "eventNum":84, "format":"epc", "idHex":"bbbbbbbbbbbbbbbbbbbbbbbb" }, "timestamp":"2023-04-13T11:49:33.809+0000", "type":"CUSTOM" }
In case of a failed attempt to write the tag, the following event will be sent on the data channel.
{ "data": { "accessResults":["Error: tag returned error code 0x04 = Memory locked"], "eventNum":84, "format":"epc", "idHex":"bbbbbbbbbbbbbbbbbbbbbbbb" }, "timestamp":"2023-04-13T11:49:33.809+0000", "type":"CUSTOM" }
LOCK/UNLOCK Operations¶
IoT Connector
supports LOCK/UNLOCK operations. The following LOCK/UNLOCK operations are supported.
PERMALOCK_USER_BANK
WRITE_LOCK_USER_BANK
WRITE_UNLOCK_USER_BANK
PERMALOCK_TID_BANK
WRITE_LOCK_TID_BANK
WRITE_UNLOCK_TID_BANK
PERMALOCK_EPC_BANK
WRITE_LOCK_EPC_BANK
WRITE_UNLOCK_EPC_BANK
PERMALOCK_ACCESS_PASSWORD
READ_WRITE_LOCK_ACCESS_PASSWORD
READ_WRITE_UNLOCK_ACCESS_PASSWORD
PERMALOCK_KILL_PASSWORD
READ_WRITE_LOCK_KILL_PASSWORD
READ_WRITE_UNLOCK_KILL_PASSWORD
Lock/Unlock operations can be performed by supplying the appropriate accesses entry in the operating mode on the IoT Connector
.
For example: To write lock the EPC bank, the following would be the operating mode:
{ "type": "CUSTOM", "accesses": [ { "type": "ACCESS", "config": { "password": "12345678" } }, { "type": "LOCK", "config": { "actions": [ "WRITE_LOCK_EPC_BANK" ] } } ] }
Kill Operation¶
IoT Connector
support tag Kill operations. kill can be performed by supplying the appropriate accesses entry in the operating mode.
The following is the sample operating mode for a Kill operation.
{ "type": "CUSTOM", "accesses":{ "type": "KILL", "config": { "password": "kill password" } } }
Example Operating Modes¶
This sections illustrates the operating modes that can be used for afew example scenarios.
Example 1¶
Below operating mode can be used to read, write and then re-read the word on all enabled antennas:
{ "type": "CUSTOM", "accesses": [ { "type": "READ", "config": { "membank": "EPC", "wordPointer":2, "wordCount":1 } }, { "type": "WRITE", "config": { "membank": "EPC", "wordPointer":2, "data": "bbbb" } }, { "type": "READ", "config": { "membank": "EPC", "wordPointer":2, "wordCount": 1 } } ] }
The results of the above operation could look like below for successful completion.
{ "data": { "accessResults": [ "1234", "Success", "bbbb" ], "eventNum": 25873, "format": "epc", "idHex": "1234567890abcdef00000000" }, "timestamp": "2023-05-01T08:55:44.625+0300", "type": "CUSTOM" }
The results of the above operation could look like below for an error condition.
{ "data": { "accessResults": [ "1234", "Error: tag returned error code 0x04 = Memory locked", "Not Attempted" ], "eventNum": 25872, "format": "epc", "idHex": "1234567890abcdef00000000" }, "timestamp": "2023-05-01T08:55:43.395+0300", "type": "CUSTOM" }
Example 2¶
The following example operating mode writes and then reads the EPC on antenna 1 and writes it on antenna 2 and then rereads on antenna 3 (note the 3 sets of square brackets within the outer brackets of the accesses list):
{ "type": "CUSTOM", "antennas": [1,2,3], "accesses": [[{ "type": "READ", "config": {"membank": "EPC","wordPointer":2,"wordCount":1} }], [{ "type": "WRITE", "config": {"membank": "EPC","wordPointer":2,"data": "bbbb"} }], [{ "type": "READ", "config": {"membank": "EPC","wordPointer":2,"wordCount": 1} }]] }
Example 3¶
The following example operating mode writes and then reads, writes, and the re-reads the EPC on antenna 1 and not the other enabled antennas (note the 2 sets of empty square brackets within the outer brackets of the accesses list that indicate that antennas 2 and 3 should not perform any access commands):
{ "type": "CUSTOM", "antennas": [1,2,3], "accesses": [[{ "type": "READ", "config": {"membank": "EPC","wordPointer":2,"wordCount":1} }, { "type": "WRITE", "config": {"membank": "EPC","wordPointer":2,"data": "bbbb"} }, { "type": "READ", "config": {"membank": "EPC","wordPointer":2,"wordCount": 1} }], [], [] ] }
Example 4¶
The below operating mode can be used to find the tag using TID, then Write EPC, Write Access Password, Lock it, then read EPC and access password.
{ "type": "CUSTOM", "query": { "tagpopulation": 10, "sel": "NOT_SL", "session": "S0", "target": "A" }, "selects": [ { "target": "S0", "action": "INVA_INVB", "membank": "TID", "pointer": 0, "length": 96, "mask": "e2806894200050055eb4d0f6" } ], "accesses": [ { "type": "ACCESS", "config": { "password": "11112222" } }, { "type": "WRITE", "config": { "membank": "EPC", "wordPointer": 2, "data": "BBBBBBBBBBBBBBBBBBBBBBBB" } }, { "type": "WRITE", "config": { "membank": "RESERVED", "wordPointer": 2, "data": "11112222" } }, { "type": "LOCK", "config": { "actions": [ "WRITE_LOCK_EPC_BANK" ] } }, { "type": "READ", "config": { "membank": "EPC", "wordPointer": 0, "wordCount": 0 } }, { "type": "READ", "config": { "membank": "RESERVED", "wordPointer": 0, "wordCount": 0 } } ], "radioStopConditions": { "antennaCycles": 1 } }
The result of the above operation will be sent on the data channel as shown below:
{ "data":{ "accessResults":[ "SUCCESS", "SUCCESS", "SUCCESS", "SUCCESS", "aa933000bbbbbbbbbbbbbbbbbbbbbbbb", "1111222211112222"], "eventNum":84, "format":"epc", "idHex":"bbbbbbbbbbbbbbbbbbbbbbbb" }, "timestamp":"2023-04-13T11:49:33.809+0000", "type":"CUSTOM" }