How do I configure Monza 4QT with the LTK?

The Monza® 4QT tag chip features Impinj's patent-pending QT® technology—a unique ability to maintain two data profiles to support protection of business-sensitive data and consumer privacy. With QT technology, tag owners can use a private data profile to store confidential data, while a public data profile holds less sensitive information. The ability to switch between these two profiles is protected by the tag's access password, physical distance from a reader antenna via a short range mode, or both.

The following code sample shows how to configure an Impinj Monza 4QT tag using the LLRP Toolkit (LTK). The method below places an OpSpec on the reader that sets the access range (near / far), data profile (public / private) and persistence (permanent / temporary) properties of the tag.

 
public void Add_QT_AccessSpec(ENUM_ImpinjQTDataProfile dataProfile,
                             ENUM_ImpinjQTAccessRange accessRange,
                             ENUM_ImpinjQTPersistence persistence)
{
   MSG_ADD_ACCESSSPEC msg = new MSG_ADD_ACCESSSPEC();
    
   // AccessSpec
   msg.AccessSpec = new PARAM_AccessSpec();
   msg.AccessSpec.AccessSpecID = ACCESS_SPEC_ID;
   msg.AccessSpec.AntennaID = 0;
   msg.AccessSpec.ROSpecID = 0;
   msg.AccessSpec.ProtocolID = ENUM_AirProtocols.EPCGlobalClass1Gen2;
   msg.AccessSpec.CurrentState = ENUM_AccessSpecState.Disabled;
    
   // AccessSpecStopTrigger
   msg.AccessSpec.AccessSpecStopTrigger = new PARAM_AccessSpecStopTrigger();
   msg.AccessSpec.AccessSpecStopTrigger.AccessSpecStopTrigger =
       ENUM_AccessSpecStopTriggerType.Operation_Count;
   msg.AccessSpec.AccessSpecStopTrigger.OperationCountValue = 1;
    
   // AccessCommand
   msg.AccessSpec.AccessCommand = new PARAM_AccessCommand();
   msg.AccessSpec.AccessCommand.AirProtocolTagSpec = new UNION_AirProtocolTagSpec();
    
   // TagSpec
   PARAM_C1G2TagSpec tagSpec = new PARAM_C1G2TagSpec();
   tagSpec.C1G2TargetTag = new PARAM_C1G2TargetTag[1];
   tagSpec.C1G2TargetTag[0] = new PARAM_C1G2TargetTag();
   tagSpec.C1G2TargetTag[0].Match = true;
   tagSpec.C1G2TargetTag[0].MB = new TwoBits(1);
   tagSpec.C1G2TargetTag[0].Pointer = 16;
   tagSpec.C1G2TargetTag[0].TagData = LLRPBitArray.FromString("");
   tagSpec.C1G2TargetTag[0].TagMask = LLRPBitArray.FromString("");
   msg.AccessSpec.AccessCommand.AirProtocolTagSpec.Add(tagSpec);
    
   // AccessCommandOpSpec
   msg.AccessSpec.AccessCommand.AccessCommandOpSpec = new UNION_AccessCommandOpSpec();
    
   PARAM_ImpinjSetQTConfig qtConfig = new PARAM_ImpinjSetQTConfig();
   qtConfig.DataProfile = new ENUM_ImpinjQTDataProfile();
   qtConfig.OpSpecID = OP_SPEC_ID;
   qtConfig.AccessPassword = 0;
   qtConfig.Persistence = persistence;
   qtConfig.DataProfile = dataProfile;
   qtConfig.AccessRange = accessRange;
    
   msg.AccessSpec.AccessCommand.AccessCommandOpSpec.AddCustomParameter(qtConfig);
    
   MSG_ADD_ACCESSSPEC_RESPONSE rsp =
      reader.ADD_ACCESSSPEC(msg, out msg_err, MSG_TIMEOUT_MSEC);
   CheckLlrpReply(rsp.LLRPStatus);
}

To configure the tag, you would call the method like this:

 
// Put the tag in public mode. A zero EPC will be backscattered.
reader.Add_QT_AccessSpec(  ENUM_ImpinjQTDataProfile.Public,
                           ENUM_ImpinjQTAccessRange.Normal_Range,
                           ENUM_ImpinjQTPersistence.Permanent);
 
Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Article is closed for comments.