RFID API Documentation  1.0
Reference guide for RFID API
Access

Functions

RFID_STATUS WINAPI RFID_Read (RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPREAD_ACCESS_PARAMS lpReadAccessParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPTAG_DATA lpTagData, LPVOID rsvd)
 This function reads a specified memory bank of tag(s). More...
 
RFID_STATUS WINAPI RFID_Write (RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPWRITE_ACCESS_PARAMS lpWriteAccessParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
 This function writes to a specified memory bank of tag(s). More...
 
RFID_STATUS WINAPI RFID_WriteTagID (RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPWRITE_SPECIFIC_FIELD_ACCESS_PARAMS lpWriteSpecificFieldAccessParams, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
 This function writes to TagID of a specific tag and adjusts the PC bits according to the length of the TagID. More...
 
RFID_STATUS WINAPI RFID_WriteKillPassword (RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPWRITE_SPECIFIC_FIELD_ACCESS_PARAMS lpWriteSpecificFieldAccessParams, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
 This function writes Kill password of a specific tag. More...
 
RFID_STATUS WINAPI RFID_WriteAccessPassword (RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPWRITE_SPECIFIC_FIELD_ACCESS_PARAMS lpWriteSpecificFieldAccessParams, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
 This function writes to access password of a specific tag. More...
 
RFID_STATUS WINAPI RFID_Kill (RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPKILL_ACCESS_PARAMS lpKillParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
 This function kills tag(s). More...
 
RFID_STATUS WINAPI RFID_Lock (RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPLOCK_ACCESS_PARAMS lpLockParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
 This function locks tag(s). More...
 
RFID_STATUS WINAPI RFID_BlockWrite (RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPWRITE_ACCESS_PARAMS lpWriteAccessParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
 This function allows to write multiple words in a Tag’s Reserved, EPC, TID, or User memory using a single command. More...
 
RFID_STATUS WINAPI RFID_BlockErase (RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPBLOCK_ERASE_ACCESS_PARAMS lpBlkEraseAccessParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
 This function erases tag(s). More...
 
RFID_STATUS WINAPI RFID_BlockPermalock (RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPBLOCK_PERMALOCK_ACCESS_PARAMS lpBlkPermalockAccessParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPTAG_DATA lpTagData, LPVOID rsvd)
 This function allows to permalock multiple words in a Tag’s Reserved, EPC, TID, or User memory with a single command, or read the permalock satus of the memory blocks in a Tag's User memory. More...
 
RFID_STATUS WINAPI RFID_Recommission (RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPRECOMMISSION_ACCESS_PARAMS lpRecommissionParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
 This function is used for recommissioning tag(s). More...
 

Detailed Description

Function Documentation

◆ RFID_Read()

RFID_STATUS WINAPI RFID_Read ( RFID_HANDLE32  readerHandle,
UINT8 pTagID,
UINT32  tagIDLength,
LPREAD_ACCESS_PARAMS  lpReadAccessParams,
LPACCESS_FILTER  lpAccessFilter,
LPANTENNA_INFO  lpAntennaInfo,
LPTAG_DATA  lpTagData,
LPVOID  rsvd 
)

This function reads a specified memory bank of tag(s).

Parameters
[in]readerHandle
Handle to the RFID device
[in]pTagID
Access-Operation will be performed on Tag with mentioned TagID. If this is NULL, lpAccessFilter will be considered as Filter Criteria for the Access operation.
[in]tagIDLength
Tag Length(Ignored if pTagID is NULL)
[in]lpReadAccessParams
Pointer to READ_ACCESS_PARAMS
[in]lpAccessFilter
Filter Criteria for the Access operation. If this is NULL, there wont be any access filters used for the operation.
[in]lpAntennaInfo
Antenna List on which the access operation is to be performed. If this is NULL, access is performed on ALL antennas.
[out]lpTagData
Returns the Tag that was read if the API was called with a valid pTagID. If pTagID is NULL, tags reported from Reader can be fetched using RFID_GetReadTag or RFID_GetEventData optionally waiting for by waiting for the TAG_READ_EVENT.
[in]rsvd
Reserved for future use.
Returns
If the function succeeds the return value is RFID_API_SUCCESS. If the function fails the return value is one of the following:
  • RFID_API_INVALID_HANDLE Handle provided is invalid
  • RFID_API_PARAM_ERROR Parameter is invalid
  • RFID_API_COMMAND_TIMEOUT Timeout and no responses from the reader
  • RFID_COMM_NO_CONNECTION No Connection exists to the Host
  • RFID_INVENTORY_IN_PROGRESS Inventory in progress, cannot perform requested operation
  • RFID_ACCESS_IN_PROGRESS Access Operation in progress, cannot perform requested operation
  • RFID_ACCESS_TAG_READ_FAILED Tag Read failed
Remarks
This function behaves synchronously when performing operation on single Tag i.e When specifying pTagID, the function waits for the operation to complete and returns with the result of the operation. If pTagID is NULL, the function behaves asynchronously and will return immediately. The completion of the operation will be signaled using ACCESS_STOP_EVENT, after which RFID_GetLastAccessResult can be called to know the result of the operation.
See also
RFID_Write, RFID_Kill, RFID_Lock, RFID_GetReadTag RFID_BlockWrite, RFID_BlockErase, RFID_GetLastAccessResult
Remarks
Example:
//Sample Code that prints TagID and Memory Bank
void printTagMemoryBankData(UINT8* pTagIDData, UINT32 tagIDLength,
UINT8* pMBData, UINT32 mbLength, char* memoryBankInfo)
{
char MBBuffer[MAX_PATH] = {0, };
char tagIDBuffer[MAX_PATH] = {0, };
char* pTagReportData = NULL;
pTagReportData = tagIDBuffer;
for(UINT32 index = 0; index < tagIDLength; index++)
{
if(0 < index && index%2 == 0)
{
*pTagReportData++ = '-';
}
sprintf(pTagReportData, "%02X", pTagIDData[index]);
while(*pTagReportData) pTagReportData++;
}
pTagReportData = MBBuffer;
for(UINT32 index = 0; index < mbLength; index++)
{
if(0 < index && index%2 == 0)
{
*pTagReportData++ = '-';
}
sprintf(pTagReportData, "%02X", pMBData[index]);
while(*pTagReportData) pTagReportData++;
}
if (tagIDLength && mbLength)
{
printf("\n Tag ID: %s :\n %s: %s\n", tagIDBuffer, memoryBankInfo, MBBuffer);
}
}
// Code snippet for Read Access operation on multiple tags
RFID_HANDLE32 readerHandle;
READ_ACCESS_PARAMS readAccessParams;
LPTAG_DATA pTagData;
UINT32 accessSuccessCount, accessFailureCount;
if(RFID_API_SUCCESS == RFID_Connect(&readerHandle, TEXT("157.235.207.190"), 0, 0, 0))
{
HANDLE accessComplete = CreateEvent(NULL, FALSE, FALSE, NULL);
pTagData = RFID_AllocateTag(readerHandle);
if(NULL == pTagData)
{
printf("\n Tag Allocation failed");
}
else
{
RFID_RegisterEventNotification(readerHandle, ACCESS_STOP_EVENT, accessComplete);
// Read User-Bank of multiple tags
readAccessParams.accessPassword = 0;
readAccessParams.memoryBank = MEMORY_BANK_USER;
readAccessParams.byteCount = 64;
readAccessParams.byteOffset = 0;
readAccessParams.accessPassword = 0;
rfidStatus = RFID_Read(readerHandle, NULL, 0, &readAccessParams, NULL, NULL, NULL, NULL);
if(RFID_API_SUCCESS != rfidStatus)
{
ERROR_INFO errorInfo;
RFID_GetLastErrorInfo(readerHandle, &errorInfo);
printf("\n Read Failed: %S", errorInfo.vendorMessage);
}
WaitForSingleObject(accessComplete, INFINITE);
accessSuccessCount = accessFailureCount = 0;
rfidStatus = RFID_GetLastAccessResult(readerHandle,
&accessSuccessCount, &accessFailureCount);
printf("\n\n Reading User memory: Success = %d, Failed = %d", accessSuccessCount,
accessFailureCount);
// Fetch the tags
while(RFID_API_SUCCESS == RFID_GetReadTag(readerHandle, pTagData))
{
// Lets print the Tag ID and Memory Bank
printTagMemoryBankData(pTagData->pTagID, pTagData->tagIDLength,
pTagData->pMemoryBankData, pTagData->memoryBankDataLength, "User Memory");
}
}
rfidStatus = RFID_Disconnect(readerHandle);
CloseHandle(accessComplete);
}

◆ RFID_Write()

RFID_STATUS WINAPI RFID_Write ( RFID_HANDLE32  readerHandle,
UINT8 pTagID,
UINT32  tagIDLength,
LPWRITE_ACCESS_PARAMS  lpWriteAccessParams,
LPACCESS_FILTER  lpAccessFilter,
LPANTENNA_INFO  lpAntennaInfo,
LPVOID  rsvd 
)

This function writes to a specified memory bank of tag(s).

Parameters
[in]readerHandle
Handle to the RFID device.
[in]pTagID
Access-Operation will be performed on Tag with mentioned TagID. If this is NULL, lpAccessFilter will be considered as Filter Criteria for the Access operation.
[in]tagIDLength
Tag Length(Ignored if pTagID is NULL).
[in]lpWriteAccessParams
Pointer to WRITE_ACCESS_PARAMS.
[in]lpAccessFilter
Filter Criteria for the Access operation. If this is NULL, there wont be any access filters used for the operation.
[in]lpAntennaInfo
Antenna List on which the access operation is to be performed. If this is NULL, access is performed on ALL antennas.
[in]rsvd
Reserved for future use.
Returns
If the function succeeds the return value is RFID_API_SUCCESS. If the function fails the return value is one of the following:
  • RFID_API_INVALID_HANDLE Handle provided is invalid
  • RFID_API_PARAM_ERROR Parameter is invalid
  • RFID_API_COMMAND_TIMEOUT Timeout and no responses from the reader
  • RFID_COMM_NO_CONNECTION No Connection exists to the Host
  • RFID_INVENTORY_IN_PROGRESS Inventory in progress, cannot perform requested operation
  • RFID_ACCESS_IN_PROGRESS Access Operation in progress, cannot perform requested operation
  • RFID_ACCESS_TAG_WRITE_FAILED Tag write failed
Remarks
This function behaves synchronously when performing operation on single Tag i.e When specifying pTagID, the function waits for the operation to complete and returns with the result of the operation. If pTagID is NULL, the function behaves asynchronously and will return immediately. The completion of the operation will be signaled using ACCESS_STOP_EVENT, after which RFID_GetLastAccessResult can be called to know the result of the operation.
See also
RFID_Read, RFID_Kill, RFID_Lock, RFID_BlockWrite, RFID_BlockErase, RFID_GetLastAccessResult
Remarks
Example:
// Write Access operation on multiple tags
RFID_HANDLE32 readerHandle;
WRITE_ACCESS_PARAMS writeAccessParams;
UINT8 writeUserData[64];
UINT32 accessSuccessCount, accessFailureCount;
if(RFID_API_SUCCESS == RFID_Connect(&readerHandle, TEXT("157.235.207.190"), 0, 0, 0))
{
HANDLE accessComplete = CreateEvent(NULL, FALSE, FALSE, NULL);
RFID_RegisterEventNotification(readerHandle, ACCESS_STOP_EVENT, accessComplete);
writeAccessParams.accessPassword = 0;
writeAccessParams.memoryBank = MEMORY_BANK_USER;
writeAccessParams.byteOffset = 0;
writeAccessParams.writeDataLength = 64;
writeAccessParams.pWriteData = writeUserData;
memset(writeAccessParams.pWriteData, 0xAA, writeAccessParams.writeDataLength);
rfidStatus = RFID_Write(readerHandle, NULL, 0, &writeAccessParams, NULL, NULL, NULL);
accessSuccessCount = accessFailureCount = 0;
WaitForSingleObject(accessComplete, INFINITE);
rfidStatus = RFID_GetLastAccessResult(readerHandle,
&accessSuccessCount, &accessFailureCount);
printf("\n\n Writing to User memory: Success = %d, Failed = %d", accessSuccessCount,
accessFailureCount);
rfidStatus = RFID_Disconnect(readerHandle);
CloseHandle(accessComplete);
}

◆ RFID_WriteTagID()

RFID_STATUS WINAPI RFID_WriteTagID ( RFID_HANDLE32  readerHandle,
UINT8 pTagID,
UINT32  tagIDLength,
LPWRITE_SPECIFIC_FIELD_ACCESS_PARAMS  lpWriteSpecificFieldAccessParams,
LPANTENNA_INFO  lpAntennaInfo,
LPVOID  rsvd 
)

This function writes to TagID of a specific tag and adjusts the PC bits according to the length of the TagID.

Parameters
[in]readerHandle
Handle to the RFID device.
[in]pTagID
Access-Operation will be performed on Tag with mentioned TagID.
[in]tagIDLength
Tag Length.
[in]lpWriteSpecificFieldAccessParams
Pointer to WRITE_SPECIFIC_FIELD_ACCESS_PARAMS.
[in]lpAntennaInfo
Antenna List on which the access operation is to be performed. If this is NULL, access is performed on ALL antennas.
[in]rsvd
Reserved for future use.
Returns
If the function succeeds the return value is RFID_API_SUCCESS. If the function fails the return value is one of the following:
  • RFID_API_INVALID_HANDLE Handle provided is invalid
  • RFID_API_PARAM_ERROR Parameter is invalid
  • RFID_API_COMMAND_TIMEOUT Timeout and no responses from the reader
  • RFID_COMM_NO_CONNECTION No Connection exists to the Host
  • RFID_INVENTORY_IN_PROGRESS Inventory in progress, cannot perform requested operation
  • RFID_ACCESS_IN_PROGRESS Access Operation in progress, cannot perform requested operation
  • RFID_ACCESS_TAG_WRITE_FAILED Tag write failed
Remarks
This function behaves synchronously i.e the function waits for the operation to complete and returns with the result of the operation.
See also
RFID_WriteKillPassword, RFID_WriteAccessPassword RFID_Read, RFID_Kill, RFID_Lock, RFID_BlockWrite, RFID_BlockErase, RFID_GetLastAccessResult
Remarks
Example:
RFID_HANDLE32 readerHandle;
WRITE_SPECIFIC_FIELD_ACCESS_PARAMS writeSpecificFieldAccessParams;
UINT8 writeData[64] = {0x11, 0x22, 0x33, 0x44};
UINT8 passwordData[4] = {0,};// zero password
TAG_DATA* pTagData = NULL;
ERROR_INFO errorInfo;
if(RFID_API_SUCCESS == RFID_Connect(&readerHandle, TEXT("157.235.208.51"), 0, 0, 0))
{
pTagData = RFID_AllocateTag(readerHandle);
RFID_PerformInventory(readerHandle, NULL, NULL, NULL, NULL);
Sleep(1000);
RFID_StopInventory(readerHandle);
while(RFID_GetReadTag(readerHandle, pTagData) == RFID_API_SUCCESS)
{
printf("\n ***********************************");
printTagData(pTagData->pTagID, pTagData->tagIDLength);
writeSpecificFieldAccessParams.accessPassword = 0;
writeSpecificFieldAccessParams.writeDataLength = 4;
writeSpecificFieldAccessParams.pWriteData = passwordData;
if(RFID_API_SUCCESS == RFID_WriteKillPassword(readerHandle, pTagData->pTagID, pTagData->tagIDLength, &writeSpecificFieldAccessParams, NULL, NULL))
{
printf("\n WriteKillPassword - Success");
}
else
{
RFID_GetLastErrorInfo(readerHandle, &errorInfo);
printf("\n WriteKillPassword - Failed - %S %S", errorInfo.statusDesc, errorInfo.vendorMessage);
}
if(RFID_API_SUCCESS == RFID_WriteAccessPassword(readerHandle, pTagData->pTagID, pTagData->tagIDLength, &writeSpecificFieldAccessParams, NULL, NULL))
{
printf("\n WriteAccessPassword - Success");
}
else
{
RFID_GetLastErrorInfo(readerHandle, &errorInfo);
printf("\n WriteAccessPassword - Failed - %S %S", errorInfo.statusDesc, errorInfo.vendorMessage);
}
UINT32 uniqueValue = GetTickCount();
// Write Tag ID
writeData[4] = (UINT8) uniqueValue & 0xFF;
writeData[5] = (UINT8) ((uniqueValue >> 12 ) & 0xFF);
writeSpecificFieldAccessParams.writeDataLength = 6;
writeSpecificFieldAccessParams.pWriteData = writeData;
if(RFID_API_SUCCESS == RFID_WriteTagID(readerHandle, pTagData->pTagID, pTagData->tagIDLength, &writeSpecificFieldAccessParams, NULL, NULL))
{
printf("\n WriteTagID - Success");
}
else
{
RFID_GetLastErrorInfo(readerHandle, &errorInfo);
printf("\n WriteTagID - Failed - %S %S", errorInfo.statusDesc, errorInfo.vendorMessage);
}
}
rfidStatus = RFID_Disconnect(readerHandle);
}

◆ RFID_WriteKillPassword()

RFID_STATUS WINAPI RFID_WriteKillPassword ( RFID_HANDLE32  readerHandle,
UINT8 pTagID,
UINT32  tagIDLength,
LPWRITE_SPECIFIC_FIELD_ACCESS_PARAMS  lpWriteSpecificFieldAccessParams,
LPANTENNA_INFO  lpAntennaInfo,
LPVOID  rsvd 
)

This function writes Kill password of a specific tag.

Parameters
[in]readerHandle
Handle to the RFID device.
[in]pTagID
Access-Operation will be performed on Tag with mentioned TagID.
[in]tagIDLength
Tag Length.
[in]lpWriteSpecificFieldAccessParams
Pointer to WRITE_SPECIFIC_FIELD_ACCESS_PARAMS.
[in]lpAntennaInfo
Antenna List on which the access operation is to be performed. If this is NULL, access is performed on ALL antennas.
[in]rsvd
Reserved for future use.
Returns
If the function succeeds the return value is RFID_API_SUCCESS. If the function fails the return value is one of the following:
  • RFID_API_INVALID_HANDLE Handle provided is invalid
  • RFID_API_PARAM_ERROR Parameter is invalid
  • RFID_API_COMMAND_TIMEOUT Timeout and no responses from the reader
  • RFID_COMM_NO_CONNECTION No Connection exists to the Host
  • RFID_INVENTORY_IN_PROGRESS Inventory in progress, cannot perform requested operation
  • RFID_ACCESS_IN_PROGRESS Access Operation in progress, cannot perform requested operation
  • RFID_ACCESS_TAG_WRITE_FAILED Tag write failed
Remarks
This function behaves synchronously i.e the function waits for the operation to complete and returns with the result of the operation.
See also
RFID_WriteTagID, RFID_WriteAccessPassword RFID_Read, RFID_Kill, RFID_Lock, RFID_BlockWrite, RFID_BlockErase, RFID_GetLastAccessResult
Remarks
Example:

◆ RFID_WriteAccessPassword()

RFID_STATUS WINAPI RFID_WriteAccessPassword ( RFID_HANDLE32  readerHandle,
UINT8 pTagID,
UINT32  tagIDLength,
LPWRITE_SPECIFIC_FIELD_ACCESS_PARAMS  lpWriteSpecificFieldAccessParams,
LPANTENNA_INFO  lpAntennaInfo,
LPVOID  rsvd 
)

This function writes to access password of a specific tag.

Parameters
[in]readerHandle
Handle to the RFID device.
[in]pTagID
Access-Operation will be performed on Tag with mentioned TagID..
[in]tagIDLength
Tag Length.
[in]lpWriteSpecificFieldAccessParams
Pointer to WRITE_SPECIFIC_FIELD_ACCESS_PARAMS.
[in]lpAntennaInfo
Antenna List on which the access operation is to be performed. If this is NULL, access is performed on ALL antennas.
[in]rsvd
Reserved for future use.
Returns
If the function succeeds the return value is RFID_API_SUCCESS. If the function fails the return value is one of the following:
  • RFID_API_INVALID_HANDLE Handle provided is invalid
  • RFID_API_PARAM_ERROR Parameter is invalid
  • RFID_API_COMMAND_TIMEOUT Timeout and no responses from the reader
  • RFID_COMM_NO_CONNECTION No Connection exists to the Host
  • RFID_INVENTORY_IN_PROGRESS Inventory in progress, cannot perform requested operation
  • RFID_ACCESS_IN_PROGRESS Access Operation in progress, cannot perform requested operation
  • RFID_ACCESS_TAG_WRITE_FAILED Tag write failed
Remarks
This function behaves synchronously i.e the function waits for the operation to complete and returns with the result of the operation.
See also
RFID_WriteTagID, RFID_WriteKillPassword RFID_Read, RFID_Kill, RFID_Lock, RFID_BlockWrite, RFID_BlockErase, RFID_GetLastAccessResult
Remarks
Example:

◆ RFID_Kill()

RFID_STATUS WINAPI RFID_Kill ( RFID_HANDLE32  readerHandle,
UINT8 pTagID,
UINT32  tagIDLength,
LPKILL_ACCESS_PARAMS  lpKillParams,
LPACCESS_FILTER  lpAccessFilter,
LPANTENNA_INFO  lpAntennaInfo,
LPVOID  rsvd 
)

This function kills tag(s).

Parameters
[in]readerHandle
Handle to the RFID device.
[in]pTagID
Access-Operation will be performed on Tag with mentioned TagID. If this is NULL, lpAccessFilter will be considered as Filter Criteria for the Access operation.
[in]tagIDLength
Tag Length(Ignored if pTagID is NULL).
[in]lpKillParams
Pointer to KILL_ACCESS_PARAMS.
[in]lpAccessFilter
Filter Criteria for the Access operation. If this is NULL, there wont be any access filters used for the operation.
[in]lpAntennaInfo
Antenna List on which the access operation is to be performed. If this is NULL, access is performed on ALL antennas.
[in]rsvd
Reserved for future use.
Returns
If the function succeeds the return value is RFID_API_SUCCESS. If the function fails the return value is one of the following:
  • RFID_API_INVALID_HANDLE Handle provided is invalid
  • RFID_API_PARAM_ERROR Parameter is invalid
  • RFID_API_COMMAND_TIMEOUT Timeout and no responses from the reader
  • RFID_COMM_NO_CONNECTION No Connection exists to the Host
  • RFID_INVENTORY_IN_PROGRESS Inventory in progress, cannot perform requested operation
  • RFID_ACCESS_IN_PROGRESS Access Operation in progress, cannot perform requested operation
  • RFID_ACCESS_TAG_KILL_FAILED Tag kill failed
Remarks
This function behaves synchronously when performing operation on single Tag i.e When specifying pTagID, the function waits for the operation to complete and returns with the result of the operation. If pTagID is NULL, the function behaves asynchronously and will return immediately. The completion of the operation will be signaled using ACCESS_STOP_EVENT, after which RFID_GetLastAccessResult can be called to know the result of the operation.
See also
RFID_Read, RFID_Write, RFID_Lock RFID_BlockWrite, RFID_BlockErase, RFID_GetLastAccessResult
Remarks
Example:
// Kill Access Operation on a specific tag
RFID_HANDLE32 readerHandle;
KILL_ACCESS_PARAMS killAccessParams;
UINT32 accessSuccessCount, accessFailureCount;
// Give the EPC-id of the tag which you have in Field of View
//FD02-FDFD-FDFD-FDFD-FDFD-237D
UINT8 specificTag[12] = {0xFD, 0x02, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0X23, 0X7D};
UINT32 specificTagIdLength = 12;
if(RFID_API_SUCCESS == RFID_Connect(&readerHandle, TEXT("157.235.207.190"), 0, 0, 0))
{
// Pre-program the Reserved Bank's Kill password with this password
killAccessParams.killPassword = 0xAAAAAAAA;
rfidStatus = RFID_Kill(readerHandle, specificTag, specificTagIdLength,
&killAccessParams, NULL, NULL, NULL);
accessSuccessCount = accessFailureCount = 0;
rfidStatus = RFID_GetLastAccessResult(readerHandle,
&accessSuccessCount, &accessFailureCount);
printf("\n\n Kill Tag: Success = %d, Failed = %d", accessSuccessCount,
accessFailureCount);
rfidStatus = RFID_Disconnect(readerHandle);
}

◆ RFID_Lock()

RFID_STATUS WINAPI RFID_Lock ( RFID_HANDLE32  readerHandle,
UINT8 pTagID,
UINT32  tagIDLength,
LPLOCK_ACCESS_PARAMS  lpLockParams,
LPACCESS_FILTER  lpAccessFilter,
LPANTENNA_INFO  lpAntennaInfo,
LPVOID  rsvd 
)

This function locks tag(s).

Parameters
[in]readerHandle
Handle to the RFID device.
[in]pTagID
Access-Operation will be performed on Tag with mentioned TagID. If this is NULL, lpAccessFilter will be considered as Filter Criteria for the Access operation.
[in]tagIDLength
Tag Length(Ignored if pTagID is NULL).
[in]lpLockParams
Pointer to LOCK_ACCESS_PARAMS.
[in]lpAccessFilter
Filter Criteria for the Access operation. If this is NULL, there wont be any access filters used for the operation.
[in]lpAntennaInfo
Antenna List on which the access operation is to be performed. If this is NULL, access is performed on ALL antennas.
[in]rsvd
Reserved for future use.
Returns
If the function succeeds the return value is RFID_API_SUCCESS. If the function fails the return value is one of the following:
  • RFID_API_INVALID_HANDLE Handle provided is invalid
  • RFID_API_PARAM_ERROR Parameter is invalid
  • RFID_API_COMMAND_TIMEOUT Timeout and no responses from the reader
  • RFID_COMM_NO_CONNECTION No Connection exists to the Host
  • RFID_INVENTORY_IN_PROGRESS Inventory in progress, cannot perform requested operation
  • RFID_ACCESS_IN_PROGRESS Access Operation in progress, cannot perform requested operation
  • RFID_ACCESS_TAG_LOCK_FAILED Tag lock failed
Remarks
This function behaves synchronously when performing operation on single Tag i.e When specifying pTagID, the function waits for the operation to complete and returns with the result of the operation. If pTagID is NULL, the function behaves asynchronously and will return immediately. The completion of the operation will be signalled using ACCESS_STOP_EVENT, after which RFID_GetLastAccessResult can be called to know the result of the operation.
See also
RFID_Read, RFID_Write, RFID_Kill RFID_BlockWrite, RFID_BlockErase, RFID_GetLastAccessResult
Remarks
Example:
// Lock Access Operation on a specific tag
RFID_HANDLE32 readerHandle;
LOCK_ACCESS_PARAMS lockAccessParams;
TAG_PATTERN tagPatternA;
ACCESS_FILTER accessFilter;
UINT32 accessSuccessCount, accessFailureCount;
UINT8 tagData[64];
WRITE_ACCESS_PARAMS writeAccessParams;
UINT8 writeData[64];
// Give the EPC-id of the tag which you have in Field of View
//FD02-FDFD-FDFD-FDFD-FDFD-237D
UINT8 specificTag[12] = {0xFD, 0x02, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0X23, 0X7D};
UINT32 specificTagIdLength = 12;
UINT8 tagMask[64];
memset(tagMask, 0xFF, 64);
memset(tagData, 0, 64);
tagPatternA.bitOffset = 0;
tagPatternA.pTagPattern = tagData;
tagPatternA.tagPatternBitCount = tagPatternA.tagMaskBitCount = 8 * 8;
tagPatternA.pTagMask = tagMask;
accessFilter.lpTagPatternA = &tagPatternA;
accessFilter.lpTagPatternB = NULL;
if(RFID_API_SUCCESS == RFID_Connect(&readerHandle, TEXT("157.235.207.190"), 0, 0, 0))
{
writeAccessParams.accessPassword = 0;
writeAccessParams.memoryBank = MEMORY_BANK_RESERVED;
writeAccessParams.byteOffset = 4;//Access-Password is at word offset 2
writeAccessParams.writeDataLength = 4;//Access-Password is 2 words long
writeAccessParams.pWriteData = writeData;
memset(writeAccessParams.pWriteData, 0xAA, writeAccessParams.writeDataLength);
rfidStatus = RFID_Write(readerHandle, specificTag, specificTagIdLength,
&writeAccessParams, NULL, NULL, NULL);
accessSuccessCount = accessFailureCount = 0;
lockAccessParams.accessPassword = 0xAAAAAAAA;
// Lock a specific Tag, post filter to ensure that Reserved field is zero
// which means No password
rfidStatus = RFID_Lock(readerHandle, specificTag, specificTagIdLength,
&lockAccessParams, &accessFilter, NULL, NULL);
accessSuccessCount = accessFailureCount = 0;
rfidStatus = RFID_GetLastAccessResult(readerHandle,
&accessSuccessCount, &accessFailureCount);
printf("\n\n Lock User memory: Success = %d, Failed = %d", accessSuccessCount,
accessFailureCount);
// Unlock the specific Tag
rfidStatus = RFID_Lock(readerHandle, specificTag, specificTagIdLength,
&lockAccessParams, &accessFilter, NULL, NULL);
rfidStatus = RFID_Disconnect(readerHandle);
}

◆ RFID_BlockWrite()

RFID_STATUS WINAPI RFID_BlockWrite ( RFID_HANDLE32  readerHandle,
UINT8 pTagID,
UINT32  tagIDLength,
LPWRITE_ACCESS_PARAMS  lpWriteAccessParams,
LPACCESS_FILTER  lpAccessFilter,
LPANTENNA_INFO  lpAntennaInfo,
LPVOID  rsvd 
)

This function allows to write multiple words in a Tag’s Reserved, EPC, TID, or User memory using a single command.

Parameters
[in]readerHandle
Handle to the RFID device.
[in]pTagID
Access-Operation will be performed on Tag with mentioned TagID. If this is NULL, lpAccessFilter will be considered as Filter Criteria for the Access operation.
[in]tagIDLength
Tag Length(Ignored if pTagID is NULL).
[in]lpWriteAccessParams
Pointer to WRITE_ACCESS_PARAMS.
[in]lpAccessFilter
Filter Criteria for the Access operation. If this is NULL, there wont be any access filters used for the operation.
[in]lpAntennaInfo
Antenna List on which the access operation is to be performed. If this is NULL, access is performed on ALL antennas.
[in]rsvd
Reserved for future use.
Returns
If the function succeeds the return value is RFID_API_SUCCESS. If the function fails the return value is one of the following:
  • RFID_API_INVALID_HANDLE Handle provided is invalid
  • RFID_API_PARAM_ERROR Parameter is invalid
  • RFID_API_COMMAND_TIMEOUT Timeout and no responses from the reader
  • RFID_COMM_NO_CONNECTION No Connection exists to the Host
  • RFID_INVENTORY_IN_PROGRESS Inventory in progress, cannot perform requested operation
  • RFID_ACCESS_IN_PROGRESS Access Operation in progress, cannot perform requested operation
  • RFID_ACCESS_TAG_BLOCK_WRITE_FAILED Tag Block Write failed
  • RFID_READER_FUNCTION_UNSUPPORTED Function not supported by Reader
Remarks
This function behaves synchronously when performing operation on single Tag i.e When specifying pTagID, the function waits for the operation to complete and returns with the result of the operation. If pTagID is NULL, the function behaves asynchronously and will return immediately. The completion of the operation will be signalled using ACCESS_STOP_EVENT, after which RFID_GetLastAccessResult can be called to know the result of the operation.
See also
RFID_Read, RFID_Write, RFID_Kill, RFID_Lock, RFID_BlockErase, RFID_GetLastAccessResult
Remarks
Example: Similar to

◆ RFID_BlockErase()

RFID_STATUS WINAPI RFID_BlockErase ( RFID_HANDLE32  readerHandle,
UINT8 pTagID,
UINT32  tagIDLength,
LPBLOCK_ERASE_ACCESS_PARAMS  lpBlkEraseAccessParams,
LPACCESS_FILTER  lpAccessFilter,
LPANTENNA_INFO  lpAntennaInfo,
LPVOID  rsvd 
)

This function erases tag(s).

Parameters
[in]readerHandle
Handle to the RFID device.
[in]pTagID
Access-Operation will be performed on Tag with mentioned TagID. If this is NULL, lpAccessFilter will be considered as Filter Criteria for the Access operation.
[in]tagIDLength
Tag Length(Ignored if pTagID is NULL)
[in]lpBlkEraseAccessParams
Pointer to BLOCK_ERASE_ACCESS_PARAMS.
[in]lpAccessFilter
Filter Criteria for the Access operation. If this is NULL, there wont be any access filters used for the operation.
[in]lpAntennaInfo
Antenna List on which the access operation is to be performed. If this is NULL, access is performed on ALL antennas.
[in]rsvd
Reserved for future use.
Returns
If the function succeeds the return value is RFID_API_SUCCESS. If the function fails the return value is one of the following:
  • RFID_API_INVALID_HANDLE Handle provided is invalid
  • RFID_API_PARAM_ERROR Parameter is invalid
  • RFID_API_COMMAND_TIMEOUT Timeout and no responses from the reader
  • RFID_COMM_NO_CONNECTION No Connection exists to the Host
  • RFID_INVENTORY_IN_PROGRESS Inventory in progress, cannot perform requested operation
  • RFID_ACCESS_IN_PROGRESS Access Operation in progress, cannot perform requested operation
  • RFID_ACCESS_TAG_BLOCK_ERASE_FAILED Tag Block Erase failed
  • RFID_READER_FUNCTION_UNSUPPORTED Function not supported by Reader
Remarks
This function behaves synchronously when performing operation on single Tag i.e When specifying pTagID, the function waits for the operation to complete and returns with the result of the operation. If pTagID is NULL, the function behaves asynchronously and will return immediately. The completion of the operation will be signalled using ACCESS_STOP_EVENT, after which RFID_GetLastAccessResult can be called to know the result of the operation.
See also
RFID_Read, RFID_Write, RFID_Kill, RFID_Lock, RFID_BlockWrite, RFID_GetLastAccessResult
Remarks
Example:
// Block Erase
RFID_HANDLE32 readerHandle;
BLOCK_ERASE_ACCESS_PARAMS blockEraseAccessParams;
UINT32 accessSuccessCount, accessFailureCount;
// Give the EPC-id of the tag which you have in Field of View
UINT8 specificTag[8] = {0x12, 0x12, 0x25, 0x25, 0x33, 0x33, 0x44, 0x44};
UINT32 specificTagIdLength = 8;
if(RFID_API_SUCCESS == RFID_Connect(&readerHandle, TEXT("157.235.207.190"), 0, 0, 0))
{
blockEraseAccessParams.accessPassword = 0;
blockEraseAccessParams.memoryBank = MEMORY_BANK_USER;
blockEraseAccessParams.byteCount = 100;
blockEraseAccessParams.byteOffset = 0;
rfidStatus = RFID_BlockErase(readerHandle, specificTag, specificTagIdLength,
&blockEraseAccessParams, NULL, NULL, NULL);
accessSuccessCount = accessFailureCount = 0;
rfidStatus = RFID_GetLastAccessResult(readerHandle,
&accessSuccessCount, &accessFailureCount);
printf("\n\n Block Erase Tag: Success = %d, Failed = %d", accessSuccessCount,
accessFailureCount);
rfidStatus = RFID_Disconnect(readerHandle);
}

◆ RFID_BlockPermalock()

RFID_STATUS WINAPI RFID_BlockPermalock ( RFID_HANDLE32  readerHandle,
UINT8 pTagID,
UINT32  tagIDLength,
LPBLOCK_PERMALOCK_ACCESS_PARAMS  lpBlkPermalockAccessParams,
LPACCESS_FILTER  lpAccessFilter,
LPANTENNA_INFO  lpAntennaInfo,
LPTAG_DATA  lpTagData,
LPVOID  rsvd 
)

This function allows to permalock multiple words in a Tag’s Reserved, EPC, TID, or User memory with a single command, or read the permalock satus of the memory blocks in a Tag's User memory.

Parameters
[in]readerHandle
Handle to the RFID device.
[in]pTagID
Access-Operation will be performed on Tag with mentioned TagID. If this is NULL, lpAccessFilter will be considered as Filter Criteria for the Access operation.
[in]tagIDLength
Tag Length(Ignored if pTagID is NULL)
[in]lpBlkPermalockAccessParams
Pointer to BLOCK_PERMALOCK_ACCESS_PARAMS.
[in]lpAccessFilter
Filter Criteria for the Access operation. If this is NULL, there wont be any access filters used for the operation.
[in]lpAntennaInfo
Antenna List on which the access operation is to be performed. If this is NULL, access is performed on ALL antennas.
[out]lpTagData
Returns the Tag that contained the permalock mask status if the function was called with a valid pTagID. If pTagID is NULL, tags reported from Reader can be fetched using RFID_GetReadTag or RFID_GetEventData optionally waiting for by waiting for the TAG_READ_EVENT.
[in]rsvd
Reserved for future use.
Returns
If the function succeeds the return value is RFID_API_SUCCESS. If the function fails the return value is one of the following:
  • RFID_API_INVALID_HANDLE Handle provided is invalid
  • RFID_API_PARAM_ERROR Parameter is invalid
  • RFID_API_COMMAND_TIMEOUT Timeout and no responses from the reader
  • RFID_COMM_NO_CONNECTION No Connection exists to the Host
  • RFID_INVENTORY_IN_PROGRESS Inventory in progress, cannot perform requested operation
  • RFID_ACCESS_IN_PROGRESS Access Operation in progress, cannot perform requested operation
  • RFID_ACCESS_TAG_BLOCK_PERMALOCK_FAILED Tag Block Permalock failed
  • RFID_READER_FUNCTION_UNSUPPORTED Function not supported by Reader
Remarks
This function behaves synchronously when performing operation on single Tag i.e When specifying pTagID, the function waits for the operation to complete and returns with the result of the operation. If pTagID is NULL, the function behaves asynchronously and will return immediately. The completion of the operation will be signalled using ACCESS_STOP_EVENT, after which RFID_GetLastAccessResult can be called to know the result of the operation.
See also
RFID_Read, RFID_Write, RFID_Kill, RFID_Lock, RFID_BlockWrite, RFID_BlockErase, RFID_Recommission, RFID_GetLastAccessResult
Remarks
Example:
// Code snippet for Read Access operation on multiple tags
RFID_HANDLE32 readerHandle;
BLOCK_PERMALOCK_ACCESS_PARAMS blkPermalockAccessParams;
LPTAG_DATA pTagData;
UINT32 accessSuccessCount, accessFailureCount;
if(RFID_API_SUCCESS == RFID_Connect(&readerHandle, TEXT("157.235.207.190"), 0, 0, 0))
{
HANDLE accessComplete = CreateEvent(NULL, FALSE, FALSE, NULL);
pTagData = RFID_AllocateTag(readerHandle);
if(NULL == pTagData)
{
printf("\n Tag Allocation failed");
}
else
{
RFID_RegisterEventNotification(readerHandle, ACCESS_STOP_EVENT, accessComplete);
// Read User-Bank of multiple tags
blkPermalockAccessParams.readLock = TRUE;
blkPermalockAccessParams.accessPassword = 0;
blkPermalockAccessParams.memoryBank = MEMORY_BANK_USER;
blkPermalockAccessParams.byteCount = 64;
blkPermalockAccessParams.byteOffset = 0;
rfidStatus = RFID_BlockPermalock(readerHandle, NULL, 0, &blkPermalockAccessParams, NULL, NULL, NULL, NULL);
if(RFID_API_SUCCESS != rfidStatus)
{
ERROR_INFO errorInfo;
RFID_GetLastErrorInfo(readerHandle, &errorInfo);
printf("\n Read Failed: %S", errorInfo.vendorMessage);
}
WaitForSingleObject(accessComplete, INFINITE);
accessSuccessCount = accessFailureCount = 0;
rfidStatus = RFID_GetLastAccessResult(readerHandle,
&accessSuccessCount, &accessFailureCount);
printf("\n\n Reading User memory: Success = %d, Failed = %d", accessSuccessCount,
accessFailureCount);
// Fetch the tags
while(RFID_API_SUCCESS == RFID_GetReadTag(readerHandle, pTagData))
{
// Lets print the Tag ID and Memory Bank
printTagMemoryBankData(pTagData->pTagID, pTagData->tagIDLength,
pTagData->pMemoryBankData, pTagData->memoryBankDataLength, "User Memory");
}
}
rfidStatus = RFID_Disconnect(readerHandle);
CloseHandle(accessComplete);
}

◆ RFID_Recommission()

RFID_STATUS WINAPI RFID_Recommission ( RFID_HANDLE32  readerHandle,
UINT8 pTagID,
UINT32  tagIDLength,
LPRECOMMISSION_ACCESS_PARAMS  lpRecommissionParams,
LPACCESS_FILTER  lpAccessFilter,
LPANTENNA_INFO  lpAntennaInfo,
LPVOID  rsvd 
)

This function is used for recommissioning tag(s).

Parameters
[in]readerHandle
Handle to the RFID device.
[in]pTagID
Access-Operation will be performed on Tag with mentioned TagID. If this is NULL, lpAccessFilter will be considered as Filter Criteria for the Access operation.
[in]tagIDLength
Tag Length(Ignored if pTagID is NULL)
[in]lpRecommissionParams
Pointer to RECOMMISSION_ACCESS_PARAMS.
[in]lpAccessFilter
Filter Criteria for the Access operation. If this is NULL, there wont be any access filters used for the operation.
[in]lpAntennaInfo
Antenna List on which the access operation is to be performed. If this is NULL, access is performed on ALL antennas.
[in]rsvd
Reserved for future use.
Returns
If the function succeeds the return value is RFID_API_SUCCESS. If the function fails the return value is one of the following:
  • RFID_API_INVALID_HANDLE Handle provided is invalid
  • RFID_API_PARAM_ERROR Parameter is invalid
  • RFID_API_COMMAND_TIMEOUT Timeout and no responses from the reader
  • RFID_COMM_NO_CONNECTION No Connection exists to the Host
  • RFID_INVENTORY_IN_PROGRESS Inventory in progress, cannot perform requested operation
  • RFID_ACCESS_IN_PROGRESS Access Operation in progress, cannot perform requested operation
  • RFID_ACCESS_TAG_RECOMMISSION_FAILED Tag Recommission failed
  • RFID_READER_FUNCTION_UNSUPPORTED Function not supported by Reader
Remarks
This function behaves synchronously when performing operation on single Tag i.e When specifying pTagID, the function waits for the operation to complete and returns with the result of the operation. If pTagID is NULL, the function behaves asynchronously and will return immediately. The completion of the operation will be signalled using ACCESS_STOP_EVENT, after which RFID_GetLastAccessResult can be called to know the result of the operation.
See also
RFID_Read, RFID_Write, RFID_Kill, RFID_Lock, RFID_BlockWrite, RFID_BlockErase, RFID_BlockPermalock, RFID_GetLastAccessResult
Remarks
Example:
// Block Erase
RFID_HANDLE32 readerHandle;
RECOMMISSION_ACCESS_PARAMS recommissionAccessParams;
UINT32 accessSuccessCount, accessFailureCount;
// Give the EPC-id of the tag which you have in Field of View
UINT8 specificTag[8] = {0x12, 0x12, 0x25, 0x25, 0x33, 0x33, 0x44, 0x44};
UINT32 specificTagIdLength = 8;
if(RFID_API_SUCCESS == RFID_Connect(&readerHandle, TEXT("157.235.207.190"), 0, 0, 0))
{
recommissionAccessParams.killPassword = 0xAAAAAAAA;
recommissionAccessParams.opCode = RECOMMISSION_DISABLE_PASSWORD
rfidStatus = RFID_Recommission(readerHandle, specificTag, specificTagIdLength,
&recommissionAccessParams, NULL, NULL, NULL);
accessSuccessCount = accessFailureCount = 0;
rfidStatus = RFID_GetLastAccessResult(readerHandle,
&accessSuccessCount, &accessFailureCount);
printf("\n\n Recommissioning Tag: Success = %d, Failed = %d", accessSuccessCount,
accessFailureCount);
rfidStatus = RFID_Disconnect(readerHandle);
}
BLOCK_PERMALOCK_ACCESS_PARAMS::byteOffset
UINT16 byteOffset
Byte offset; Address of the first byte for the Mask.
Definition: rfidapiStructs.h:1648
RECOMMISSION_DISABLE_PASSWORD
@ RECOMMISSION_DISABLE_PASSWORD
Unlock EPC, TID, and User memory banks has been unlocked and Render the kill and access passwords per...
Definition: rfidapiConstants.h:458
BLOCK_ERASE_ACCESS_PARAMS::byteCount
UINT16 byteCount
Number of Bytes to be erased.
Definition: rfidapiStructs.h:1618
BLOCK_ERASE_ACCESS_PARAMS::memoryBank
MEMORY_BANK memoryBank
Memory bank on which access operation is to be performed.
Definition: rfidapiStructs.h:1615
WRITE_ACCESS_PARAMS::writeDataLength
UINT16 writeDataLength
Length of the array pWriteData.
Definition: rfidapiStructs.h:1563
RFID_Write
RFID_STATUS WINAPI RFID_Write(RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPWRITE_ACCESS_PARAMS lpWriteAccessParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
This function writes to a specified memory bank of tag(s).
Definition: rfidapi.cpp:5329
ACCESS_FILTER
This struct holds the Tag Filter criteria for Access Operation.
Definition: rfidapiStructs.h:1517
RFID_WriteKillPassword
RFID_STATUS WINAPI RFID_WriteKillPassword(RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPWRITE_SPECIFIC_FIELD_ACCESS_PARAMS lpWriteSpecificFieldAccessParams, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
This function writes Kill password of a specific tag.
Definition: rfidapi.cpp:5604
WRITE_ACCESS_PARAMS::byteOffset
UINT16 byteOffset
Byte offset; Addresss of the first byte to be written to the chosen memory bank.
Definition: rfidapiStructs.h:1558
BLOCK_ERASE_ACCESS_PARAMS::byteOffset
UINT16 byteOffset
Byte offset; The address of first byte to be erased.
Definition: rfidapiStructs.h:1616
WRITE_SPECIFIC_FIELD_ACCESS_PARAMS
This struct contains the parameters for Write Access Operation.
Definition: rfidapiStructs.h:1574
BLOCK_ERASE_ACCESS_PARAMS
This struct contains the parameters for Block-Erase Access Operation.
Definition: rfidapiStructs.h:1614
RFID_GetLastAccessResult
RFID_STATUS WINAPI RFID_GetLastAccessResult(RFID_HANDLE32 readerHandle, UINT32 *pSuccessCount, UINT32 *pFailureCount)
This function gets the number of Tags on which the last Access operation was performed successfully,...
Definition: rfidapi.cpp:9104
RECOMMISSION_ACCESS_PARAMS::opCode
RECOMMISSION_OPERATION_CODE opCode
Definition: rfidapiStructs.h:1632
MEMORY_BANK_USER
@ MEMORY_BANK_USER
User Memory: Contains user-specific data storage.
Definition: rfidapiConstants.h:261
RFID_WriteTagID
RFID_STATUS WINAPI RFID_WriteTagID(RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPWRITE_SPECIFIC_FIELD_ACCESS_PARAMS lpWriteSpecificFieldAccessParams, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
This function writes to TagID of a specific tag and adjusts the PC bits according to the length of th...
Definition: rfidapi.cpp:5482
READ_ACCESS_PARAMS::memoryBank
MEMORY_BANK memoryBank
Memory bank from which data is to be read from.
Definition: rfidapiStructs.h:1541
RFID_BlockPermalock
RFID_STATUS WINAPI RFID_BlockPermalock(RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPBLOCK_PERMALOCK_ACCESS_PARAMS lpBlkPermalockAccessParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPTAG_DATA lpTagData, LPVOID rsvd)
This function allows to permalock multiple words in a Tag’s Reserved, EPC, TID, or User memory with a...
Definition: rfidapi.cpp:6445
TAG_DATA::memoryBankDataLength
UINT32 memoryBankDataLength
The length of the data(Number of Bytes) .
Definition: rfidapiStructs.h:957
BLOCK_PERMALOCK_ACCESS_PARAMS
This struct contains the parameters for BlockPermalock Access Operation.
Definition: rfidapiStructs.h:1642
READ_ACCESS_PARAMS::byteCount
UINT16 byteCount
Number of bytes to read.
Definition: rfidapiStructs.h:1544
ACCESS_FILTER::lpTagPatternA
LPTAG_PATTERN lpTagPatternA
Tag Pattern A to be used for comparison.
Definition: rfidapiStructs.h:1522
RFID_RegisterEventNotification
RFID_STATUS WINAPI RFID_RegisterEventNotification(RFID_HANDLE32 readerHandle, RFID_EVENT_TYPE eventType, EVENT_HANDLE notifyObject)
This function is used to enable notification of single Reader event type.
Definition: rfidapi.cpp:2957
KILL_ACCESS_PARAMS
This struct contains the parameters for Kill Access Operation, which is Kill-Password.
Definition: rfidapiStructs.h:1589
BLOCK_PERMALOCK_ACCESS_PARAMS::readLock
BOOLEAN readLock
ReadLock specifies whether a tag backscatters the perlock status of, or permalocks,...
Definition: rfidapiStructs.h:1644
WRITE_SPECIFIC_FIELD_ACCESS_PARAMS::accessPassword
UINT32 accessPassword
Password to be used for the Access operation.
Definition: rfidapiStructs.h:1579
LOCK_ACCESS_PARAMS::privilege
LOCK_PRIVILEGE privilege[NUM_LOCK_DATA_FIELDS]
Lock privilege for each memory bank.
Definition: rfidapiStructs.h:1601
READ_ACCESS_PARAMS
This struct Contains the parameters for Read Access Operation.
Definition: rfidapiStructs.h:1540
RFID_GetLastErrorInfo
#define RFID_GetLastErrorInfo
Definition: rfidapi.h:1114
RFID_Recommission
RFID_STATUS WINAPI RFID_Recommission(RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPRECOMMISSION_ACCESS_PARAMS lpRecommissionParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
This function is used for recommissioning tag(s).
Definition: rfidapi.cpp:6575
RFID_Disconnect
RFID_STATUS WINAPI RFID_Disconnect(RFID_HANDLE32 readerHandle)
This function closes connection to the Reader.
Definition: rfidapi.cpp:1061
ERROR_INFOW::statusDesc
WCHAR statusDesc[MAX_PATH]
Error description pertaining to rfidStatusCode.
Definition: rfidapiStructs.h:2457
ERROR_INFOW::vendorMessage
WCHAR vendorMessage[MAX_PATH]
Vendor specific error message for the error that occurred; E.g.
Definition: rfidapiStructs.h:2458
TAG_PATTERN::pTagPattern
UINT8 * pTagPattern
Memory Bank Data which is to be used for comparison.
Definition: rfidapiStructs.h:1456
LOCK_ACCESS_PARAMS::accessPassword
UINT32 accessPassword
Lock Password.
Definition: rfidapiStructs.h:1604
MEMORY_BANK_RESERVED
@ MEMORY_BANK_RESERVED
Reserved Memory: contain the kill and access passwords.
Definition: rfidapiConstants.h:258
BLOCK_ERASE_ACCESS_PARAMS::accessPassword
UINT32 accessPassword
Password to be used for the Access operation.
Definition: rfidapiStructs.h:1620
LOCK_PRIVILEGE_UNLOCK
@ LOCK_PRIVILEGE_UNLOCK
Lock Privilege: Unlock.
Definition: rfidapiConstants.h:432
FALSE
#define FALSE
Definition: rfidapiTypes.h:55
KILL_ACCESS_PARAMS::killPassword
UINT32 killPassword
Kill Password.
Definition: rfidapiStructs.h:1590
RFID_HANDLE32
void * RFID_HANDLE32
Definition: rfidapiTypes.h:76
UINT8
unsigned char UINT8
Definition: rfidapiTypes.h:26
TAG_PATTERN::tagMaskBitCount
UINT16 tagMaskBitCount
Number of bits in pTagMask to be taken for comparison.
Definition: rfidapiStructs.h:1466
ERROR_INFOW
This struct provides additional information on the last API that failed.
Definition: rfidapiStructs.h:2454
RECOMMISSION_ACCESS_PARAMS
This struct contains the parameters for Recommission Access Operation.
Definition: rfidapiStructs.h:1630
LOCK_ACCESS_PARAMS
This struct contains the parameters for Lock Access Operation.
Definition: rfidapiStructs.h:1600
WRITE_ACCESS_PARAMS::accessPassword
UINT32 accessPassword
Password to be used for the Access operation.
Definition: rfidapiStructs.h:1564
ACCESS_FILTER::lpTagPatternB
LPTAG_PATTERN lpTagPatternB
Tag Pattern B to be used for comparison.
Definition: rfidapiStructs.h:1525
BLOCK_PERMALOCK_ACCESS_PARAMS::accessPassword
UINT32 accessPassword
Password to be used for the Access operation.
Definition: rfidapiStructs.h:1650
RFID_BlockErase
RFID_STATUS WINAPI RFID_BlockErase(RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPBLOCK_ERASE_ACCESS_PARAMS lpBlkEraseAccessParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
This function erases tag(s).
Definition: rfidapi.cpp:6277
READ_ACCESS_PARAMS::accessPassword
UINT32 accessPassword
Password to be used for the Access operation.
Definition: rfidapiStructs.h:1546
WRITE_SPECIFIC_FIELD_ACCESS_PARAMS::pWriteData
UINT8 * pWriteData
Pointer to a UINT8 array which contains the data to be written.
Definition: rfidapiStructs.h:1575
RFID_API_SUCCESS
@ RFID_API_SUCCESS
Definition: rfidapiErrors.h:27
TAG_DATA::pTagID
UINT8 * pTagID
Tag ID, for C1G2 this field refers EPC Data.
Definition: rfidapiStructs.h:925
UINT32
unsigned int UINT32
Definition: rfidapiTypes.h:30
TRUE
#define TRUE
Definition: rfidapiTypes.h:58
RECOMMISSION_ACCESS_PARAMS::killPassword
UINT32 killPassword
Kill Password.
Definition: rfidapiStructs.h:1631
RFID_Lock
RFID_STATUS WINAPI RFID_Lock(RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPLOCK_ACCESS_PARAMS lpLockParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
This function locks tag(s).
Definition: rfidapi.cpp:6025
LOCK_PRIVILEGE_READ_WRITE
@ LOCK_PRIVILEGE_READ_WRITE
Lock Privilege: Read-Write.
Definition: rfidapiConstants.h:429
TAG_PATTERN::bitOffset
UINT16 bitOffset
Bit offset.
Definition: rfidapiStructs.h:1454
TAG_PATTERN
This struct holds Tag Pattern criteria for Filter Operation.
Definition: rfidapiStructs.h:1452
LOCK_USER_MEMORY
@ LOCK_USER_MEMORY
Lock the data field: User Memory.
Definition: rfidapiConstants.h:445
ACCESS_STOP_EVENT
@ ACCESS_STOP_EVENT
Access Operation has stopped.
Definition: rfidapiConstants.h:81
TAG_DATA
Contains Tag related information.
Definition: rfidapiStructs.h:920
RFID_Connect
#define RFID_Connect
Definition: rfidapi.h:51
TAG_PATTERN::tagPatternBitCount
UINT16 tagPatternBitCount
Number of bits in pTagPattern to be taken for comparison.
Definition: rfidapiStructs.h:1460
TAG_DATA::pMemoryBankData
UINT8 * pMemoryBankData
The data read from the specified Bank or Block Permalock Mask Data as specified by opCode.
Definition: rfidapiStructs.h:954
RFID_STATUS
RFID_STATUS
Definition: rfidapiErrors.h:26
RFID_PerformInventory
RFID_STATUS WINAPI RFID_PerformInventory(RFID_HANDLE32 readerHandle, LPPOST_FILTER lpPostFilter, LPANTENNA_INFO lpAntennaInfo, LPTRIGGER_INFO lpTriggerInfo, LPVOID rsvd)
This function performs the inventory operation.
Definition: rfidapi.cpp:4156
TAG_DATA::tagIDLength
UINT32 tagIDLength
Tag ID Length (Number of Bytes).
Definition: rfidapiStructs.h:926
TAG_PATTERN::memoryBank
MEMORY_BANK memoryBank
Memory Bank to be considered for filtering.
Definition: rfidapiStructs.h:1453
LOCK_TID_MEMORY
@ LOCK_TID_MEMORY
Lock the data field: TID Memory.
Definition: rfidapiConstants.h:444
RFID_WriteAccessPassword
RFID_STATUS WINAPI RFID_WriteAccessPassword(RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPWRITE_SPECIFIC_FIELD_ACCESS_PARAMS lpWriteSpecificFieldAccessParams, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
This function writes to access password of a specific tag.
Definition: rfidapi.cpp:5716
BLOCK_PERMALOCK_ACCESS_PARAMS::memoryBank
MEMORY_BANK memoryBank
Memory bank on which access operation is to be performed.
Definition: rfidapiStructs.h:1643
WRITE_ACCESS_PARAMS::pWriteData
UINT8 * pWriteData
Pointer to a UINT8 array which contains the data to be written.
Definition: rfidapiStructs.h:1560
RFID_Kill
RFID_STATUS WINAPI RFID_Kill(RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPKILL_ACCESS_PARAMS lpKillParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPVOID rsvd)
This function kills tag(s).
Definition: rfidapi.cpp:5858
WRITE_ACCESS_PARAMS
This struct contains the parameters for Write Access Operation.
Definition: rfidapiStructs.h:1556
READ_ACCESS_PARAMS::byteOffset
UINT16 byteOffset
Byte offset; The addresss of the first byte to read from the chosen memory bank.
Definition: rfidapiStructs.h:1542
WRITE_ACCESS_PARAMS::memoryBank
MEMORY_BANK memoryBank
Memory bank on which data is to be written to.
Definition: rfidapiStructs.h:1557
MAX_PATH
#define MAX_PATH
Definition: rfidapiTypes.h:43
TAG_PATTERN::pTagMask
UINT8 * pTagMask
Bit Mask to be matched The application should allocate an UINT8 array and assign it to this field.
Definition: rfidapiStructs.h:1461
BLOCK_PERMALOCK_ACCESS_PARAMS::byteCount
UINT16 byteCount
Specifies the range of Mask, starting from byteOffset and ending (16xBlockRange)-1 blocks later.
Definition: rfidapiStructs.h:1649
RFID_AllocateTag
LPTAG_DATA WINAPI RFID_AllocateTag(RFID_HANDLE32 readerHandle)
This function allocates and initializes the TAG_DATA structure for the application.
Definition: rfidapi.cpp:3438
RFID_Read
RFID_STATUS WINAPI RFID_Read(RFID_HANDLE32 readerHandle, UINT8 *pTagID, UINT32 tagIDLength, LPREAD_ACCESS_PARAMS lpReadAccessParams, LPACCESS_FILTER lpAccessFilter, LPANTENNA_INFO lpAntennaInfo, LPTAG_DATA lpTagData, LPVOID rsvd)
This function reads a specified memory bank of tag(s).
Definition: rfidapi.cpp:5184
RFID_GetReadTag
RFID_STATUS WINAPI RFID_GetReadTag(RFID_HANDLE32 readerHandle, LPTAG_DATA lpTagData)
This function returns a Tag if available.
Definition: rfidapi.cpp:3651
RFID_StopInventory
RFID_STATUS WINAPI RFID_StopInventory(RFID_HANDLE32 readerHandle)
This function stops the inventory operation.
Definition: rfidapi.cpp:4973
WRITE_SPECIFIC_FIELD_ACCESS_PARAMS::writeDataLength
UINT16 writeDataLength
Length of the array pWriteData.
Definition: rfidapiStructs.h:1578