RFD 8500 performing asynchronous operations in order to tag locate based on product ID.

I am connecting to RFD 8500 device and its RFID Reader and reading the tag location from my android application. In order to read the tag location (using API3 library) I am defining a RFID Reader and invoking "tag locationing" -

          rfidReader.Actions.TagLocationing.Perform("30740322381297EBF5E22D2B", null, null);

I would like to do the tag locationing for multiple tags, but at the same time on an asynchronous manner using a single RFD 8500 device. I don't find any ways to do this from the device's developer guide. Is there a way to achieve this?

Alternatively, if i could do tag locationing based on a product ID on the tag and not the tag ID that will solve my problem too. But i do not sue product ID being read or used anywhere using the API3 library. Does the memory bank data of a tag contain product ID?

Also, are there options to do multiple operations on the RFD 8500 at the same time at any use case at all? For example, I would like to asynchronously query for tags in the vicinity, filter them and trigger a tag locationing event for a tag satisfying certain criteria.

Say, I would need to the following operations asynchronously at the same point of time with a single device,

     rfidReader.Actions.Inventory.perform();  -- asynchronous operation 1

     rfidReader.Actions.TagLocationing.Perform(tagId, null, null); -- asynchronous operation 2

   

   OR say,

    

         //Asynchronous operation 1

          ------------------------------------

          TagAccess tagAccess = new TagAccess();

          TagAccess.ReadAccessParams readAccessParams = tagAccess.new ReadAccessParams();

          readAccessParams.setAccessPassword(0);

          readAccessParams.setByteCount(8);

          readAccessParams.setMemoryBank(MEMORY_BANK.MEMORY_BANK_USER);

          readAccessParams.setByteOffset(0);

          AccessFilter accessFilter = new AccessFilter();

          byte[] tagMask = new byte[] { (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff,

       (byte)0xff, (byte)0xff, (byte)0xff };

          // Tag Pattern A
          accessFilter.TagPatternA.setMemoryBank(MEMORY_BANK.MEMORY_BANK_RESERVED);

          accessFilter.TagPatternA.setTagPattern(new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 });

          accessFilter.TagPatternA.setTagPatternBitCount(8 * 8);

          accessFilter.TagPatternA.setBitOffset(0);

          accessFilter.TagPatternA.setTagMask(tagMask);

          accessFilter.TagPatternA.setTagMaskBitCount(tagMask.length * 8);

          accessFilter.setAccessFilterMatchPattern(FILTER_MATCH_PATTERN.A);

          rfidReader.Actions.TagAccess.readEvent(readAccessParams, accessFilter, null);

         

             

          //Asynchronous operation 2

          ------------------------------------

         

          rfidReader.Actions.TagLocationing.Perform(tagId, null, null);

    

I am interested in doing these various asynchronous operations, so that I can find a tag for a product located in the closest proximity from the RFD 8500 device. So if there is a better solution to solve the use case I would be interested to learn. These are the various ad hoc operations I figured out from the developer guide of the device and put together to solve the problem of pulling out the closest tag for a product ID (UPC in this case).

Thanks for reading.