RFID_STATUS WINAPI RFID_AddZoneW ( RFID_HANDLE32  readerHandle,
UINT16  zoneId,
LPZONE_CONFIGW  zoneConfig,
LPVOID  rsvd 
)

This function Adds the Zone and sets configuration for Antennas in the Zone.

Parameters:
[in] readerHandle 
Handle to the RFID device.
[in] zoneId 
ID of the Zone to be created, if the zone ID already exists returns Error
[in] zoneConfig 
Contains the name and List of Antenna configuration which is part of the Zone
[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 Invalid parameter given
  • RFID_API_PARAM_OUT_OF_RANGE Parameter out of range [Antenna ID/GPI]
  • RFID_INVENTORY_IN_PROGRESS Inventory in progress, cannot perform requested operation
  • RFID_ACCESS_IN_PROGRESS Access Operation in progress, cannot perform requested operation
  • RFID_TAG_LOCATING_IN_PROGRESS Tag Locating in progress, cannot perform requested operation
  • RFID_NXP_EAS_SCAN_IN_PROGRESS NXP EAS SCAN in progress, cannot perform requested operation
Remarks:
Zone information and antenna configuration will be set to the reader when performZoneInventory is called
See also:
RFID_PerformZoneInventory,RFID_DeleteZone
Remarks:
Example:
void printTagData(UINT8*pTagID, UINT32 tagIDLength)
{
char  tagBuffer[64] = {0, };
char* pTagReportData = tagBuffer;
for(UINT32 index = 0; index < tagIDLength; index++)
{
if(0 < index && index%2 == 0)
{
*pTagReportData++ = '-';
}
sprintf(pTagReportData, "%02X", pTagID[index]);
while(*pTagReportData) pTagReportData++;
}
printf("\n Tag ID: %s", tagBuffer);
}
// Event Management and Simple Inventory, GPO
// Code snippet for Simple Inventory without filters
RFID_HANDLE32 readerHandle;
RFID_STATUS rfidStatus = RFID_API_SUCCESS;
HANDLE TagArrived = CreateEvent(NULL, FALSE, FALSE, NULL);
LPTAG_DATA pTagData;
TAG_STORAGE_SETTINGS tagStorageSettings;
BOOLEAN gpoState = FALSE;
if(RFID_API_SUCCESS == RFID_Connect(&readerHandle, TEXT("157.235.207.190"), 0, 0, 0))
{
        RFID_ResetConfigToFactoryDefaults(readerHandle);
        TAG_STORAGE_SETTINGS tagStorageSetting;
        RFID_GetTagStorageSettings(readerHandle, &tagStorageSetting);
        tagStorageSetting.tagFields |= (ZONE_ID|ZONE_NAME);
        tagStorageSetting.discardTagsOnInventoryStop = true;
        RFID_SetTagStorageSettings(readerHandle, &tagStorageSetting);

        LPTAG_DATA pTagData = RFID_AllocateTag(readerHandle);
        if(NULL == pTagData)
        {
                return;
        }
        
        // Get Global RF Config and Stop Condition 
        ANTENNA_RF_CONFIG globalAntennaRFConfig={0};
        rfidStatus = RFID_GetAntennaRfConfig(readerHandle, 1, &globalAntennaRFConfig);
        globalAntennaRFConfig.antennaStopTrigger.stopTriggerType = ANTENNA_STOP_TRIGGER_TYPE_DURATION_SECS;
        globalAntennaRFConfig.antennaStopTrigger.stopTriggerValue = 3000;

        rfidStatus = RFID_SetAntennaRfConfig(readerHandle, 0, &globalAntennaRFConfig);

        // Override settings only for Antenna 1
        globalAntennaRFConfig.antennaStopTrigger.stopTriggerType = ANTENNA_STOP_TRIGGER_TYPE_N_ATTEMPTS;
        globalAntennaRFConfig.antennaStopTrigger.stopTriggerValue = 2;

        rfidStatus = RFID_SetAntennaRfConfig(readerHandle, 1, &globalAntennaRFConfig);

        //
        UINT16 zoneAntennaList[4] = {1,2,3,4};
        UINT16 zoneAntennaList1[4] = {0};
        UINT16 zoneAntennaList2[4] = {0};

        char antennaIDs[] = "1 2";
        AddZone(1, "Zone one two", antennaIDs,zoneAntennaList);
        char antennaIDs1[] = "3 4";
        AddZone(2, "Zone three four", antennaIDs1,zoneAntennaList1);
        char antennaIDs2[] = "6 7";
        AddZone(3, "Zone six seven" ,antennaIDs2,zoneAntennaList2);

        ANTENNA_INFO antennaInfo;
        antennaInfo.length = 2;
        antennaInfo.pAntennaList = zoneAntennaList;
        antennaInfo.pAntennaOpList = NULL;

        ZONE_SEQUENCE zoneseq = {0};
        ZONE_INFO zoneInfo[3] = {{1,zoneAntennaList,2,C1G2_OPERATION,0},{2,zoneAntennaList1,2,C1G2_OPERATION,0},{3,zoneAntennaList2,2,C1G2_OPERATION,0}};
        zoneseq.pZoneList = zoneInfo;
        zoneseq.zoneListCount = 3;

        rfidStatus = RFID_PerformZoneInventory(readerHandle, NULL, &antennaInfo, NULL, &zoneseq, NULL);
        if(RFID_API_SUCCESS == rfidStatus)
                LOG_MSG(TEXT("PerformZoneInventory Success"));

        //Wait for sometime so that some tags are reported from the Reader
        Sleep(10000);
        //
        rfidStatus = RFID_StopInventory(readerHandle);
        int tagCount = 0;
        while(RFID_API_SUCCESS == RFID_GetReadTag(readerHandle, pTagData))
        {       
                if(pTagData->opCode != ACCESS_OPERATION_NONE)
                {
                        tagCount = 0;
                        break;
                }
                else
                {
                        printTagData(pTagData);
                        tagCount++;
                }
        }

        rfidStatus = RFID_DeleteZone(readerHandle,1,NULL);
        if(RFID_API_SUCCESS == rfidStatus)
                printf("DeleteZone Success");

        rfidStatus = RFID_DeleteZone(readerHandle,0,NULL);
        if(RFID_API_SUCCESS == rfidStatus)
                printf("RFID_DeleteZone Delete All Zone Success");

        RFID_DeallocateTag(readerHandle, pTagData);
}


void AddZone(int id, char* name, char* antennaIDs,UINT16 * zoneAntennaList)
{
        int antennaCount = 0;
        char *pchT = antennaIDs;
        while (*pchT++ != NULL)
        {
                if (*pchT == ' ')
                        antennaCount++;
        }
        if (antennaCount > 0) antennaCount++;
        char *pch;
        pch = strtok(antennaIDs, " ");
        int antennaIndex = 0;
        int antennaID;

        ANTENNA_RF_CONFIG globalAntennaRFConfig={0};
        RFID_STATUS rfidStatus = RFID_GetAntennaRfConfig(readerHandle, 1, &globalAntennaRFConfig);
        globalAntennaRFConfig.antennaStopTrigger.stopTriggerType = ANTENNA_STOP_TRIGGER_TYPE_DURATION_SECS;
        globalAntennaRFConfig.antennaStopTrigger.stopTriggerValue = 3000;

        ZONE_CONFIG zoneConfig={0};
        zoneConfig.antennaCount = antennaCount;
        zoneConfig.lpAntennaConfiguartions;
        zoneConfig.lpZoneGlobalAntennaConfiguration = NULL;
#ifndef UNICODE
        strcpy(zoneConfig.ZoneName,name);
#else
        mbstowcs(zoneConfig.ZoneName,name,MAX_PATH);
#endif
        zoneConfig.lpAntennaConfiguartions = new ANTENNA_CONFIG[antennaCount];
        while (pch != NULL)
        {
                antennaID = atoi(pch);
                zoneAntennaList[antennaIndex] = antennaID;
                zoneConfig.lpAntennaConfiguartions[antennaIndex].antennaID = antennaID;
                
                zoneConfig.lpAntennaConfiguartions[antennaIndex].lpAntennaRfConfig = &globalAntennaRFConfig;
                zoneConfig.lpAntennaConfiguartions[antennaIndex].lpAntennaRfConfig->antennaStopTrigger.stopTriggerType = ANTENNA_STOP_TRIGGER_TYPE_DURATION_SECS;
                zoneConfig.lpAntennaConfiguartions[antennaIndex].lpAntennaRfConfig->antennaStopTrigger.stopTriggerValue = 2;
                // Get Singulation Control
                SINGULATION_CONTROL singulationControl;
                RFID_GetSingulationControl(readerHandle, antennaID, &singulationControl);
                singulationControl.tagPopulation = 2 ^ 6;
                singulationControl.session = SESSION_S0;
                zoneConfig.lpAntennaConfiguartions[antennaIndex].lpSingulationControl = &singulationControl;
                zoneConfig.lpAntennaConfiguartions[antennaIndex].lpPreFilterList = NULL;
                antennaIndex++;
                // Fetch the next antenna
                pch = strtok(NULL, " ");
        }
        rfidStatus = RFID_AddZone(readerHandle,id,&zoneConfig,0);
        if(RFID_API_SUCCESS == rfidStatus)
                LOG_MSG(TEXT("Addzone done"));
}


Generated on Fri Mar 4 02:25:30 2016 for RFIDAPI3 1.1 C API Documentation by  doxygen 1.5.6