esitarski / CrossMgr

Cyclo Cross Management Application
MIT License
41 stars 21 forks source link

[Py3 update] [Impinj readers] CrossMgrImpinj First Read Time not working #44

Open rkantos opened 4 years ago

rkantos commented 4 years ago

While testing and troubleshooting the transmit power issue with CrossMgrImpinj and my Impinj R220 readers, I thought of testing them with CrossMgrImpinj v2.0.14 (latest version I have which works on my Windows 7 machine). There was no change to the power setting issue with ETSI readers. However I noticed that when trying different reader modes, the First Read Time mode was working with v2.0.14 but isn't working with CrossMgrImpinj 3.0.5 or 3.0.6

The First Read Time mode is working normally with my Motorola FX9500 reader.

I've attached the log with the relevant section

CrossMgrImpinj 3.0.5
Configuration: CrossMgrImpinj
    RunningTime:   00:00:19
    Time:          16:59:01
    BackupFile:    C:\Users\crossmgr\ImpinjData\Impinj-2020-01-23-16-58-47.txt

Configuration: Impinj:
    Use Host Name: False
    HostName:      SpeedwayR-11-1c-8d.local
    ImpinjHost:    192.168.1.128
    ImpinjPort:    5084
    ReportMethod:  First Read Time
    AntennaChoice: Max Signal dB
    RemoveOutliers:3

    ConnectionTimeoutSeconds: 3
    KeepaliveSeconds:         2
    RepeatSeconds:            3

Configuration: CrossMgr
    CrossMgrHost:  127.0.0.1
    CrossMgrPort:  53135

Log: Impinj
    *****************************************
    Reader Server Started: (192.168.1.128:5084)

    Trying to Connect to Reader: (192.168.1.128:5084)...
    ConnectionTimeout=3.00 seconds
    Connected to: (192.168.1.128:5084)
    Waiting for READER_EVENT_NOTIFICATION...

    Received Response:
    READER_EVENT_NOTIFICATION(
      MessageID=719673943,
      Parameters=[
        ReaderEventNotificationData(
          Parameters=[
            UTCTimestamp( Microseconds=1579792335415079 ),
            ConnectionAttemptEvent( Status=ConnectionAttemptStatusType.Success ),
          ]
        ),
      ]
    )

    Reader time is 6392.252591 seconds different from computer time

    -----------------------------------------------------
    Sending Message:
    SET_READER_CONFIG(
      MessageID=10,
      ResetToFactoryDefault=True,
    )

    Received Response:
    SET_READER_CONFIG_RESPONSE(
      MessageID=10,
      Parameters=[
        LLRPStatus(
          StatusCode=StatusCode.M_Success,
          ErrorDescription='',
        ),
      ]
    )

    -----------------------------------------------------
    Sending Message:
    GET_READER_CONFIG(
      MessageID=11,
      AntennaID=0,
      RequestedData=GetReaderConfigRequestedData.AntennaProperties,
      GPIPortNum=0,
      GPOPortNum=0,
    )

    Received Response:
    GET_READER_CONFIG_RESPONSE(
      MessageID=11,
      Parameters=[
        LLRPStatus(
          StatusCode=StatusCode.M_Success,
          ErrorDescription='',
        ),
        AntennaProperties(
          AntennaConnected=True,
          AntennaID=1,
          AntennaGain=0,
        ),
        AntennaProperties(
          AntennaConnected=False,
          AntennaID=2,
          AntennaGain=0,
        ),
      ]
    )

    -----------------------------------------------------
    Sending Message:
    SET_READER_CONFIG(
      MessageID=12,
      ResetToFactoryDefault=False,
      Parameters=[
        AntennaConfiguration(
          AntennaID=0,
          Parameters=[
            RFReceiver( ReceiverSensitivity=1 ),
            RFTransmitter(
              HopTableID=1,
              ChannelIndex=0,
              TransmitPower=100,
            ),
            C1G2InventoryCommand(
              TagInventoryStateAware=False,
              Parameters=[
                C1G2SingulationControl(
                  Session=2,
                  TagPopulation=4,
                  TagTransitTime=3000,
                ),
              ]
            ),
          ]
        ),
        KeepaliveSpec(
          KeepaliveTriggerType=KeepaliveTriggerType.Periodic,
          PeriodicTriggerValue=2000,
        ),
      ]
    )

    Received Response:
    SET_READER_CONFIG_RESPONSE(
      MessageID=12,
      Parameters=[
        LLRPStatus(
          StatusCode=StatusCode.M_FieldError,
          ErrorDescription='LLRP [420] : //RFTransmitter/ChannelIndex : out-of-range',
          Parameters=[
            ParameterError(
              ParameterType=222,
              ErrorCode=StatusCode.P_ParameterError,
              Parameters=[
                ParameterError(
                  ParameterType=224,
                  ErrorCode=StatusCode.P_FieldError,
                  Parameters=[
                    FieldError(
                      FieldNum=2,
                      ErrorCode=StatusCode.A_OutOfRange,
                    ),
                  ]
                ),
              ]
            ),
          ]
        ),
      ]
    )

    -----------------------------------------------------
    Sending Message:
    DISABLE_ROSPEC(
      MessageID=13,
      ROSpecID=0,
    )

    Received Response:
    DISABLE_ROSPEC_RESPONSE(
      MessageID=13,
      Parameters=[
        LLRPStatus(
          StatusCode=StatusCode.M_FieldError,
          ErrorDescription='LLRP [1370] : No ROSpecs have been configured',
          Parameters=[
            FieldError(
              FieldNum=1,
              ErrorCode=StatusCode.A_Invalid,
            ),
          ]
        ),
      ]
    )

    -----------------------------------------------------
    Sending Message:
    DELETE_ROSPEC(
      MessageID=14,
      ROSpecID=123,
    )

    Received Response:
    DELETE_ROSPEC_RESPONSE(
      MessageID=14,
      Parameters=[
        LLRPStatus(
          StatusCode=StatusCode.M_FieldError,
          ErrorDescription='LLRP [409] : //ROSpecID : invalid',
          Parameters=[
            FieldError(
              FieldNum=1,
              ErrorCode=StatusCode.A_Invalid,
            ),
          ]
        ),
      ]
    )

    -----------------------------------------------------
    Sending Message:
    GET_READER_CAPABILITIES(
      MessageID=15,
      RequestedData=GetReaderCapabilitiesRequestedData.All,
    )

    Received Response:
    GET_READER_CAPABILITIES_RESPONSE(
      MessageID=15,
      Parameters=[
        LLRPStatus(
          StatusCode=StatusCode.M_Success,
          ErrorDescription='',
        ),
        GeneralDeviceCapabilities(
          MaxNumberOfAntennaSupported=2,
          CanSetAntennaProperties=False,
          HasUTCClockCapability=True,
          DeviceManufacturerName=25882,
          ModelName=2001001,
          ReaderFirmwareVersion='6.2.1.240',
          Parameters=[
            ReceiveSensitivityTableEntry(
              Index=1,
              ReceiveSensitivityValue=0,
            ),
            ReceiveSensitivityTableEntry(
              Index=2,
              ReceiveSensitivityValue=10,
            ),
            ReceiveSensitivityTableEntry(
              Index=3,
              ReceiveSensitivityValue=11,
            ),
            ReceiveSensitivityTableEntry(
              Index=4,
              ReceiveSensitivityValue=12,
            ),
            ReceiveSensitivityTableEntry(
              Index=5,
              ReceiveSensitivityValue=13,
            ),
            ReceiveSensitivityTableEntry(
              Index=6,
              ReceiveSensitivityValue=14,
            ),
            ReceiveSensitivityTableEntry(
              Index=7,
              ReceiveSensitivityValue=15,
            ),
            ReceiveSensitivityTableEntry(
              Index=8,
              ReceiveSensitivityValue=16,
            ),
            ReceiveSensitivityTableEntry(
              Index=9,
              ReceiveSensitivityValue=17,
            ),
            ReceiveSensitivityTableEntry(
              Index=10,
              ReceiveSensitivityValue=18,
            ),
            ReceiveSensitivityTableEntry(
              Index=11,
              ReceiveSensitivityValue=19,
            ),
            ReceiveSensitivityTableEntry(
              Index=12,
              ReceiveSensitivityValue=20,
            ),
            ReceiveSensitivityTableEntry(
              Index=13,
              ReceiveSensitivityValue=21,
            ),
            ReceiveSensitivityTableEntry(
              Index=14,
              ReceiveSensitivityValue=22,
            ),
            ReceiveSensitivityTableEntry(
              Index=15,
              ReceiveSensitivityValue=23,
            ),
            ReceiveSensitivityTableEntry(
              Index=16,
              ReceiveSensitivityValue=24,
            ),
            ReceiveSensitivityTableEntry(
              Index=17,
              ReceiveSensitivityValue=25,
            ),
            ReceiveSensitivityTableEntry(
              Index=18,
              ReceiveSensitivityValue=26,
            ),
            ReceiveSensitivityTableEntry(
              Index=19,
              ReceiveSensitivityValue=27,
            ),
            ReceiveSensitivityTableEntry(
              Index=20,
              ReceiveSensitivityValue=28,
            ),
            ReceiveSensitivityTableEntry(
              Index=21,
              ReceiveSensitivityValue=29,
            ),
            ReceiveSensitivityTableEntry(
              Index=22,
              ReceiveSensitivityValue=30,
            ),
            ReceiveSensitivityTableEntry(
              Index=23,
              ReceiveSensitivityValue=31,
            ),
            ReceiveSensitivityTableEntry(
              Index=24,
              ReceiveSensitivityValue=32,
            ),
            ReceiveSensitivityTableEntry(
              Index=25,
              ReceiveSensitivityValue=33,
            ),
            ReceiveSensitivityTableEntry(
              Index=26,
              ReceiveSensitivityValue=34,
            ),
            ReceiveSensitivityTableEntry(
              Index=27,
              ReceiveSensitivityValue=35,
            ),
            ReceiveSensitivityTableEntry(
              Index=28,
              ReceiveSensitivityValue=36,
            ),
            ReceiveSensitivityTableEntry(
              Index=29,
              ReceiveSensitivityValue=37,
            ),
            ReceiveSensitivityTableEntry(
              Index=30,
              ReceiveSensitivityValue=38,
            ),
            ReceiveSensitivityTableEntry(
              Index=31,
              ReceiveSensitivityValue=39,
            ),
            ReceiveSensitivityTableEntry(
              Index=32,
              ReceiveSensitivityValue=40,
            ),
            ReceiveSensitivityTableEntry(
              Index=33,
              ReceiveSensitivityValue=41,
            ),
            ReceiveSensitivityTableEntry(
              Index=34,
              ReceiveSensitivityValue=42,
            ),
            ReceiveSensitivityTableEntry(
              Index=35,
              ReceiveSensitivityValue=43,
            ),
            ReceiveSensitivityTableEntry(
              Index=36,
              ReceiveSensitivityValue=44,
            ),
            ReceiveSensitivityTableEntry(
              Index=37,
              ReceiveSensitivityValue=45,
            ),
            ReceiveSensitivityTableEntry(
              Index=38,
              ReceiveSensitivityValue=46,
            ),
            ReceiveSensitivityTableEntry(
              Index=39,
              ReceiveSensitivityValue=47,
            ),
            ReceiveSensitivityTableEntry(
              Index=40,
              ReceiveSensitivityValue=48,
            ),
            ReceiveSensitivityTableEntry(
              Index=41,
              ReceiveSensitivityValue=49,
            ),
            ReceiveSensitivityTableEntry(
              Index=42,
              ReceiveSensitivityValue=50,
            ),
            GPIOCapabilities(
              NumGPIs=4,
              NumGPOs=4,
            ),
            PerAntennaAirProtocol(
              AntennaID=1,
              ProtocolID=AirProtocols.[EPCGlobalClass1Gen2],
            ),
            PerAntennaAirProtocol(
              AntennaID=2,
              ProtocolID=AirProtocols.[EPCGlobalClass1Gen2],
            ),
          ]
        ),
        LLRPCapabilities(
          CanDoRFSurvey=False,
          CanReportBufferFillWarning=True,
          SupportsClientRequestOpSpec=False,
          CanDoTagInventoryStateAwareSingulation=False,
          SupportsEventAndReportHolding=True,
          MaxNumPriorityLevelsSupported=1,
          ClientRequestOpSpecTimeout=0,
          MaxNumROSpecs=1,
          MaxNumSpecsPerROSpec=32,
          MaxNumInventoryParameterSpecsPerAISpec=1,
          MaxNumAccessSpecs=1508,
          MaxNumOpSpecsPerAccessSpec=8,
        ),
        RegulatoryCapabilities(
          CountryCode=0,
          CommunicationsStandard=CommunicationsStandard.ETSI_302_208,
          Parameters=[
            UHFBandCapabilities(
              Parameters=[
                TransmitPowerLevelTableEntry(
                  Index=1,
                  TransmitPowerValue=1000,
                ),
                TransmitPowerLevelTableEntry(
                  Index=2,
                  TransmitPowerValue=1025,
                ),
                TransmitPowerLevelTableEntry(
                  Index=3,
                  TransmitPowerValue=1050,
                ),
                TransmitPowerLevelTableEntry(
                  Index=4,
                  TransmitPowerValue=1075,
                ),
                TransmitPowerLevelTableEntry(
                  Index=5,
                  TransmitPowerValue=1100,
                ),
                TransmitPowerLevelTableEntry(
                  Index=6,
                  TransmitPowerValue=1125,
                ),
                TransmitPowerLevelTableEntry(
                  Index=7,
                  TransmitPowerValue=1150,
                ),
                TransmitPowerLevelTableEntry(
                  Index=8,
                  TransmitPowerValue=1175,
                ),
                TransmitPowerLevelTableEntry(
                  Index=9,
                  TransmitPowerValue=1200,
                ),
                TransmitPowerLevelTableEntry(
                  Index=10,
                  TransmitPowerValue=1225,
                ),
                TransmitPowerLevelTableEntry(
                  Index=11,
                  TransmitPowerValue=1250,
                ),
                TransmitPowerLevelTableEntry(
                  Index=12,
                  TransmitPowerValue=1275,
                ),
                TransmitPowerLevelTableEntry(
                  Index=13,
                  TransmitPowerValue=1300,
                ),
                TransmitPowerLevelTableEntry(
                  Index=14,
                  TransmitPowerValue=1325,
                ),
                TransmitPowerLevelTableEntry(
                  Index=15,
                  TransmitPowerValue=1350,
                ),
                TransmitPowerLevelTableEntry(
                  Index=16,
                  TransmitPowerValue=1375,
                ),
                TransmitPowerLevelTableEntry(
                  Index=17,
                  TransmitPowerValue=1400,
                ),
                TransmitPowerLevelTableEntry(
                  Index=18,
                  TransmitPowerValue=1425,
                ),
                TransmitPowerLevelTableEntry(
                  Index=19,
                  TransmitPowerValue=1450,
                ),
                TransmitPowerLevelTableEntry(
                  Index=20,
                  TransmitPowerValue=1475,
                ),
                TransmitPowerLevelTableEntry(
                  Index=21,
                  TransmitPowerValue=1500,
                ),
                TransmitPowerLevelTableEntry(
                  Index=22,
                  TransmitPowerValue=1525,
                ),
                TransmitPowerLevelTableEntry(
                  Index=23,
                  TransmitPowerValue=1550,
                ),
                TransmitPowerLevelTableEntry(
                  Index=24,
                  TransmitPowerValue=1575,
                ),
                TransmitPowerLevelTableEntry(
                  Index=25,
                  TransmitPowerValue=1600,
                ),
                TransmitPowerLevelTableEntry(
                  Index=26,
                  TransmitPowerValue=1625,
                ),
                TransmitPowerLevelTableEntry(
                  Index=27,
                  TransmitPowerValue=1650,
                ),
                TransmitPowerLevelTableEntry(
                  Index=28,
                  TransmitPowerValue=1675,
                ),
                TransmitPowerLevelTableEntry(
                  Index=29,
                  TransmitPowerValue=1700,
                ),
                TransmitPowerLevelTableEntry(
                  Index=30,
                  TransmitPowerValue=1725,
                ),
                TransmitPowerLevelTableEntry(
                  Index=31,
                  TransmitPowerValue=1750,
                ),
                TransmitPowerLevelTableEntry(
                  Index=32,
                  TransmitPowerValue=1775,
                ),
                TransmitPowerLevelTableEntry(
                  Index=33,
                  TransmitPowerValue=1800,
                ),
                TransmitPowerLevelTableEntry(
                  Index=34,
                  TransmitPowerValue=1825,
                ),
                TransmitPowerLevelTableEntry(
                  Index=35,
                  TransmitPowerValue=1850,
                ),
                TransmitPowerLevelTableEntry(
                  Index=36,
                  TransmitPowerValue=1875,
                ),
                TransmitPowerLevelTableEntry(
                  Index=37,
                  TransmitPowerValue=1900,
                ),
                TransmitPowerLevelTableEntry(
                  Index=38,
                  TransmitPowerValue=1925,
                ),
                TransmitPowerLevelTableEntry(
                  Index=39,
                  TransmitPowerValue=1950,
                ),
                TransmitPowerLevelTableEntry(
                  Index=40,
                  TransmitPowerValue=1975,
                ),
                TransmitPowerLevelTableEntry(
                  Index=41,
                  TransmitPowerValue=2000,
                ),
                TransmitPowerLevelTableEntry(
                  Index=42,
                  TransmitPowerValue=2025,
                ),
                TransmitPowerLevelTableEntry(
                  Index=43,
                  TransmitPowerValue=2050,
                ),
                TransmitPowerLevelTableEntry(
                  Index=44,
                  TransmitPowerValue=2075,
                ),
                TransmitPowerLevelTableEntry(
                  Index=45,
                  TransmitPowerValue=2100,
                ),
                TransmitPowerLevelTableEntry(
                  Index=46,
                  TransmitPowerValue=2125,
                ),
                TransmitPowerLevelTableEntry(
                  Index=47,
                  TransmitPowerValue=2150,
                ),
                TransmitPowerLevelTableEntry(
                  Index=48,
                  TransmitPowerValue=2175,
                ),
                TransmitPowerLevelTableEntry(
                  Index=49,
                  TransmitPowerValue=2200,
                ),
                TransmitPowerLevelTableEntry(
                  Index=50,
                  TransmitPowerValue=2225,
                ),
                TransmitPowerLevelTableEntry(
                  Index=51,
                  TransmitPowerValue=2250,
                ),
                TransmitPowerLevelTableEntry(
                  Index=52,
                  TransmitPowerValue=2275,
                ),
                TransmitPowerLevelTableEntry(
                  Index=53,
                  TransmitPowerValue=2300,
                ),
                TransmitPowerLevelTableEntry(
                  Index=54,
                  TransmitPowerValue=2325,
                ),
                TransmitPowerLevelTableEntry(
                  Index=55,
                  TransmitPowerValue=2350,
                ),
                TransmitPowerLevelTableEntry(
                  Index=56,
                  TransmitPowerValue=2375,
                ),
                TransmitPowerLevelTableEntry(
                  Index=57,
                  TransmitPowerValue=2400,
                ),
                TransmitPowerLevelTableEntry(
                  Index=58,
                  TransmitPowerValue=2425,
                ),
                TransmitPowerLevelTableEntry(
                  Index=59,
                  TransmitPowerValue=2450,
                ),
                TransmitPowerLevelTableEntry(
                  Index=60,
                  TransmitPowerValue=2475,
                ),
                TransmitPowerLevelTableEntry(
                  Index=61,
                  TransmitPowerValue=2500,
                ),
                TransmitPowerLevelTableEntry(
                  Index=62,
                  TransmitPowerValue=2525,
                ),
                TransmitPowerLevelTableEntry(
                  Index=63,
                  TransmitPowerValue=2550,
                ),
                TransmitPowerLevelTableEntry(
                  Index=64,
                  TransmitPowerValue=2575,
                ),
                TransmitPowerLevelTableEntry(
                  Index=65,
                  TransmitPowerValue=2600,
                ),
                TransmitPowerLevelTableEntry(
                  Index=66,
                  TransmitPowerValue=2625,
                ),
                TransmitPowerLevelTableEntry(
                  Index=67,
                  TransmitPowerValue=2650,
                ),
                TransmitPowerLevelTableEntry(
                  Index=68,
                  TransmitPowerValue=2675,
                ),
                TransmitPowerLevelTableEntry(
                  Index=69,
                  TransmitPowerValue=2700,
                ),
                TransmitPowerLevelTableEntry(
                  Index=70,
                  TransmitPowerValue=2725,
                ),
                TransmitPowerLevelTableEntry(
                  Index=71,
                  TransmitPowerValue=2750,
                ),
                TransmitPowerLevelTableEntry(
                  Index=72,
                  TransmitPowerValue=2775,
                ),
                TransmitPowerLevelTableEntry(
                  Index=73,
                  TransmitPowerValue=2800,
                ),
                TransmitPowerLevelTableEntry(
                  Index=74,
                  TransmitPowerValue=2825,
                ),
                TransmitPowerLevelTableEntry(
                  Index=75,
                  TransmitPowerValue=2850,
                ),
                TransmitPowerLevelTableEntry(
                  Index=76,
                  TransmitPowerValue=2875,
                ),
                TransmitPowerLevelTableEntry(
                  Index=77,
                  TransmitPowerValue=2900,
                ),
                TransmitPowerLevelTableEntry(
                  Index=78,
                  TransmitPowerValue=2925,
                ),
                TransmitPowerLevelTableEntry(
                  Index=79,
                  TransmitPowerValue=2950,
                ),
                TransmitPowerLevelTableEntry(
                  Index=80,
                  TransmitPowerValue=2975,
                ),
                TransmitPowerLevelTableEntry(
                  Index=81,
                  TransmitPowerValue=3000,
                ),
                TransmitPowerLevelTableEntry(
                  Index=82,
                  TransmitPowerValue=3025,
                ),
                TransmitPowerLevelTableEntry(
                  Index=83,
                  TransmitPowerValue=3050,
                ),
                TransmitPowerLevelTableEntry(
                  Index=84,
                  TransmitPowerValue=3075,
                ),
                TransmitPowerLevelTableEntry(
                  Index=85,
                  TransmitPowerValue=3100,
                ),
                TransmitPowerLevelTableEntry(
                  Index=86,
                  TransmitPowerValue=3125,
                ),
                TransmitPowerLevelTableEntry(
                  Index=87,
                  TransmitPowerValue=3150,
                ),
                FrequencyInformation(
                  Hopping=False,
                  Parameters=[
                    FixedFrequencyTable( Frequency=[865700, 866300, 866900, 867500] ),
                  ]
                ),
                C1G2UHFRFModeTable(
                  Parameters=[
                    C1G2UHFRFModeTableEntry(
                      ModeIdentifier=2,
                      DRValue=C1G2DRValue.DRV_64_3,
                      EPCHAGTCConformance=False,
                      MValue=C1G2MValue.MV_4,
                      ForwardLinkModulation=C1G2ForwardLinkModulation.PR_ASK,
                      SpectralMaskIndicator=C1G2SpectralMaskIndicator.DI,
                      BDRValue=320000,
                      PIEValue=2000,
                      MinTariValue=20000,
                      MaxTariValue=20000,
                      StepTariValue=0,
                    ),
                    C1G2UHFRFModeTableEntry(
                      ModeIdentifier=3,
                      DRValue=C1G2DRValue.DRV_64_3,
                      EPCHAGTCConformance=False,
                      MValue=C1G2MValue.MV_8,
                      ForwardLinkModulation=C1G2ForwardLinkModulation.PR_ASK,
                      SpectralMaskIndicator=C1G2SpectralMaskIndicator.DI,
                      BDRValue=320000,
                      PIEValue=2000,
                      MinTariValue=20000,
                      MaxTariValue=20000,
                      StepTariValue=0,
                    ),
                    C1G2UHFRFModeTableEntry(
                      ModeIdentifier=5,
                      DRValue=C1G2DRValue.DRV_64_3,
                      EPCHAGTCConformance=False,
                      MValue=C1G2MValue.MV_4,
                      ForwardLinkModulation=C1G2ForwardLinkModulation.PR_ASK,
                      SpectralMaskIndicator=C1G2SpectralMaskIndicator.MI,
                      BDRValue=320000,
                      PIEValue=2000,
                      MinTariValue=14290,
                      MaxTariValue=14290,
                      StepTariValue=0,
                    ),
                    C1G2UHFRFModeTableEntry(
                      ModeIdentifier=1000,
                      DRValue=C1G2DRValue.DRV_8,
                      EPCHAGTCConformance=False,
                      MValue=C1G2MValue.MV_FM0,
                      ForwardLinkModulation=C1G2ForwardLinkModulation.PR_ASK,
                      SpectralMaskIndicator=C1G2SpectralMaskIndicator.Unknown,
                      BDRValue=40000,
                      PIEValue=1500,
                      MinTariValue=6250,
                      MaxTariValue=6250,
                      StepTariValue=0,
                    ),
                    C1G2UHFRFModeTableEntry(
                      ModeIdentifier=1002,
                      DRValue=C1G2DRValue.DRV_8,
                      EPCHAGTCConformance=False,
                      MValue=C1G2MValue.MV_FM0,
                      ForwardLinkModulation=C1G2ForwardLinkModulation.PR_ASK,
                      SpectralMaskIndicator=C1G2SpectralMaskIndicator.Unknown,
                      BDRValue=40000,
                      PIEValue=1500,
                      MinTariValue=6250,
                      MaxTariValue=6250,
                      StepTariValue=0,
                    ),
                  ]
                ),
              ]
            ),
          ]
        ),
        C1G2LLRPCapabilities(
          CanSupportBlockErase=False,
          CanSupportBlockWrite=True,
          MaxNumSelectFiltersPerQuery=5,
        ),
      ]
    )

    -----------------------------------------------------
    Sending Message:
    ADD_ROSPEC(
      MessageID=16,
      Parameters=[
        ROSpec(
          ROSpecID=123,
          Priority=0,
          CurrentState=ROSpecState.Disabled,
          Parameters=[
            ROBoundarySpec(
              Parameters=[
                ROSpecStartTrigger( ROSpecStartTriggerType=ROSpecStartTriggerType.Immediate ),
                ROSpecStopTrigger(
                  ROSpecStopTriggerType=ROSpecStopTriggerType.Null,
                  DurationTriggerValue=0,
                ),
              ]
            ),
            AISpec(
              AntennaIDs=[1, 2, 3, 4],
              Parameters=[
                AISpecStopTrigger(
                  AISpecStopTriggerType=AISpecStopTriggerType.Tag_Observation,
                  DurationTrigger=0,
                  Parameters=[
                    TagObservationTrigger(
                      TriggerType=TagObservationTriggerType.Upon_Seeing_N_Tags_Or_Timeout,
                      NumberOfTags=500,
                      NumberOfAttempts=1,
                      T=0,
                      Timeout=500,
                    ),
                  ]
                ),
                InventoryParameterSpec(
                  InventoryParameterSpecID=1234,
                  ProtocolID=AirProtocols.EPCGlobalClass1Gen2,
                ),
              ]
            ),
            ROReportSpec(
              ROReportTrigger=ROReportTriggerType.Upon_N_Tags_Or_End_Of_ROSpec,
              N=0,
              Parameters=[
                TagReportContentSelector(
                  EnableROSpecID=False,
                  EnableSpecIndex=False,
                  EnableInventoryParameterSpecID=False,
                  EnableAntennaID=True,
                  EnableChannelIndex=False,
                  EnablePeakRSSI=False,
                  EnableFirstSeenTimestamp=True,
                  EnableLastSeenTimestamp=False,
                  EnableTagSeenCount=False,
                  EnableAccessSpecID=False,
                ),
              ]
            ),
          ]
        ),
      ]
    )

    Received Response:
    ADD_ROSPEC_RESPONSE(
      MessageID=16,
      Parameters=[
        LLRPStatus(
          StatusCode=StatusCode.M_FieldError,
          ErrorDescription='LLRP [1875] : Invalid number of antennas (4) specified in the AntennaID set',
          Parameters=[
            ParameterError(
              ParameterType=177,
              ErrorCode=StatusCode.P_ParameterError,
              Parameters=[
                ParameterError(
                  ParameterType=183,
                  ErrorCode=StatusCode.P_FieldError,
                  Parameters=[
                    FieldError(
                      FieldNum=1,
                      ErrorCode=StatusCode.A_Invalid,
                    ),
                  ]
                ),
              ]
            ),
          ]
        ),
      ]
    )

    -----------------------------------------------------
    Sending Message:
    ENABLE_ROSPEC(
      MessageID=17,
      ROSpecID=123,
    )

    Received Response:
    ENABLE_ROSPEC_RESPONSE(
      MessageID=17,
      Parameters=[
        LLRPStatus(
          StatusCode=StatusCode.M_FieldError,
          ErrorDescription='LLRP [1192] : No ROSpecs have been configured',
          Parameters=[
            FieldError(
              FieldNum=1,
              ErrorCode=StatusCode.A_Invalid,
            ),
          ]
        ),
      ]
    )

    Reader Initialization Failed.
    Disconnecting Reader.
    Attempting Reconnect in 2 seconds...

    Trying to Connect to Reader: (192.168.1.128:5084)...
    ConnectionTimeout=3.00 seconds
    Connected to: (192.168.1.128:5084)
    Waiting for READER_EVENT_NOTIFICATION...

    Received Response:
    READER_EVENT_NOTIFICATION(
      MessageID=719673946,
      Parameters=[
        ReaderEventNotificationData(
          Parameters=[
            UTCTimestamp( Microseconds=1579792337532058 ),
            ConnectionAttemptEvent( Status=ConnectionAttemptStatusType.Success ),
          ]
        ),
      ]
    )