#ifndef _TMR_TAGOP_H #define _TMR_TAGOP_H /** * @file tmr_tagop.h * @brief Mercury API - Tag Operations Interface * @author Nathan Williams * @date 1/8/2010 */ /* * Copyright (c) 2009 ThingMagic, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ #include "tmr_tag_auth.h" #include "osdep.h" #ifdef __cplusplus extern "C" { #endif /** The type of a tag operation structure */ typedef enum TMR_TagOpType { /** Gen2 EPC write */ TMR_TAGOP_GEN2_WRITETAG, /** Gen2 memory read */ TMR_TAGOP_GEN2_READDATA, /** Gen2 memory write */ TMR_TAGOP_GEN2_WRITEDATA, /** Gen2 memory lock/unlock */ TMR_TAGOP_GEN2_LOCK, /** Gen2 tag kill */ TMR_TAGOP_GEN2_KILL, /** Gen2 tag block write */ TMR_TAGOP_GEN2_BLOCKWRITE, /** Gen2 tag block permalock */ TMR_TAGOP_GEN2_BLOCKPERMALOCK, /** Gen2 tag block erase */ TMR_TAGOP_GEN2_BLOCKERASE, /** Higgs2 Partial Load Image */ TMR_TAGOP_GEN2_ALIEN_HIGGS2_PARTIALLOADIMAGE, /** Higgs2 Full Load Image */ TMR_TAGOP_GEN2_ALIEN_HIGGS2_FULLLOADIMAGE, /** Higgs3 Fast Load Image */ TMR_TAGOP_GEN2_ALIEN_HIGGS3_FASTLOADIMAGE, /** Higgs3 Load Image */ TMR_TAGOP_GEN2_ALIEN_HIGGS3_LOADIMAGE, /** Higgs3 Block Read Lock */ TMR_TAGOP_GEN2_ALIEN_HIGGS3_BLOCKREADLOCK, /** NXP set read protect */ TMR_TAGOP_GEN2_NXP_SETREADPROTECT, /** NXP reset read protect */ TMR_TAGOP_GEN2_NXP_RESETREADPROTECT, /** NXP Change EAS */ TMR_TAGOP_GEN2_NXP_CHANGEEAS, /** NXP EAS Alarm */ TMR_TAGOP_GEN2_NXP_EASALARM, /** NXP Calibrate */ TMR_TAGOP_GEN2_NXP_CALIBRATE, /** NXP ChangeConfig */ TMR_TAGOP_GEN2_NXP_CHANGECONFIG, /** NXP AES Gen2v2 untraceable operations */ TMR_TAGOP_GEN2_NXP_UNTRACEABLE, /** NXP AES Gen2v2 Authenticate operations */ TMR_TAGOP_GEN2_NXP_AUTHENTICATE, /** NXP AES Gen2v2 ReadBuffer operations */ TMR_TAGOP_GEN2_NXP_READBUFFER, /** Monza4 QT Read/Write*/ TMR_TAGOP_GEN2_IMPINJ_MONZA4_QTREADWRITE, /** ISO180006B memory read */ TMR_TAGOP_ISO180006B_READDATA, /** ISO180006B memory write */ TMR_TAGOP_ISO180006B_WRITEDATA, /** ISO180006B memory lock/unlock */ TMR_TAGOP_ISO180006B_LOCK, /** ISO180006B tag kill */ /** Gen2 Secure read */ TMR_TAGOP_GEN2_SECURE_READDATA, /** Gen2 IAVDenatran ActivateSecureMode - PA Protocol */ TMR_TAGOP_GEN2_DENATRAN_IAV_ACTIVATESECUREMODE, /** Gen2 IAVDenatran Authenticate OBU - PA Protocol */ TMR_TAGOP_GEN2_DENATRAN_IAV_AUTHENTICATEOBU, /** Gen2 IAVDenatran GEN2_ACTIVATE_SINIAV_MODE - G0 Protocol */ TMR_TAGOP_GEN2_ACTIVATE_SINIAV_MODE, /** Gen2 IAVDenatran GEN2_OBU_AUTH_ID - G0 Protocol */ TMR_TAGOP_GEN2_OBU_AUTH_ID, /** Gen2 IAVDenatran GEN2_AUTHENTICATE_OBU_FULL_PASS1 - G0 Protocol */ TMR_TAGOP_GEN2_AUTHENTICATE_OBU_FULL_PASS1, /** Gen2 IAVDenatran GEN2_AUTHENTICATE_OBU_FULL_PASS2 - G0 Protocol */ TMR_TAGOP_GEN2_AUTHENTICATE_OBU_FULL_PASS2, /** Gen2 IAVDenatran GEN2_OBU_READ_FROM_MEM_MAP - G0 Protocol */ TMR_TAGOP_GEN2_OBU_READ_FROM_MEM_MAP, /** Gen2 IAVDenatran GEN2_OBU_WRITE_TO_MEM_MAP - G0 Protocol */ TMR_TAGOP_GEN2_OBU_WRITE_TO_MEM_MAP, /** Gen2 IAVDenatran GET_TOKEN_ID - G0 Protocol */ TMR_TAGOP_GEN2_DENATRAN_IAV_GET_TOKEN_ID, /** Gen2 IAVDenatran AUTHENTICATE_OBU_FULL_PASS */ TMR_TAGOP_GEN2_DENATRAN_IAV_AUTHENTICATE_OBU_FULL_PASS, /** Gen2 IAVDenatran Read Sec - IP63 protocol */ TMR_TAGOP_GEN2_DENATRAN_IAV_READ_SEC, /** Gen2 IAVDenatran Write Sec - IP63 protocol */ TMR_TAGOP_GEN2_DENATRAN_IAV_WRITE_SEC, /** Gen2 IAVDenatran GEN2_G0_PA_OBU_AUTHENTICATE_ID - ( PA + G0 ) Protocol */ TMR_TAGOP_GEN2_DENATRAN_IAV_G0_PA_OBU_AUTHENTICATE_ID, /** Gen2 Ids get sensor type */ TMR_TAGOP_GEN2_IDS_SL900A_GETSENSOR, /** Gen2 Ids get log state */ TMR_TAGOP_GEN2_IDS_SL900A_GETLOGSTATE, /** Gen2 Ids set log mode */ TMR_TAGOP_GEN2_IDS_SL900A_SETLOGMODE, /** Gen2 Ids end log */ TMR_TAGOP_GEN2_IDS_SL900A_ENDLOG, /** Gen2 Ids Initialize */ TMR_TAGOP_GEN2_IDS_SL900A_INITIALIZE, /** Gen2 Ids Fifo Status */ TMR_TAGOP_GEN2_IDS_SL900A_ACCESSFIFOSTATUS, /** Gen2 Ids Fifo Read */ TMR_TAGOP_GEN2_IDS_SL900A_ACCESSFIFOREAD, /** Gen2 Ids Fifo write */ TMR_TAGOP_GEN2_IDS_SL900A_ACCESSFIFOWRITE, /** Gen2 Ids Starrt Log */ TMR_TAGOP_GEN2_IDS_SL900A_STARTLOG, /** Gen2 Ids GetCalibrationData */ TMR_TAGOP_GEN2_IDS_SL900A_GETCALIBRATIONDATA, /** Gen2 Ids SetCalibration */ TMR_TAGOP_GEN2_IDS_SL900A_SETCALIBRATIONDATA, /** Gen2 Ids SetSfeParameters */ TMR_TAGOP_GEN2_IDS_SL900A_SETSFEPARAMETERS, /** Gen2 Ids GetMeasurmentSetup */ TMR_TAGOP_GEN2_IDS_SL900A_GETMEASUREMENTSETUP, /** Gen2 Ids GetBattery Level */ TMR_TAGOP_GEN2_IDS_SL900A_GETBATTERYLEVEL, /** Gen2 Ids SetLogLimits */ TMR_TAGOP_GEN2_IDS_SL900A_SETLOGLIMITS, /** Gen2 Ids SetShelfLife */ TMR_TAGOP_GEN2_IDS_SL900A_SETSHELFLIFE, /** Set IDS Password */ TMR_TAGOP_GEN2_IDS_SL900A_SETPASSWORD, /** List of tag operations */ TMR_TAGOP_LIST } TMR_TagOpType; /** The type of Gen2 Secure operation */ typedef enum SecureTagType { GEN2_EMBEDDED_SECURE_DEFAULT = 0x00, /* Alien Higgs 3 secure access */ GEN2_EMBEDDED_SECURE_HIGGS3_ACCESS = (1 << 1), /* Monza 4 secure access */ GEN2_EMBEDDED_SECURE_MONZA4_ACCESS = (1 << 2) }SecureTagType; /* The type of Gen2 IAVDenatranCmdEnum */ typedef enum IAVDenatranSecureTagOpType { /* Activate Secure Mode - PA Protocol */ GEN2_ACTIVATE_SECURE_MODE = 0x00, /* Authenticate OBU - PA Protocol */ GEN2_AUTHENTICATE_OBU = 0x01, /* Activate Siniav Mode OBU - G0 Protocol */ GEN2_ACTIVATE_SINIAV_MODE = 0x02, /* Authenticate OBU ID - G0 Protocol */ GEN2_OBU_AUTH_ID = 0x03, /* Authenticate OBU FullPass1 - G0 Protocol */ GEN2_AUTHENTICATE_OBU_FULL_PASS1 = 0x04, /* Authenticate OBU FullPass2 - G0 Protocol */ GEN2_AUTHENTICATE_OBU_FULL_PASS2 = 0x05, /* Read From Mem - G0 Protocol */ GEN2_OBU_READ_FROM_MEM_MAP = 0x06, /* Write to Mem - G0 Protocol */ GEN2_OBU_WRITE_TO_MEM_MAP = 0x07, /* Authenticate OBU FullPass2 - G0 Protocol */ GEN2_AUTHENTICATE_OBU_FULL_PASS = 0x08, /* Get token ID - Go Protocol */ GEN2_GET_TOKEN_ID = 0x09, /* Read Sec - IP63 Protocol */ GEN2_READ_SEC = 0x0A, /* Write Sec - IP63 Protocol */ GEN2_WRITE_SEC = 0x0B, /* Pa G0 - (PA + G0) Protocol */ GEN2_PA_G0_AUTHENTICATE = 0x0C, }IAVDenatranSecureTagOpType; /* The type of Gen2 secure password */ typedef enum SecurePasswordType { /* Gen2 password type */ TMR_SECURE_GEN2_PASSWORD = 0x01, /* Look up table password */ TMR_SECURE_GEN2_LOOKUP_TABLE_PASSWORD = 0x02 }SecurePasswordType; /* The fild type of calibration data that user can modify */ typedef enum CalibrationParameter { /* AD1 lower voltage reference - coarse */ TMR_GEN2_IDS_SL900A_CALIBRATION_COARSE1, /* AD2 lower voltage reference - coarse */ TMR_GEN2_IDS_SL900A_CALIBRATION_COARSE2, /* Switches the lower AD voltage reference to ground */ TMR_GEN2_IDS_SL900A_CALIBRATION_GNDSWITCH, /* POR voltage level for 1.5V system */ TMR_GEN2_IDS_SL900A_CALIBRATION_SELP12, /* RTC oscillator calibration */ TMR_GEN2_IDS_SL900A_CALIBRATION_DF, /* Controlled battery supply for external sensor - the battery voltage is connected to the EXC pin */ TMR_GEN2_IDS_SL900A_CALIBRATION_SWEXTEN, /* POR voltage level for 3V system */ TMR_GEN2_IDS_SL900A_CALIBRATION_SELP22, /* Voltage level interrupt level for external sensor -- ratiometric */ TMR_GEN2_IDS_SL900A_CALIBRATION_IRLEV, /* Excitate for resistive sensors without DC */ TMR_GEN2_IDS_SL900A_CALIBRATION_EXCRES, }CalibrationParameter; /* The field type of sfe parameters that user can modify */ typedef enum SfeParameter { /* External sensor 2 range */ TMR_GEN2_IDS_SL900A_SFE_RANG, /* External sensor 1 range */ TMR_GEN2_IDS_SL900A_SFE_SETI, /* External sensor 1 type */ TMR_GEN2_IDS_SL900A_SFE_EXT1, /* External sensor 2 type */ TMR_GEN2_IDS_SL900A_SFE_EXT2, /* Use preset range */ TMR_GEN2_IDS_SL900A_SFE_AUTORANGEDISABLE, /* Sensor used in limit check */ TMR_GEN2_IDS_SL900A_SFE_VERIFYSENSORID, }SfeParameter; typedef struct TMR_TagOp_GEN2_NXP_Tam1Authentication { uint8_t Authentication; uint8_t CSI; uint8_t keyID; uint8_t KeyLength; uint8_t IchallengeLength; TMR_uint8List Key; TMR_uint8List Ichallenge; } TMR_TagOp_GEN2_NXP_Tam1Authentication; typedef struct TMR_TagOp_GEN2_NXP_Tam2Authentication { TMR_TagOp_GEN2_NXP_Tam1Authentication tam1Auth; uint16_t Offset; uint8_t ProtMode; uint8_t BlockCount; TMR_NXP_Profile profile; } TMR_TagOp_GEN2_NXP_Tam2Authentication; typedef enum TMR_GEN2_UNTRACEABLE_AuthType { /* Tag exposes EPC memory */ UNTRACEABLE_WITH_AUTHENTICATION = 0, /*Tag untraceably hides EPC memory above that*/ UNTRACEABLE_WITH_ACCESS = 1 }TMR_GEN2_UNTRACEABLE_AuthType; typedef struct TMR_TagOp_GEN2_NXP_UNTRACEABLE_Authentication { TMR_GEN2_UNTRACEABLE_AuthType authType; TMR_TagOp_GEN2_NXP_Tam1Authentication tam1Auth; TMR_GEN2_Password accessPassword; }TMR_TagOp_GEN2_NXP_UNTRACEABLE_Authentication; typedef struct TMR_TagOp_GEN2_NXP_Untraceable { TMR_TagOp_GEN2_NXP_UNTRACEABLE_Authentication auth; TMR_GEN2_UNTRACEABLE_Epc epc; int32_t epcLength; TMR_GEN2_UNTRACEABLE_Tid tid; TMR_GEN2_UNTRACEABLE_UserMemory userMemory; TMR_GEN2_UNTRACEABLE_Range range; uint8_t subCommand; } TMR_TagOp_GEN2_NXP_Untraceable; typedef enum TMR_GEN2_AUTHENTICATE_Type { TAM1_AUTHENTICATION, TAM2_AUTHENTICATION }TMR_GEN2_AUTHENTICATE_Type; typedef struct TMR_TagOp_GEN2_NXP_Authenticate { TMR_GEN2_AUTHENTICATE_Type type; TMR_TagOp_GEN2_NXP_Tam1Authentication tam1Auth; TMR_TagOp_GEN2_NXP_Tam2Authentication tam2Auth; uint8_t subCommand; }TMR_TagOp_GEN2_NXP_Authenticate; typedef struct TMR_TagOp_GEN2_NXP_Readbuffer { uint16_t wordPointer; uint16_t bitCount; TMR_TagOp_GEN2_NXP_Authenticate authenticate; }TMR_TagOp_GEN2_NXP_Readbuffer; /** Parameters of a Gen2 EPC write operation */ typedef struct TMR_TagOp_GEN2_WriteTag { /** Tag EPC */ TMR_TagData* epcptr; } TMR_TagOp_GEN2_WriteTag; /** Parameters of a Gen2 memory read operation */ typedef struct TMR_TagOp_GEN2_ReadData { /** Gen2 memory bank to read from */ TMR_GEN2_Bank bank; /** Word address to start reading at */ uint32_t wordAddress; /** Number of words to read */ uint8_t len; } TMR_TagOp_GEN2_ReadData; /** Parameters of Gen2 Secure operation */ /* Parameters of SecurePassWordLookup Table */ typedef struct SecurePasswordLookup { /* used in case Gen2 passWord */ TMR_TagAuthentication gen2PassWord; /* used in case of password look table */ /* Number of bits used to address the AP list (MSB byte - byte 4) */ uint8_t secureAddressLength; /* EPC word offset (Next MSB byte - byte 3) */ uint8_t secureAddressOffset; /* User flash offset, starting from 0x0000 (LSB 2 bytes) */ uint16_t secureFlashOffset; } SecurePasswordLookup; typedef struct TMR_TagOp_GEN2_SecureReadData { /** Gen2 read operation */ TMR_TagOp_GEN2_ReadData readData; /** type of Gen2 Secure operation*/ /* Options to select Alien Higgs 3 secure access and Monza 4 secure access */ SecureTagType type; /* option to select Gen2 password or look up table password */ SecurePasswordType passwordType; /* Options to specify the password */ SecurePasswordLookup password; } TMR_TagOp_GEN2_SecureReadData; /** Parameters of a Gen2 memory write operation */ typedef struct TMR_TagOp_GEN2_WriteData { /** Gen2 memory bank to write to */ TMR_GEN2_Bank bank; /** Word address to start writing at */ uint32_t wordAddress; /** Data to write */ TMR_uint16List data; } TMR_TagOp_GEN2_WriteData; /** Parameters of a Gen2 memory lock/unlock operation */ typedef struct TMR_TagOp_GEN2_Lock { /** Bitmask indicating which lock bits to change */ uint16_t mask; /** New values of each bit specified in the mask */ uint16_t action; /** Access Password to use to lock the tag*/ TMR_GEN2_Password accessPassword; } TMR_TagOp_GEN2_Lock; /** Parameters of a Gen2 tag kill operation */ typedef struct TMR_TagOp_GEN2_Kill { /** Kill password to use to kill the tag */ TMR_GEN2_Password password; } TMR_TagOp_GEN2_Kill; /** Parameters of a Gen2 tag Block Write operation */ typedef struct TMR_TagOp_GEN2_BlockWrite { /** Gen2 memory bank to write to */ TMR_GEN2_Bank bank; /** The word address to start writing to */ uint32_t wordPtr; /** The data to write */ TMR_uint16List data; }TMR_TagOp_GEN2_BlockWrite; /** Parameters of a Gen2 tag Block PermaLock operation */ typedef struct TMR_TagOp_GEN2_BlockPermaLock { /** Read lock status or write it? */ uint8_t readLock; /** Gen2 memory bank to lock */ TMR_GEN2_Bank bank; /** The starting word address to lock */ uint32_t blockPtr; /** Mask: Which blocks to lock? */ TMR_uint16List mask; }TMR_TagOp_GEN2_BlockPermaLock; /** Parameters of a Gen2 tag Block Erase operation */ typedef struct TMR_TagOp_GEN2_BlockErase { /** Gen2 memory bank to erase */ TMR_GEN2_Bank bank; /** The starting word address for block erase */ uint32_t wordPtr; /** Number of words to erase */ uint8_t wordCount; } TMR_TagOp_GEN2_BlockErase; /** Parameters of a Gen2 memory lock/unlock operation */ typedef struct TMR_TagOp_ISO180006B_Lock { /** The memory address of the byte to lock */ uint8_t address; } TMR_TagOp_ISO180006B_Lock; /** Parameters of an ISO180006B memory read operation */ typedef struct TMR_TagOp_ISO180006B_ReadData { /** Byte address to start reading at */ uint8_t byteAddress; /** Number of bytes to read */ uint8_t len; } TMR_TagOp_ISO180006B_ReadData; /** Parameters of an ISO180006B memory write operation */ typedef struct TMR_TagOp_ISO180006B_WriteData { /** Byte address to start writing at */ uint8_t byteAddress; /** Data to write */ TMR_uint8List data; } TMR_TagOp_ISO180006B_WriteData; /** * Tagops for Gen2 custom commands **/ /** Parameters for Alien Higgs2, Partial Load Image command*/ typedef struct TMR_TagOp_GEN2_Alien_Higgs2_PartialLoadImage { /** Kill password to write to the tag */ TMR_GEN2_Password killPassword; /** Access password to write to the tag */ TMR_GEN2_Password accessPassword; /** Tag EPC to write to the tag*/ TMR_TagData* epcptr; } TMR_TagOp_GEN2_Alien_Higgs2_PartialLoadImage; /** Parameters for Alien Higgs2, Full Load Image command*/ typedef struct TMR_TagOp_GEN2_Alien_Higgs2_FullLoadImage { /** Kill password to write to the tag */ TMR_GEN2_Password killPassword; /** Access password to write to the tag */ TMR_GEN2_Password accessPassword; /** Lock Bits */ uint16_t lockBits; /** PC word */ uint16_t pcWord; /** Tag EPC to write to the tag*/ TMR_TagData* epcptr; } TMR_TagOp_GEN2_Alien_Higgs2_FullLoadImage; /** Parameters for Alien Higgs3, Fast Load Image command*/ typedef struct TMR_TagOp_GEN2_Alien_Higgs3_FastLoadImage { /** Access password used to write to the tag */ TMR_GEN2_Password currentAccessPassword; /** Kill password to write to the tag */ TMR_GEN2_Password killPassword; /** Access password to write to the tag */ TMR_GEN2_Password accessPassword; /** PC word */ uint16_t pcWord; /** Tag EPC to write to the tag*/ TMR_TagData* epcptr; } TMR_TagOp_GEN2_Alien_Higgs3_FastLoadImage; /** Parameters for Alien Higgs3, Load Image command*/ typedef struct TMR_TagOp_GEN2_Alien_Higgs3_LoadImage { /** Access password used to write to the tag */ TMR_GEN2_Password currentAccessPassword; /** Kill password to write to the tag */ TMR_GEN2_Password killPassword; /** Access password to write to the tag */ TMR_GEN2_Password accessPassword; /** PC word */ uint16_t pcWord; /** Tag EPC and user data to write to the tag (76 bytes)*/ TMR_uint8List *epcAndUserData; } TMR_TagOp_GEN2_Alien_Higgs3_LoadImage; /** Parameters for Alien Higgs3, Block Read Lock command*/ typedef struct TMR_TagOp_GEN2_Alien_Higgs3_BlockReadLock { /** Access password to use to write to the tag, in case if the tag is already locked */ TMR_GEN2_Password accessPassword; /** A bitmask of bits to lock */ uint8_t lockBits; } TMR_TagOp_GEN2_Alien_Higgs3_BlockReadLock; /** Parameters for NXP, Set Read Protect command */ typedef struct TMR_TagOp_GEN2_NXP_SetReadProtect { /** Access password to use to write to the tag */ TMR_GEN2_Password accessPassword; }TMR_TagOp_GEN2_NXP_SetReadProtect; /** Parameters for NXP, Reset Read Protect Command*/ typedef struct TMR_TagOp_GEN2_NXP_ResetReadProtect { /** Access password to use to write to the tag */ TMR_GEN2_Password accessPassword; } TMR_TagOp_GEN2_NXP_ResetReadProtect; /** Parameters for NXP, Change EAS Command*/ typedef struct TMR_TagOp_GEN2_NXP_ChangeEAS { /** Access password to use to write to the tag */ TMR_GEN2_Password accessPassword; /** Reset or set EAS bit */ bool reset; } TMR_TagOp_GEN2_NXP_ChangeEAS; /** Parameters for NXP, EAS alarm command */ typedef struct TMR_TagOp_GEN2_NXP_EASAlarm { /** Gen2 divide ratio to use */ TMR_GEN2_DivideRatio dr; /** Gen2 M parameter to use */ TMR_GEN2_TagEncoding m; /** Gen2 TrExt value to use */ TMR_GEN2_TrExt trExt; } TMR_TagOp_GEN2_NXP_EASAlarm; /** Parameters for NXP, Calibration command */ typedef struct TMR_TagOp_GEN2_NXP_Calibrate { /** Access password to use to write to the tag */ TMR_GEN2_Password accessPassword; } TMR_TagOp_GEN2_NXP_Calibrate; /** Parameters for NXP, Change Config command */ typedef struct TMR_TagOp_GEN2_NXP_ChangeConfig { /** Access password to use to write to the tag */ TMR_GEN2_Password accessPassword; /** ConfigWord to write to the tag*/ TMR_NXP_ConfigWord configWord; }TMR_TagOp_GEN2_NXP_ChangeConfig; /** Parameters for NXP, Change Config command */ typedef struct TMR_TagOp_GEN2_Impinj_Monza4_QTReadWrite { /** Access password to use to write to the tag */ TMR_GEN2_Password accessPassword; /** Control Byte to write to the tag*/ TMR_Monza4_ControlByte controlByte; /** Payload */ TMR_Monza4_Payload payload; }TMR_TagOp_GEN2_Impinj_Monza4_QTReadWrite; /** Parameters for IAV, ActivateSecureMode command */ typedef struct TMR_TagOp_GEN2_Denatran_IAV_Activate_Secure_Mode { /* Enum for IAV tagoperation */ IAVDenatranSecureTagOpType mode; /* RFU field */ uint8_t payload; }TMR_TagOp_GEN2_Denatran_IAV_Activate_Secure_Mode; /** Parameters for IAV, AuthenticateOBU command */ typedef struct TMR_TagOp_GEN2_Denatran_IAV_Authenticate_OBU { /* Enum for IAV tagoperation */ IAVDenatranSecureTagOpType mode; /* RFU field */ uint8_t payload; }TMR_TagOp_GEN2_Denatran_IAV_Authenticate_OBU; /** Parameters for IAV, Activate_Siniav_Mode command - G0 Protocol */ typedef struct TMR_TagOp_GEN2_Denatran_IAV_Activate_Siniav_Mode { /* Enum for IAV tagoperation */ IAVDenatranSecureTagOpType mode; /* RFU field */ uint8_t payload; /* token desc */ bool isTokenDesc; /* 64 bits of token data */ uint8_t token[8]; }TMR_TagOp_GEN2_Denatran_IAV_Activate_Siniav_Mode; /** Parameters for IAV, OBU_Auth_ID command - G0 Protocol */ typedef struct TMR_TagOp_GEN2_Denatran_IAV_OBU_Auth_ID { /* Enum for IAV tagoperation */ IAVDenatranSecureTagOpType mode; /* RFU field */ uint8_t payload; }TMR_TagOp_GEN2_Denatran_IAV_OBU_Auth_ID; /** Parameters for IAV, OBU_Auth_Full_Pass1 command - G0 Protocol */ typedef struct TMR_TagOp_GEN2_Denatran_IAV_OBU_Auth_Full_Pass1 { /* Enum for IAV tagoperation */ IAVDenatranSecureTagOpType mode; /* RFU field */ uint8_t payload; }TMR_TagOp_GEN2_Denatran_IAV_OBU_Auth_Full_Pass1; /** Parameters for IAV, OBU_Auth_Full_Pass2 command - G0 Protocol */ typedef struct TMR_TagOp_GEN2_Denatran_IAV_OBU_Auth_Full_Pass2 { /* Enum for IAV tagoperation */ IAVDenatranSecureTagOpType mode; /* RFU field */ uint8_t payload; }TMR_TagOp_GEN2_Denatran_IAV_OBU_Auth_Full_Pass2; /** Parameters for IAV, OBU_ReadFromMemMap command - G0 Protocol */ typedef struct TMR_TagOp_GEN2_Denatran_IAV_OBU_ReadFromMemMap { /* Enum for IAV tagoperation */ IAVDenatranSecureTagOpType mode; /* RFU field */ uint8_t payload; /* address to be read from USER bank */ uint16_t readPtr; }TMR_TagOp_GEN2_Denatran_IAV_OBU_ReadFromMemMap; /** Parameters for IAV, read sec command - IP63 Protocol */ typedef struct TMR_TagOp_GEN2_Denatran_IAV_Read_Sec { /* Enum for IAV tagoperation */ IAVDenatranSecureTagOpType mode; /* RFU field */ uint8_t payload; /* address to be read from USER bank */ uint16_t readPtr; }TMR_TagOp_GEN2_Denatran_IAV_Read_Sec; /** Parameters for IAV, OBU_WriteToMemMap command - G0 Protocol */ typedef struct TMR_TagOp_GEN2_Denatran_IAV_OBU_WriteToMemMap { /* Enum for IAV tagoperation */ IAVDenatranSecureTagOpType mode; /* RFU field */ uint8_t payload; /* Pointer to the USER data */ uint16_t writePtr; /* data to be written */ uint16_t wordData; /* Tag ID */ uint8_t* tagIdentification; /* Credentials written word */ uint8_t* dataBuf; }TMR_TagOp_GEN2_Denatran_IAV_OBU_WriteToMemMap; /** Parameters for IAV, write sec command - IP63 Protocol */ typedef struct TMR_TagOp_GEN2_Denatran_IAV_Write_Sec { /* Enum for IAV tagoperation */ IAVDenatranSecureTagOpType mode; /* RFU field */ uint8_t payload; /* data words */ uint8_t* dataWords; /* Credentials written word */ uint8_t* dataBuf; }TMR_TagOp_GEN2_Denatran_IAV_Write_Sec; /** Parameters for IAV, Get Token ID command */ typedef struct TMR_TagOp_GEN2_Denatran_IAV_Get_Token_Id { /* Enum for IAV tagoperation */ IAVDenatranSecureTagOpType mode; }TMR_TagOp_GEN2_Denatran_IAV_Get_Token_Id; /** Parameters for IAV, Authenticate OBU Full Pass */ typedef struct TMR_TagOp_GEN2_Denatran_IAV_OBU_Auth_Full_Pass { /* Enum for IAV tagoperation */ IAVDenatranSecureTagOpType mode; /* RFU field */ uint8_t payload; }TMR_TagOp_GEN2_Denatran_IAV_OBU_Auth_Full_Pass; /** Parameters for IAV, G0_PA_OBU_Auth_ID */ typedef struct TMR_TagOp_GEN2_Denatran_IAV_G0_PA_OBU_Auth_ID { /* Enum for IAV tagoperation */ IAVDenatranSecureTagOpType mode; /* RFU field */ uint8_t payload; }TMR_TagOp_GEN2_Denatran_IAV_G0_PA_OBU_Auth_ID; /* Forward declaration for the benefit of TMR_TagOp_List */ typedef struct TMR_TagOp TMR_TagOp; /** List of tag operations */ typedef struct TMR_TagOp_List { /** Array of pointers to tag operations*/ TMR_TagOp **list; /** Number of tag operations in list */ uint16_t len; } TMR_TagOp_List; /** Sub-class for Gen2 Alien Higgs2 custom tag extensions */ typedef struct TMR_TagOp_GEN2_Alien_Higgs2 { union { TMR_TagOp_GEN2_Alien_Higgs2_PartialLoadImage partialLoadImage; TMR_TagOp_GEN2_Alien_Higgs2_FullLoadImage fullLoadImage; } u; }TMR_TagOp_GEN2_Alien_Higgs2; /** Sub-class for Gen2 Alien Higgs3 custom tag extensions */ typedef struct TMR_TagOp_GEN2_Alien_Higgs3 { union { TMR_TagOp_GEN2_Alien_Higgs3_FastLoadImage fastLoadImage; TMR_TagOp_GEN2_Alien_Higgs3_LoadImage loadImage; TMR_TagOp_GEN2_Alien_Higgs3_BlockReadLock blockReadLock; } u; }TMR_TagOp_GEN2_Alien_Higgs3; /** Sub-class for Gen2 Alien custom tag extensions */ typedef struct TMR_TagOp_GEN2_Alien { union { TMR_TagOp_GEN2_Alien_Higgs2 higgs2; TMR_TagOp_GEN2_Alien_Higgs3 higgs3; } u; }TMR_TagOp_GEN2_Alien; /** Sub-class for Gen2 NXP custom tag extensions */ typedef struct TMR_TagOp_GEN2_NXP { union { TMR_TagOp_GEN2_NXP_SetReadProtect setReadProtect; TMR_TagOp_GEN2_NXP_ResetReadProtect resetReadProtect; TMR_TagOp_GEN2_NXP_ChangeEAS changeEAS; TMR_TagOp_GEN2_NXP_EASAlarm EASAlarm; TMR_TagOp_GEN2_NXP_Calibrate calibrate; TMR_TagOp_GEN2_NXP_ChangeConfig changeConfig; TMR_TagOp_GEN2_NXP_Untraceable untraceable; TMR_TagOp_GEN2_NXP_Authenticate authenticate; TMR_TagOp_GEN2_NXP_Readbuffer readBuffer; }u; }TMR_TagOp_GEN2_NXP; /** Sub-class for Gen2 Impinj Monza4 custom tag extensions */ typedef struct TMR_TagOp_GEN2_Impinj_Monza4 { union { TMR_TagOp_GEN2_Impinj_Monza4_QTReadWrite qtReadWrite; } u; }TMR_TagOp_GEN2_Impinj_Monza4; /** Sub-class for Gen2 Impinj custom tag extensions */ typedef struct TMR_TagOp_GEN2_Impinj { union { TMR_TagOp_GEN2_Impinj_Monza4 monza4; } u; }TMR_TagOp_GEN2_Impinj; /** Sub-class for Gen2 IavDenatran custom tag extensions */ typedef struct TMR_TagOp_GEN2_Denatran { union { TMR_TagOp_GEN2_Denatran_IAV_Activate_Secure_Mode secureMode; TMR_TagOp_GEN2_Denatran_IAV_Authenticate_OBU authenticateOBU; TMR_TagOp_GEN2_Denatran_IAV_Activate_Siniav_Mode activateSiniavMode; TMR_TagOp_GEN2_Denatran_IAV_OBU_Auth_ID obuAuthId; TMR_TagOp_GEN2_Denatran_IAV_OBU_Auth_Full_Pass1 obuAuthFullPass1; TMR_TagOp_GEN2_Denatran_IAV_OBU_Auth_Full_Pass2 obuAuthFullPass2; TMR_TagOp_GEN2_Denatran_IAV_OBU_ReadFromMemMap obuReadFromMemMap; TMR_TagOp_GEN2_Denatran_IAV_OBU_WriteToMemMap obuWriteToMemMap; TMR_TagOp_GEN2_Denatran_IAV_Get_Token_Id getTokenId; TMR_TagOp_GEN2_Denatran_IAV_Read_Sec readSec; TMR_TagOp_GEN2_Denatran_IAV_Write_Sec writeSec; TMR_TagOp_GEN2_Denatran_IAV_OBU_Auth_Full_Pass obuAuthFullPass; TMR_TagOp_GEN2_Denatran_IAV_G0_PA_OBU_Auth_ID g0paobuauthid; } u; }TMR_TagOp_GEN2_Denatran; /** Sensor type for IDS Sl900A chip */ typedef enum Sensor { /* SL900A sensor type values */ TMR_GEN2_IDS_SL900A_SENSOR_TEMP = 0x00, TMR_GEN2_IDS_SL900A_SENSOR_EXT1 = 0x01, TMR_GEN2_IDS_SL900A_SENSOR_EXT2 = 0x02, TMR_GEN2_IDS_SL900A_SENSOR_BATTV = 0x03, }Sensor; /** SL900A password access level values */ typedef enum PasswordLevel { /* No access to any protected area */ TMR_GEN2_IDS_SL900A_PASSWORD_NOT_ALLOWED = 0x00, /* System area access */ TMR_GEN2_IDS_SL900A_PASSWORD_SYSTEM = 0x01, /* Application area access */ TMR_GEN2_IDS_SL900A_PASSWORD_APPLICATION = 0x02, /* Measurement area access */ TMR_GEN2_IDS_SL900A_PASSWORD_MEASUREMENT = 0x03, }PasswordLevel; /** SL900A Data log format selection */ typedef enum LoggingForm { /* Dense Logging */ TMR_GEN2_IDS_SL900A_LOGGINGFORM_DENSE = 0x00, /* Log values outside specified limits */ TMR_GEN2_IDS_SL900A_LOGGINGFORM_OUTOFLIMITS = 0x01, /* Log values at limit crossing points */ TMR_GEN2_IDS_SL900A_LOGGINGFORM_LIMITSCROSSING = 0x03, /* Trigger log on EXT1 input */ TMR_GEN2_IDS_SL900A_LOGGINGFORM_IRQ1 = 0x05, /* Trigger log on EXT2 input */ TMR_GEN2_IDS_SL900A_LOGGINGFORM_IRQ2 = 0x06, /* Trigger log on EXT1 and EXT2 input */ TMR_GEN2_IDS_SL900A_LOGGINGFORM_IRQ1IRQ2 = 0x07, }LoggingForm; /** SL900A Data log memory-full behavior */ typedef enum DelayMode { /* Start logging after delay time */ TMR_GEN2_IDS_SL900A_DELAYMODE_TIMER = 0x00, /* Start logging on external input */ TMR_GEN2_IDS_SL900A_DELAYMODE_EXTSWITCH = 0x01, }DelayMode; /** SL900A Logging memory-full behavior */ typedef enum StorageRule { /* Stop logging when memory fills */ TMR_GEN2_IDS_SL900A_STORAGERULE_NORMAL = 0x00, /* Roll around (circular buffer) when memory fills */ TMR_GEN2_IDS_SL900A_STORAGERULE_ROLLING = 0x01, }StorageRule; /** Sub-Class for BatterType, re-check or default */ typedef enum BatteryType { /* Default */ TMR_GEN2_IDS_SL900A_BATTERYTYPE_CHECK = 0x00, /* Application requested for the re-check of battery type */ TMR_GEN2_IDS_SL900A_BATTERYTYPE_RECHECK = 0x01, }BatteryType; /** Sub-Class for Raw 9 or 21-bit Get Log State reply */ typedef struct LimitCounter { /* Number of times selected sensor has gone beyond extreme lower limit */ uint8_t extremeLower; /* Number of times selected sensor has gone beyond lower limit */ uint8_t lower; /* Number of times selected sensor has gone beyond upper limit */ uint8_t upper; /* Number of times selected sensor has gone beyond extreme upper limit */ uint8_t extremeUpper; }LimitCounter; /** Sub-Class for specifying 40 bit LogLimits Value */ typedef struct LogLimits { /* Specifying the extreme lower limit */ uint16_t extremeLower; /* Specifying the lower limit */ uint16_t lower; /* Specifying the upper limit */ uint16_t upper; /* Specifying the extreme upper limit */ uint16_t extremeUpper; }LogLimits; /** Sub-class for SystemStatus reply object */ typedef struct SystemStatus { /* Measurement Address Pointer */ uint16_t MeasurementAddressPointer; /* Number of memory replacements */ uint8_t NumMemReplacements; /* Number of measurements */ uint16_t NumMeasurements; /* Active */ bool Active; }SystemStatus; /** Sub-Class for Log Status Flags */ typedef struct StatusFlags { /* Logging active */ bool Active; /* Measurement area full */ bool Full; /* Measurement overwritten */ bool Overwritten; /* A/D error occurred */ bool ADError; /* Low battery */ bool LowBattery; /* Shelf life low error */ bool ShelfLifeLow; /* Shelf life high error */ bool ShelfLifeHigh; /* ShelfLifeExpired */ bool ShelfLifeExpired; }StatusFlags; /** Sub-class for get log state value reply */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_LogState { /* Number of excursions beyond set limits */ LimitCounter limitCount; /* Logging system status */ SystemStatus statStatus; /* Logging status flags */ StatusFlags statFlag; }TMR_TagOp_GEN2_IDS_SL900A_LogState; /** Sub-Class for Get Sensor Value reply */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_SensorReading { /* Raw 16-bit response from GetSensorValue command */ uint16_t reply; /* Raw sensor reply */ uint16_t Raw; /* Did A/D conversion error occur? */ bool ADError; /* 5-bit Range/Limit value */ uint8_t RangeLimit; /* 10-bit Sensor value */ uint16_t Value; }TMR_TagOp_GEN2_IDS_SL900A_SensorReading; /** Sub-Class for Get Battery Level Reply */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_BatteryLevelReading { /* Raw 16-bit response from GetBatteryLevel command */ uint16_t reply; /* Did A/D conversion error occur? */ bool ADError; /* 1-bit Battery Type */ uint8_t BatteryType; /* 10-bit Battery Level value */ uint16_t Value; }TMR_TagOp_GEN2_IDS_SL900A_BatteryLevelReading; /** Sub-class for SL900A Log Mode Data */ typedef struct LogModeData { /* Raw 8-bit response from Measurement Setup Data command */ uint8_t Raw; /* Logging Format */ LoggingForm Form; /* Log Memory-Full Behavior */ StorageRule Storage; /* Enable log for EXT1 external sensor */ bool Ext1Enable; /* Enable log for EXT2 external sensor */ bool Ext2Enable; /* Enable log for temperature sensor */ bool TempEnable; /* Enable log for battery sensor */ bool BattEnable; }LogModeData; /** Sub-class for Calibration Data */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_CalibrationData { /* Raw 56-bit Calibration data value */ uint64_t raw; /* AD1 lower voltage reference - fine - DO NOT MODIFY */ uint8_t Ad1; /* AD1 lower voltage reference - coarse */ uint8_t Coarse1; /* AD2 lower voltage reference - fine - DO NOT MODIFY */ uint8_t Ad2; /* AD2 lower voltage reference - coarse */ uint8_t Coarse2; /* Switches the lower AD voltage reference to ground */ bool GndSwitch; /* POR voltage level for 1.5V system */ uint8_t Selp12; /* Main reference voltage calibration -- DO NOT MODIFY */ uint8_t Adf; /* RTC oscillator calibration */ uint8_t Df; /* Controlled battery supply for external sensor - the battery voltage is connected to the EXC pin */ bool SwExtEn; /* POR voltage level for 3V system */ uint8_t Selp22; /* Voltage level interrupt level for external sensor -- ratiometric */ uint8_t Irlev; /* Main system clock oscillator calibration -- DO NOT MODIFY */ uint8_t RingCal; /* Temperature conversion offset calibration -- DO NOT MODIFY */ uint8_t OffInt; /* Bandgap voltage temperature coefficient calibration -- DO NOT MODIFY */ uint8_t Reftc; /* Excitate for resistive sensors without DC */ bool ExcRes; /* Reserved for Future Use */ uint8_t RFU; /* Specifyes the field user can modify */ CalibrationParameter type; }TMR_TagOp_GEN2_IDS_SL900A_CalibrationData; /** Sub-class to specify Sensor Front End Parameters */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_SfeParameters { /* Raw 16-bit SFE parameters value */ uint16_t raw; /* External sensor 2 range */ uint8_t Rang; /* External sensor 1 range */ uint8_t Seti; /** * External sensor 1 type * 00 -- linear resistive sensor * 01 -- high impedance input (voltage follower), bridge * 10 -- capacitive sensor with DC * 11 -- capacitive or resistive sensor without DC */ uint8_t Ext1; /** * External sensor 2 type * 00 -- linear conductive sensor * 01 -- high impedance input (voltage follower), bridge */ uint8_t Ext2; /* Use preset range */ bool AutorangeDisable; /** * Sensor used in limit check * 00 - first selected sensor * 01 -- second selected sensor * 10 -- third selected sensor * 11 -- fourth selected sensor */ uint8_t VerifySensorID; /* specifies the type of field user want to modufy */ SfeParameter type; }TMR_TagOp_GEN2_IDS_SL900A_SfeParameters; /** Sub-Class to Combination Calibration Data / SFE Parameters object */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_CalSfe { /* Calibration Data */ TMR_TagOp_GEN2_IDS_SL900A_CalibrationData Cal; /* Sensor Front End Parameters */ TMR_TagOp_GEN2_IDS_SL900A_SfeParameters Sfe; }TMR_TagOp_GEN2_IDS_SL900A_CalSfe; /**Sub-Class to spcify fifo source */ typedef enum FifoSource { /* Data from SPI */ TMR_GEN2_IDS_SL900A_FIFOSOURCE_SPI = 0x00, /* Data from RFID */ TMR_GEN2_IDS_SL900A_FIFOSOURCE_RFID = 0x01, }FifoSource; /** Sub-Class for Get status fifo reply */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_FifoStatus { /* Raw 8-bit response from AccessFifo Status command */ uint8_t raw; /* FIFO Busy bit */ bool fifoBusy; /* Data Ready bit */ bool dataReady; /* No Data bit */ bool noData; /* Data Source bit (SPI, RFID) */ FifoSource source; /* Number of valid bytes in FIFO register */ uint8_t numValidBytes; }TMR_TagOp_GEN2_IDS_SL900A_FifoStatus; /** Sub-Class for specifying SL900A application data */ typedef struct ApplicationData { /* Raw 16-bit protocol value */ uint16_t raw; /* Number of user bank memory words to reserve for non-logging purposes */ uint16_t NumberOfWords; /* Broken word pointer */ uint8_t BrokenWordPointer; }ApplicationData; /** Sub-Class for Gen2 Ids Sl900A coustom tag extension */ typedef struct TMR_TagOP_GEN2_IDS_SL900A { /* SL900A sensor type values */ Sensor sensortype; /* SL900A password access level values */ PasswordLevel level; /* Data log format selection */ LoggingForm dataLog; /* Data log memory-full behavior */ DelayMode mode; /* Logging memory-full behavior */ StorageRule rule; }TMR_TagOP_GEN2_IDS_SL900A; /** Sub- class for Ids Sl900A sensor */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_GetSensorValue { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; }TMR_TagOp_GEN2_IDS_SL900A_GetSensorValue; /** Sub-class for IDs SL900A get log state */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_GetLogState { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; }TMR_TagOp_GEN2_IDS_SL900A_GetLogState; /** Sub-Class for IDS SL900A set log mode */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_SetLogMode { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; /*Enable log for EXT1 external sensor */ bool Ext1Enable; /* Enable log for EXT2 external sensor */ bool Ext2Enable; /* Enable log for temperature sensor */ bool TempEnable; /* Enable log for battery sensor */ bool BattEnable; /* Time (seconds) between log readings */ uint16_t LogInterval; }TMR_TagOp_GEN2_IDS_SL900A_SetLogMode; /** Sub-Class for Gen2 end log command*/ typedef struct TMR_TagOp_GEN2_IDS_SL900A_EndLog { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; }TMR_TagOp_GEN2_IDS_SL900A_EndLog; /** Sub-Class for DelayTime */ typedef struct Delay { /* Raw 16-bit protocol value */ uint16_t raw; /* Logging start mode */ DelayMode Mode; /* Logging timer delay value (units of 512 seconds) */ uint16_t Time; /* Trigger log on both timer and external interrupts */ bool IrqTimerEnable; }Delay; /** Sub-Classs for ShelfLife Block 0 */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_ShelfLifeBlock0 { /* raw value of block0 */ uint32_t raw; /* Tmax */ uint8_t Tmax; /* Tmin */ uint8_t Tmin; /* Tstd */ uint8_t Tstd; /* Ea */ uint8_t Ea; }TMR_TagOp_GEN2_IDS_SL900A_ShelfLifeBlock0; /** Sub-Class for ShelfLife Block 1 */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_ShelfLifeBlock1 { /* raw value for block 1 */ uint32_t raw; /* SLinit */ uint16_t SLinit; /* Tint */ uint16_t Tint; /* SensorID */ uint8_t sensorID; /* Enable negative shelf life */ bool enableNegative; /* Shelf life algorithem enable */ bool algorithmEnable; /* RFU bytes */ uint8_t rfu; }TMR_TagOp_GEN2_IDS_SL900A_ShelfLifeBlock1; /** Sub-class for GetMeasurmentSetUp command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_MeasurementSetupData { /* Raw 16 byte response from Measurement Setup Data command */ uint8_t Raw[16]; /* LogLimits Data */ LogLimits loglimit; /* Log Mode Data */ LogModeData logModeData; /* Delay Data */ Delay delyTime; /* Application Data */ ApplicationData addData; /* Time (seconds) between log readings */ uint16_t logInterval; /* Start Time */ TMR_TimeStructure startTime; }TMR_TagOp_GEN2_IDS_SL900A_MeasurementSetupData; /** Sub-Class for GEN2 initialize command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_Initialize { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Logging memory configuration */ ApplicationData applicationData; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; /* Delay time */ Delay delayTime; }TMR_TagOp_GEN2_IDS_SL900A_Initialize; /** Sub-Class for specifying AccessFifo operation */ typedef enum AccessFifoOperation { /* Read from FIFO */ TMR_GEN2_IDS_SL900A_ACCESSFIFO_READ = 0x80, /* Write to FIFO */ TMR_GEN2_IDS_SL900A_ACCESSFIFO_WRITE = 0xA0, /* Get FIFO status */ TMR_GEN2_IDS_SL900A_ACCESSFIFO_STATUS = 0xC0, }AccessFifoOperation; /** Sub-Class for Gen2 Ids AccessFifo command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_AccessFifo { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; /* specify the operation do be done on fifo */ AccessFifoOperation operation; }TMR_TagOp_GEN2_IDS_SL900A_AccessFifo; /** Sub-Class for Gen2 Ids accessFifo write command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_AccessFifoWrite { TMR_TagOp_GEN2_IDS_SL900A_AccessFifo write; /* Bytes to write to FIFO */ TMR_uint8List *payLoad; }TMR_TagOp_GEN2_IDS_SL900A_AccessFifoWrite; /** Sub-Class for Gen2 Ids accessFifo read command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_AccessFifoRead { TMR_TagOp_GEN2_IDS_SL900A_AccessFifo read; /* Number of bytes to read from FIFO */ uint8_t length; }TMR_TagOp_GEN2_IDS_SL900A_AccessFifoRead; /** Sub-Class for Gen2 Ids accessFifo status command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_AccessFifoStatus { TMR_TagOp_GEN2_IDS_SL900A_AccessFifo status; }TMR_TagOp_GEN2_IDS_SL900A_AccessFifoStatus; /** Sub-Class for Gen2 StartLog command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_StartLog { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; /* Time to initialize log timestamp counter with */ uint32_t startTime; }TMR_TagOp_GEN2_IDS_SL900A_StartLog; /** Sub-Class for Gen2 IDS GetCalibrationData command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_GetCalibrationData { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; }TMR_TagOp_GEN2_IDS_SL900A_GetCalibrationData; /** Sub-Class for Gen2 IDS SetCalibrationData command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_SetCalibrationData { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; /* Calibration parameters */ TMR_TagOp_GEN2_IDS_SL900A_CalibrationData cal; }TMR_TagOp_GEN2_IDS_SL900A_SetCalibrationData; /** Sub-class for Gen2 Ids SetSfeParameters command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_SetSfeParameters { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; /* Sfe Parameters */ TMR_TagOp_GEN2_IDS_SL900A_SfeParameters *sfe; }TMR_TagOp_GEN2_IDS_SL900A_SetSfeParameters; /** Sub-class for Gen2 Ids GetMeasurementSetup command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_GetMeasurementSetup { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; }TMR_TagOp_GEN2_IDS_SL900A_GetMeasurementSetup; /** Sub-class for Gen2 Ids GetBatteryLevel command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_GetBatteryLevel { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; /* enum BatterType, re-check or default */ BatteryType batteryType; }TMR_TagOp_GEN2_IDS_SL900A_GetBatteryLevel; /** Sub-Class for Gen2 Ids SetLogLimits Command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_SetLogLimits { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; /* Specify the Log Limits */ LogLimits limit; }TMR_TagOp_GEN2_IDS_SL900A_SetLogLimits; /** Sub-Class for Gen2 Ids SetShelfLife Command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_SetShelfLife { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; /* Specify the ShelfLifeBlock0 */ TMR_TagOp_GEN2_IDS_SL900A_ShelfLifeBlock0 *shelfLifeBlock0; /* Specify the ShelfLifeBlock1 */ TMR_TagOp_GEN2_IDS_SL900A_ShelfLifeBlock1 *shelfLifeBlock1; }TMR_TagOp_GEN2_IDS_SL900A_SetShelfLife; /** Sub-Class for Gen2 Ids SetPassword Command */ typedef struct TMR_TagOp_GEN2_IDS_SL900A_SetPassword { TMR_TagOP_GEN2_IDS_SL900A sl900A; /* Custom Command Code */ uint8_t CommandCode; /* Gen2 access password */ uint32_t AccessPassword; /* IDS SL900A Password */ uint32_t Password; /* New Passwordlevel */ PasswordLevel NewPasswordLevel; /* New password */ uint32_t NewPassword; }TMR_TagOp_GEN2_IDS_SL900A_SetPassword; /** Sub-class for Gen2 Ids parameters */ typedef struct TMR_TagOP_GEN2_IDS { union { TMR_TagOp_GEN2_IDS_SL900A_GetSensorValue sensor; TMR_TagOp_GEN2_IDS_SL900A_GetLogState getLog; TMR_TagOp_GEN2_IDS_SL900A_SetLogMode setLogMode; TMR_TagOp_GEN2_IDS_SL900A_EndLog endLog; TMR_TagOp_GEN2_IDS_SL900A_Initialize initialize; TMR_TagOp_GEN2_IDS_SL900A_AccessFifoRead accessFifoRead; TMR_TagOp_GEN2_IDS_SL900A_AccessFifoWrite accessFifoWrite; TMR_TagOp_GEN2_IDS_SL900A_AccessFifoStatus accessFifoStatus; TMR_TagOp_GEN2_IDS_SL900A_StartLog startLog; TMR_TagOp_GEN2_IDS_SL900A_GetCalibrationData calibrationData; TMR_TagOp_GEN2_IDS_SL900A_SetCalibrationData setCalibration; TMR_TagOp_GEN2_IDS_SL900A_SetSfeParameters setSfeParameters; TMR_TagOp_GEN2_IDS_SL900A_GetMeasurementSetup measurementSetup; TMR_TagOp_GEN2_IDS_SL900A_GetBatteryLevel batteryLevel; TMR_TagOp_GEN2_IDS_SL900A_SetLogLimits setLogLimit; TMR_TagOp_GEN2_IDS_SL900A_SetShelfLife setShelfLife; TMR_TagOp_GEN2_IDS_SL900A_SetPassword setPassword; }u; }TMR_TagOP_GEN2_IDS; /** Sub-class for Gen2 custom tagops */ typedef struct TMR_TagOp_GEN2_Custom { TMR_SR_GEN2_SiliconType chipType; union { TMR_TagOp_GEN2_Alien alien; TMR_TagOp_GEN2_NXP nxp; TMR_TagOp_GEN2_Impinj impinj; TMR_TagOP_GEN2_IDS ids; TMR_TagOp_GEN2_Denatran IavDenatran; } u; }TMR_TagOp_GEN2_Custom; /** Sub-class for ISO180006B tagops */ typedef struct TMR_TagOp_ISO180006B { union { TMR_TagOp_ISO180006B_Lock lock; TMR_TagOp_ISO180006B_WriteData writeData; TMR_TagOp_ISO180006B_ReadData readData; } u; }TMR_TagOp_ISO180006B; /** Sub-class for Gen2 standard tagops */ typedef struct TMR_TagOp_GEN2 { union { TMR_TagOp_GEN2_WriteTag writeTag; TMR_TagOp_GEN2_WriteData writeData; TMR_TagOp_GEN2_ReadData readData; TMR_TagOp_GEN2_SecureReadData secureReadData; TMR_TagOp_GEN2_Lock lock; TMR_TagOp_GEN2_Kill kill; TMR_TagOp_GEN2_BlockWrite blockWrite; TMR_TagOp_GEN2_BlockPermaLock blockPermaLock; TMR_TagOp_GEN2_BlockErase blockErase; TMR_TagOp_GEN2_Custom custom; } u; }TMR_TagOp_GEN2; /** Tag operation data structure */ struct TMR_TagOp { TMR_TagOpType type; union { TMR_TagOp_GEN2 gen2; TMR_TagOp_ISO180006B iso180006b; TMR_TagOp_List list; } u; }; TMR_Status TMR_TagOp_init_GEN2_WriteTag(TMR_TagOp *tagop, TMR_TagData* epc); TMR_Status TMR_TagOp_init_GEN2_ReadData(TMR_TagOp *tagop, TMR_GEN2_Bank bank, uint32_t wordAddress, uint8_t len); TMR_Status TMR_TagOp_init_GEN2_SecureReadData(TMR_TagOp *tagop, TMR_GEN2_Bank bank, uint32_t wordAddress, uint8_t len, uint8_t type, uint8_t passwordType); TMR_Status TMR_TagOp_init_GEN2_SecurePassWord(TMR_TagOp *tagop, uint8_t passwordType, uint32_t gen2PassWord, uint8_t addressLength, uint8_t addressOffset, uint16_t flashOffset); TMR_Status TMR_TagOp_init_GEN2_WriteData(TMR_TagOp *tagop, TMR_GEN2_Bank bank, uint32_t wordAddress, TMR_uint16List *data); TMR_Status TMR_TagOp_init_GEN2_Lock(TMR_TagOp *tagop, uint16_t mask, uint16_t action, TMR_GEN2_Password accessPassword); TMR_Status TMR_TagOp_init_GEN2_Kill(TMR_TagOp *tagop, TMR_GEN2_Password killPassword); TMR_Status TMR_TagOp_init_GEN2_BlockWrite(TMR_TagOp *tagop, TMR_GEN2_Bank bank, uint32_t wordPtr, TMR_uint16List *data); TMR_Status TMR_TagOp_init_GEN2_BlockPermaLock(TMR_TagOp *tagop, uint8_t readLock, TMR_GEN2_Bank bank, uint32_t blockPtr, TMR_uint16List* mask); TMR_Status TMR_TagOp_init_GEN2_BlockErase(TMR_TagOp *tagop, TMR_GEN2_Bank bank, uint32_t wordPtr, uint8_t wordCount); TMR_Status TMR_TagOp_init_ISO180006B_ReadData(TMR_TagOp *tagop, uint8_t byteAddress, uint8_t len); TMR_Status TMR_TagOp_init_ISO180006B_WriteData(TMR_TagOp *tagop, uint8_t byteAddress, TMR_uint8List *data); TMR_Status TMR_TagOp_init_ISO180006B_Lock(TMR_TagOp *tagop, uint8_t address); TMR_Status TMR_TagOp_init_GEN2_Alien_Higgs2_PartialLoadImage(TMR_TagOp *tagop, TMR_GEN2_Password killPassword, TMR_GEN2_Password accessPassword, TMR_TagData *epc); TMR_Status TMR_TagOp_init_GEN2_Alien_Higgs2_FullLoadImage(TMR_TagOp *tagop, TMR_GEN2_Password killPassword, TMR_GEN2_Password accessPassword, uint16_t lockBits, uint16_t pcWord, TMR_TagData *epc); TMR_Status TMR_TagOp_init_GEN2_Alien_Higgs3_FastLoadImage(TMR_TagOp *tagop, TMR_GEN2_Password currentAccessPassword, TMR_GEN2_Password accessPassword, TMR_GEN2_Password killPassword, uint16_t pcWord, TMR_TagData *epc); TMR_Status TMR_TagOp_init_GEN2_Alien_Higgs3_LoadImage(TMR_TagOp *tagop, TMR_GEN2_Password currentAccessPassword, TMR_GEN2_Password accessPassword, TMR_GEN2_Password killPassword, uint16_t pcWord, TMR_uint8List *epcAndUserData); TMR_Status TMR_TagOp_init_GEN2_Alien_Higgs3_BlockReadLock(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, uint8_t lockBits); TMR_Status TMR_TagOp_init_GEN2_NXP_G2I_SetReadProtect(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword); TMR_Status TMR_TagOp_init_GEN2_NXP_G2X_SetReadProtect(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword); TMR_Status TMR_TagOp_init_GEN2_NXP_G2I_ResetReadProtect(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword); TMR_Status TMR_TagOp_init_GEN2_NXP_G2X_ResetReadProtect(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword); TMR_Status TMR_TagOp_init_GEN2_NXP_G2I_ChangeEAS(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, bool resetEAS); TMR_Status TMR_TagOp_init_GEN2_NXP_G2X_ChangeEAS(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, bool resetEAS); TMR_Status TMR_TagOp_init_GEN2_NXP_G2I_EASAlarm(TMR_TagOp *tagop, TMR_GEN2_DivideRatio dr, TMR_GEN2_TagEncoding m, TMR_GEN2_TrExt trExt); TMR_Status TMR_TagOp_init_GEN2_NXP_G2X_EASAlarm(TMR_TagOp *tagop, TMR_GEN2_DivideRatio dr, TMR_GEN2_TagEncoding m, TMR_GEN2_TrExt trExt); TMR_Status TMR_TagOp_init_GEN2_NXP_G2I_Calibrate(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword); TMR_Status TMR_TagOp_init_GEN2_NXP_G2X_Calibrate(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword); TMR_Status TMR_TagOp_init_GEN2_NXP_G2I_ChangeConfig(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, TMR_NXP_ConfigWord configWord); TMR_Status TMR_TagOp_init_GEN2_NXP_G2X_ChangeConfig(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, TMR_NXP_ConfigWord configWord); TMR_Status TMR_TagOp_init_GEN2_NXP_AES_Untraceable(TMR_TagOp *tagop,TMR_GEN2_UNTRACEABLE_Epc epc, int epclen , TMR_GEN2_UNTRACEABLE_Tid tid, TMR_GEN2_UNTRACEABLE_UserMemory user, TMR_GEN2_UNTRACEABLE_Range range, TMR_TagOp_GEN2_NXP_Untraceable *auth); TMR_Status TMR_TagOp_init_GEN2_NXP_AES_Authenticate(TMR_TagOp *tagop, TMR_TagOp_GEN2_NXP_Authenticate *authenticate); TMR_Status TMR_TagOp_init_GEN2_NXP_AES_ReadBuffer(TMR_TagOp *tagop, uint16_t wordPointer, uint16_t bitCount, TMR_TagOp_GEN2_NXP_Readbuffer *readbuffer); TMR_Status TMR_TagOp_init_GEN2_NXP_AES_Tam1authentication(TMR_TagOp_GEN2_NXP_Tam1Authentication *auth, TMR_NXP_KeyId keyid, TMR_uint8List *key, TMR_uint8List *ichallenge ,bool sendRawData ); TMR_Status TMR_TagOp_init_GEN2_NXP_AES_Tam2authentication(TMR_TagOp_GEN2_NXP_Tam2Authentication *auth, TMR_NXP_KeyId keyid, TMR_uint8List *key, TMR_uint8List *ichallenge, TMR_NXP_Profile profile, uint16_t Offset,uint8_t blockCount,bool sendRawData); TMR_Status TMR_TagOp_init_GEN2_Impinj_Monza4_QTReadWrite(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, TMR_Monza4_ControlByte controlByte, TMR_Monza4_Payload payload); TMR_Status TMR_TagOp_init_GEN2_Denatran_IAV_Activate_Secure_Mode(TMR_TagOp *tagop, uint8_t rfuByte); TMR_Status TMR_TagOp_init_GEN2_Denatran_IAV_Authenticate_OBU(TMR_TagOp *tagop, uint8_t rfuByte); TMR_Status TMR_TagOp_init_GEN2_Denatran_IAV_Activate_Siniav_Mode(TMR_TagOp *tagop, uint8_t rfuByte, TMR_uint8List *data); TMR_Status TMR_TagOp_init_GEN2_Denatran_IAV_OBU_Auth_ID(TMR_TagOp *tagop, uint8_t rfuByte); TMR_Status TMR_TagOp_init_GEN2_Denatran_IAV_OBU_Auth_Full_Pass1(TMR_TagOp *tagop, uint8_t rfuByte); TMR_Status TMR_TagOp_init_GEN2_Denatran_IAV_OBU_Auth_Full_Pass2(TMR_TagOp *tagop, uint8_t rfuByte); TMR_Status TMR_TagOp_init_GEN2_Denatran_IAV_OBU_ReadFromMemMap(TMR_TagOp *tagop, uint8_t rfuByte, uint16_t wordAddress); TMR_Status TMR_TagOp_init_GEN2_Denatran_IAV_OBU_WriteToMemMap(TMR_TagOp *tagop, uint8_t rfuByte, uint16_t wordAddress, uint16_t word, uint8_t* tagID, uint8_t* data); TMR_Status TMR_TagOp_init_GEN2_Denatran_IAV_GetTokenId(TMR_TagOp *tagop); TMR_Status TMR_TagOp_init_GEN2_Denatran_IAV_OBU_Auth_Full_Pass(TMR_TagOp *tagop, uint8_t payload); TMR_Status TMR_TagOp_init_GEN2_Denatran_IAV_ReadSec(TMR_TagOp *tagop, uint8_t payload, uint16_t wordAddress); TMR_Status TMR_TagOp_init_GEN2_Denatran_IAV_WriteSec(TMR_TagOp *tagop, uint8_t payload, uint8_t* data, uint8_t* credentials); TMR_Status TMR_TagOp_init_GEN2_Denatran_IAV_G0_PA_OBU_Auth(TMR_TagOp *tagop, uint8_t rfuByte); TMR_Status TMR_init_GEN2_NXP_G2I_ConfigWord(TMR_NXP_ConfigWord *configWord); TMR_Status TMR_init_GEN2_Impinj_Monza4_ControlByte(TMR_Monza4_ControlByte *controlByte); TMR_Status TMR_init_GEN2_Impinj_Monza4_Payload(TMR_Monza4_Payload *payload); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_GetSensorValue(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password, Sensor type); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_GetCalibrationData(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel leveli, uint32_t password); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_SetLogLimit(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password, LogLimits *logLimits); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_SetCalibrationData(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password, TMR_TagOp_GEN2_IDS_SL900A_CalibrationData *data); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_SetSfeParameters(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password, TMR_TagOp_GEN2_IDS_SL900A_SfeParameters *data); TMR_Status TMR_init_GEN2_IDS_SL900A_SensorReading(TMR_uint8List *reply, TMR_TagOp_GEN2_IDS_SL900A_SensorReading *sensor); TMR_Status TMR_init_GEN2_IDS_SL900A_BatteryLevelReading(TMR_uint8List *reply, TMR_TagOp_GEN2_IDS_SL900A_BatteryLevelReading *battery); TMR_Status TMR_init_GEN2_IDS_SL900A_MeasurementSetupData(TMR_uint8List *reply, TMR_TagOp_GEN2_IDS_SL900A_MeasurementSetupData *measurment); TMR_Status TMR_init_GEN2_IDS_SL900A_CalSfe(TMR_uint8List *reply, TMR_TagOp_GEN2_IDS_SL900A_CalSfe *calSfe); TMR_Status TMR_init_GEN2_IDS_SL900A_CalibrationData(uint8_t byte[7], TMR_TagOp_GEN2_IDS_SL900A_CalibrationData *cal); TMR_Status TMR_update_GEN2_IDS_SL900A_CalibrationData(TMR_TagOp_GEN2_IDS_SL900A_CalibrationData *cal); TMR_Status TMR_update_GEN2_IDS_SL900A_SfeParameters(TMR_TagOp_GEN2_IDS_SL900A_SfeParameters *sfe); TMR_Status TMR_init_GEN2_IDS_SL900A_SfeParameters(uint8_t byte[2], TMR_TagOp_GEN2_IDS_SL900A_SfeParameters *sfe); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_GetLogState(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_SetLogMode(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password, LoggingForm form, StorageRule rule, bool Ext1Enable, bool Ext2Enable, bool TempEnable, bool BattEnable, uint16_t LogInterval); TMR_Status TMR_init_GEN2_IDS_SL900A_LogState(TMR_uint8List *reply, TMR_TagOp_GEN2_IDS_SL900A_LogState *log); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_Initialize(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password, uint8_t delayMode, uint16_t delayTime, bool timeEnable, uint16_t numberOfWords, uint8_t BrokenWordPointer); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_EndLog(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_AccessFifoStatus(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level ,uint32_t password); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_AccessFifoRead(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password, uint8_t readLength); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_AccessFifoWrite(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password, TMR_uint8List *payLoad); TMR_Status TMR_init_GEN2_IDS_SL900A_FifoStatus(TMR_uint8List *reply, TMR_TagOp_GEN2_IDS_SL900A_FifoStatus *status); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_StartLog(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password, TMR_TimeStructure *timestamp); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_GetMeasurementSetup(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_SetPassword(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password, PasswordLevel newPasswordLevel, uint32_t newPassword); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_GetBatteryLevel(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password, BatteryType type); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_ShelfLifeBlock0(TMR_TagOp_GEN2_IDS_SL900A_ShelfLifeBlock0 *block0, uint8_t tmax, uint8_t Tmin, uint8_t tstd, uint8_t Ea); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_ShelfLifeBlock1(TMR_TagOp_GEN2_IDS_SL900A_ShelfLifeBlock1 *block1, uint16_t slinit, uint16_t tint, uint8_t sensorid, bool negative, bool algorithm); TMR_Status TMR_TagOp_init_GEN2_IDS_SL900A_SetShelfLife(TMR_TagOp *tagop, TMR_GEN2_Password accessPassword, PasswordLevel level, uint32_t password, TMR_TagOp_GEN2_IDS_SL900A_ShelfLifeBlock0 *block0, TMR_TagOp_GEN2_IDS_SL900A_ShelfLifeBlock1 *block1); TMR_Status TMR_GEN2_init_BapParams(TMR_GEN2_Bap *bapVal, int32_t powerUpDelayUs, int32_t freqHopOfftimeUs); #ifdef __cplusplus } #endif #endif /* _TMR_TAGOP_H */