Overview
This Tutorial provides a walk-through of the steps to set 32 Pre-Filters using RFID3 API
Create The Project
- Start by creating a new project in Android Studio. For help, see the Android Studio tutorial.
- Refer Hello RFID to prepare basic setup to work with RFID Reader and then follow this guide
Details
Pre-filters are the same as the Select command of C1G2 specification. Once applied, pre-filters are applied prior to Inventory and Access operations.
Please refer to the Prefilter Configuration guide for detailed information related to prefilter before proceeding with this tutorial.
Setting it up
In the sample code given below we are to setting 8 prefilters. Similarly users can set up to 32 prefilters.
PreFilters.PreFilter[] preFilterArray = new PreFilters.PreFilter[8];
PreFilters filters = new PreFilters();
PreFilters.PreFilter filter = filters.new PreFilter();
filter.setAntennaID((short) 1);
filter.setTagPattern("00000");
filter.setTagPatternBitCount(4);
filter.setBitOffset(32);
filter.setMemoryBank(MEMORY_BANK.MEMORY_BANK_EPC);
filter.setFilterAction(FILTER_ACTION.FILTER_ACTION_STATE_AWARE);
filter.StateAwareAction.setTarget(TARGET.TARGET_SL);
filter.StateAwareAction.setStateAwareAction(STATE_AWARE_ACTION.STATE_AWARE_ACTION_ASRT_SL);
filter.setTruncateAction(TRUNCATE_ACTION.TRUNCATE_ACTION_DO_NOT_TRUNCATE);
preFilterArray[0] = filter;
PreFilters filters1 = new PreFilters();
PreFilters.PreFilter filter1 = filters1.new PreFilter();
filter1.setAntennaID((short) 1);
filter1.setTagPattern("111111");
filter1.setTagPatternBitCount(4);
filter1.setBitOffset(32);
filter1.setMemoryBank(MEMORY_BANK.MEMORY_BANK_EPC);
filter1.setFilterAction(FILTER_ACTION.FILTER_ACTION_STATE_AWARE);
filter1.StateAwareAction.setTarget(TARGET.TARGET_INVENTORIED_STATE_S2);
filter1.StateAwareAction.setStateAwareAction(STATE_AWARE_ACTION.STATE_AWARE_ACTION_INV_A_NOT_INV_B);
filter1.setTruncateAction(TRUNCATE_ACTION.TRUNCATE_ACTION_DO_NOT_TRUNCATE);
preFilterArray[1] = filter1;
PreFilters filters2 = new PreFilters();
PreFilters.PreFilter filter2 = filters2.new PreFilter();
filter2.setAntennaID((short) 1);
filter2.setTagPattern("22222");
filter2.setTagPatternBitCount(4);
filter2.setBitOffset(32);
filter2.setMemoryBank(MEMORY_BANK.MEMORY_BANK_EPC);
filter2.setFilterAction(FILTER_ACTION.FILTER_ACTION_STATE_AWARE);
filter2.StateAwareAction.setTarget(TARGET.TARGET_INVENTORIED_STATE_S1);
filter2.StateAwareAction.setStateAwareAction(STATE_AWARE_ACTION.STATE_AWARE_ACTION_INV_A);
filter2.setTruncateAction(TRUNCATE_ACTION.TRUNCATE_ACTION_DO_NOT_TRUNCATE);
preFilterArray[2] = filter2;
PreFilters filters3 = new PreFilters();
PreFilters.PreFilter filter3 = filters3.new PreFilter();
filter3.setAntennaID((short) 1);
filter3.setTagPattern("33333");
filter3.setTagPatternBitCount(4);
filter3.setBitOffset(32);
filter3.setMemoryBank(MEMORY_BANK.MEMORY_BANK_EPC);
filter3.setFilterAction(FILTER_ACTION.FILTER_ACTION_STATE_AWARE);
filter3.StateAwareAction.setTarget(TARGET.TARGET_INVENTORIED_STATE_S0);
filter3.StateAwareAction.setStateAwareAction(STATE_AWARE_ACTION.STATE_AWARE_ACTION_INV_B_NOT_INV_A);
filter3.setTruncateAction(TRUNCATE_ACTION.TRUNCATE_ACTION_DO_NOT_TRUNCATE);
preFilterArray[3] = filter3;
PreFilters filters4 = new PreFilters();
PreFilters.PreFilter filter4 = filters4.new PreFilter();
filter4.setAntennaID((short) 1);
filter4.setTagPattern("44444");
filter4.setTagPatternBitCount(4);
filter4.setBitOffset(32);
filter4.setMemoryBank(MEMORY_BANK.MEMORY_BANK_EPC);
filter4.setFilterAction(FILTER_ACTION.FILTER_ACTION_STATE_AWARE);
filter4.StateAwareAction.setTarget(TARGET.TARGET_INVENTORIED_STATE_S1);
filter4.StateAwareAction.setStateAwareAction(STATE_AWARE_ACTION.STATE_AWARE_ACTION_INV_B);
filter4.setTruncateAction(TRUNCATE_ACTION.TRUNCATE_ACTION_DO_NOT_TRUNCATE);
preFilterArray[4] = filter4;
PreFilters filters5 = new PreFilters();
PreFilters.PreFilter filter5 = filters5.new PreFilter();
filter5.setAntennaID((short) 1);
filter5.setTagPattern("55555");
filter5.setTagPatternBitCount(4);
filter5.setBitOffset(32);
filter5.setMemoryBank(MEMORY_BANK.MEMORY_BANK_EPC);
filter5.setFilterAction(FILTER_ACTION.FILTER_ACTION_STATE_AWARE);
filter5.StateAwareAction.setTarget(TARGET.TARGET_SL);
filter5.StateAwareAction.setStateAwareAction(STATE_AWARE_ACTION.STATE_AWARE_ACTION_ASRT_SL);
filter5.setTruncateAction(TRUNCATE_ACTION.TRUNCATE_ACTION_DO_NOT_TRUNCATE);
preFilterArray[5] = filter5;
PreFilters filters6 = new PreFilters();
PreFilters.PreFilter filter6 = filters6.new PreFilter();
filter6.setAntennaID((short) 1);
filter6.setTagPattern("66666");
filter6.setTagPatternBitCount(4);
filter6.setBitOffset(32);
filter6.setMemoryBank(MEMORY_BANK.MEMORY_BANK_EPC);
filter6.setFilterAction(FILTER_ACTION.FILTER_ACTION_STATE_AWARE);
filter6.StateAwareAction.setTarget(TARGET.TARGET_INVENTORIED_STATE_S3);
filter6.StateAwareAction.setStateAwareAction(STATE_AWARE_ACTION.STATE_AWARE_ACTION_INV_B);
filter6.setTruncateAction(TRUNCATE_ACTION.TRUNCATE_ACTION_DO_NOT_TRUNCATE);
preFilterArray[6] = filter6;
PreFilters filters7 = new PreFilters();
PreFilters.PreFilter filter7 = filters7.new PreFilter();
filter7.setAntennaID((short) 1);
filter7.setTagPattern("77777");
filter7.setTagPatternBitCount(4);
filter7.setBitOffset(32);
filter7.setMemoryBank(MEMORY_BANK.MEMORY_BANK_EPC);
filter7.setFilterAction(FILTER_ACTION.FILTER_ACTION_STATE_AWARE);
filter7.StateAwareAction.setTarget(TARGET.TARGET_SL);
filter7.StateAwareAction.setStateAwareAction(STATE_AWARE_ACTION.STATE_AWARE_ACTION_ASRT_SL);
filter7.setTruncateAction(TRUNCATE_ACTION.TRUNCATE_ACTION_DO_NOT_TRUNCATE);
preFilterArray[7] = filter7;
reader.Actions.PreFilters.add(preFilterArray, null);