# pylint: disable=too-many-lines
# pylint: disable=line-too-long
r"""The trigger commands module.

These commands are used in the following models:
MSO70KDX

THIS FILE IS AUTO-GENERATED, IT SHOULD NOT BE MANUALLY MODIFIED.

Please report an issue if one is found.

Commands and Queries:

::

    - TRIGger FORCe
    - TRIGger:A SETLevel
    - TRIGger:A:BUS:CAN:ADDRess:DIRection {DONTCare|READ|WRITE}
    - TRIGger:A:BUS:CAN:ADDRess:DIRection?
    - TRIGger:A:BUS:CAN:ADDRess:FORMat {BINary|HEX}
    - TRIGger:A:BUS:CAN:ADDRess:FORMat?
    - TRIGger:A:BUS:CAN:ADDRess:MODe {EXTENDed|STandard}
    - TRIGger:A:BUS:CAN:ADDRess:MODe?
    - TRIGger:A:BUS:CAN:ADDRess:VALue <string>
    - TRIGger:A:BUS:CAN:ADDRess:VALue?
    - TRIGger:A:BUS:CAN:CONDition {ERRor|DATA|IDANDDATA|EOF|IDentifier|ACKMISS|SOF|FRAMEtype}
    - TRIGger:A:BUS:CAN:CONDition?
    - TRIGger:A:BUS:CAN:DATa:DIRection {DONTCare|READ|WRITE}
    - TRIGger:A:BUS:CAN:DATa:DIRection?
    - TRIGger:A:BUS:CAN:DATa:FORMat {BINary|HEX}
    - TRIGger:A:BUS:CAN:DATa:FORMat?
    - TRIGger:A:BUS:CAN:DATa:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
    - TRIGger:A:BUS:CAN:DATa:QUALifier?
    - TRIGger:A:BUS:CAN:DATa:SIZe <nr3>
    - TRIGger:A:BUS:CAN:DATa:SIZe?
    - TRIGger:A:BUS:CAN:DATa:VALue <string>
    - TRIGger:A:BUS:CAN:DATa:VALue?
    - TRIGger:A:BUS:CAN:FRAMEtype {DATa|ERRor|OVERLoad|REMote}
    - TRIGger:A:BUS:CAN:FRAMEtype?
    - TRIGger:A:BUS:CAN:IDentifier:DIRection {DONTCare|READ|WRITE}
    - TRIGger:A:BUS:CAN:IDentifier:DIRection?
    - TRIGger:A:BUS:CAN:IDentifier:FORMat {BINary|HEX}
    - TRIGger:A:BUS:CAN:IDentifier:FORMat?
    - TRIGger:A:BUS:CAN:IDentifier:MODe {EXTENDed|STandard}
    - TRIGger:A:BUS:CAN:IDentifier:MODe?
    - TRIGger:A:BUS:CAN:IDentifier:VALue <string>
    - TRIGger:A:BUS:CAN:IDentifier:VALue?
    - TRIGger:A:BUS:DATa:FORMat {BINary|HEXadecimal|SYMBolic}
    - TRIGger:A:BUS:DATa:FORMat?
    - TRIGger:A:BUS:DATa:VALue <string>
    - TRIGger:A:BUS:DATa:VALue?
    - TRIGger:A:BUS:ETHERnet:DATa:FORMat {BINARY | HEX}
    - TRIGger:A:BUS:ETHERnet:DATa:FORMat?
    - TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue <QString>
    - TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue?
    - TRIGger:A:BUS:FLEXRAY:CONDition {SOF|FRAMEtype|IDentifier|CYCLEcount|HEADer|DATA|IDANDDATA|EOF|ERRor}
    - TRIGger:A:BUS:FLEXRAY:CONDition?
    - TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat {BINary|HEX}
    - TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat?
    - TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
    - TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier?
    - TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue <STRING>
    - TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue?
    - TRIGger:A:BUS:FLEXRAY:DATa:FORMat {BINary|HEX}
    - TRIGger:A:BUS:FLEXRAY:DATa:FORMat?
    - TRIGger:A:BUS:FLEXRAY:DATa:OFFSet <NR3>
    - TRIGger:A:BUS:FLEXRAY:DATa:OFFSet?
    - TRIGger:A:BUS:FLEXRAY:DATa:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
    - TRIGger:A:BUS:FLEXRAY:DATa:QUALifier?
    - TRIGger:A:BUS:FLEXRAY:DATa:SIZe <NR3>
    - TRIGger:A:BUS:FLEXRAY:DATa:SIZe?
    - TRIGger:A:BUS:FLEXRAY:DATa:VALue <STRING>
    - TRIGger:A:BUS:FLEXRAY:DATa:VALue?
    - TRIGger:A:BUS:FLEXRAY:EOFTYPE {ALL|STATIC|DYNAMIC}
    - TRIGger:A:BUS:FLEXRAY:EOFTYPE?
    - TRIGger:A:BUS:FLEXRAY:ERRTYPE {CRCHEADer|CRCTRAILer|NULLFRSTATIC|NULLFRDYNAMIC |SYNCFRAME|STARTUPNOSYNC}
    - TRIGger:A:BUS:FLEXRAY:ERRTYPE?
    - TRIGger:A:BUS:FLEXRAY:FRAMEType {NORMal|PAYload|NULL|SYNC|STARTup}
    - TRIGger:A:BUS:FLEXRAY:FRAMEType?
    - TRIGger:A:BUS:FLEXRAY:HEADER:CRC <string>
    - TRIGger:A:BUS:FLEXRAY:HEADER:CRC?
    - TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount <string>
    - TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount?
    - TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID <string>
    - TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID?
    - TRIGger:A:BUS:FLEXRAY:HEADER:INDBits <string>
    - TRIGger:A:BUS:FLEXRAY:HEADER:INDBits?
    - TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth <string>
    - TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth?
    - TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat {BINary|HEX}
    - TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat?
    - TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
    - TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier?
    - TRIGger:A:BUS:FLEXRAY:IDentifier:VALue <string>
    - TRIGger:A:BUS:FLEXRAY:IDentifier:VALue?
    - TRIGger:A:BUS:I2C:ADDress:FORMat {BINary|HEXadecimal}
    - TRIGger:A:BUS:I2C:ADDress:FORMat?
    - TRIGger:A:BUS:I2C:ADDress:MODe {ADDR7|ADDR10}
    - TRIGger:A:BUS:I2C:ADDress:MODe?
    - TRIGger:A:BUS:I2C:ADDress:TYPe {NONe|STARtbyte|HSMODe|GENeralcall|EEPROm|CBUS}
    - TRIGger:A:BUS:I2C:ADDress:TYPe?
    - TRIGger:A:BUS:I2C:ADDress:VALue <string>
    - TRIGger:A:BUS:I2C:ADDress:VALue?
    - TRIGger:A:BUS:I2C:CONDition {ACKMISS|ADDress|ADDRANDDATA|DATa|REPEATstart|STARt|STOP}
    - TRIGger:A:BUS:I2C:CONDition?
    - TRIGger:A:BUS:I2C:DATa:DIRection {DONTCare|READ|WRITE}
    - TRIGger:A:BUS:I2C:DATa:DIRection?
    - TRIGger:A:BUS:I2C:DATa:FORMat {BINary|HEXadecimal}
    - TRIGger:A:BUS:I2C:DATa:FORMat?
    - TRIGger:A:BUS:I2C:DATa:SIZe <NR3>
    - TRIGger:A:BUS:I2C:DATa:SIZe?
    - TRIGger:A:BUS:I2C:DATa:VALue <string>
    - TRIGger:A:BUS:I2C:DATa:VALue?
    - TRIGger:A:BUS:LIN:CONDition {DATA|IDANDDATA|ERRor|IDentifier|SLEEP|SYNC|WAKEup}
    - TRIGger:A:BUS:LIN:CONDition?
    - TRIGger:A:BUS:LIN:DATa:FORMat {BINary|HEX}
    - TRIGger:A:BUS:LIN:DATa:FORMat?
    - TRIGger:A:BUS:LIN:DATa:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
    - TRIGger:A:BUS:LIN:DATa:QUALifier?
    - TRIGger:A:BUS:LIN:DATa:SIZe <nr3>
    - TRIGger:A:BUS:LIN:DATa:SIZe?
    - TRIGger:A:BUS:LIN:DATa:VALue <string>
    - TRIGger:A:BUS:LIN:DATa:VALue?
    - TRIGger:A:BUS:LIN:ERRTYPE {CHecksum|PARity|SYNC}
    - TRIGger:A:BUS:LIN:ERRTYPE?
    - TRIGger:A:BUS:LIN:IDentifier:FORMat {BINary|HEX}
    - TRIGger:A:BUS:LIN:IDentifier:FORMat?
    - TRIGger:A:BUS:LIN:IDentifier:VALue <string>
    - TRIGger:A:BUS:LIN:IDentifier:VALue?
    - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat {BINary|HEX}
    - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat?
    - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier {LESSthan|MOREthan|EQual|UNEQual|LESSEQual|MOREEQual}
    - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier?
    - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue <QString>
    - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue?
    - TRIGger:A:BUS:MIL1553B:COMMAND:COUNt <QString>
    - TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat {BINary|HEX}
    - TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat?
    - TRIGger:A:BUS:MIL1553B:COMMAND:COUNt?
    - TRIGger:A:BUS:MIL1553B:COMMAND:PARity {0|1|X|ZERo|ONE|NOCARE|OFF|ON|DONTCare}
    - TRIGger:A:BUS:MIL1553B:COMMAND:PARity?
    - TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress <QString>
    - TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat {BINary|HEX}
    - TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat?
    - TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress?
    - TRIGger:A:BUS:MIL1553B:COMMAND:TRBit {RX|TX|X|DONTCare}
    - TRIGger:A:BUS:MIL1553B:COMMAND:TRBit?
    - TRIGger:A:BUS:MIL1553B:CONDition {SYNC|COMMAND|STATUS|DATA|TIMe|ERRor}
    - TRIGger:A:BUS:MIL1553B:CONDition?
    - TRIGger:A:BUS:MIL1553B:DATA:FORMat {BINary|HEX}
    - TRIGger:A:BUS:MIL1553B:DATA:FORMat?
    - TRIGger:A:BUS:MIL1553B:DATA:PARity {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
    - TRIGger:A:BUS:MIL1553B:DATA:PARity?
    - TRIGger:A:BUS:MIL1553B:DATA:VALue <QString>
    - TRIGger:A:BUS:MIL1553B:DATA:VALue?
    - TRIGger:A:BUS:MIL1553B:ERRTYPE {PARity|SYNC|MANCHester|DATA}
    - TRIGger:A:BUS:MIL1553B:ERRTYPE?
    - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat {BINary|HEX}
    - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat?
    - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier {LESSthan|MOREthan|EQual|UNEQual|LESSEQual|MOREEQual}
    - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier?
    - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue <QString>
    - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue?
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR?
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY?
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA?
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR?
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME?
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity {0|1|X|ZERo|ONE|NOCARE|DONTCare|ON|OFF}
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity?
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ?
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF?
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
    - TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF?
    - TRIGger:A:BUS:MIL1553B:TIME:LESSLimit <NR3>
    - TRIGger:A:BUS:MIL1553B:TIME:LESSLimit?
    - TRIGger:A:BUS:MIL1553B:TIME:MORELimit <NR3>
    - TRIGger:A:BUS:MIL1553B:TIME:MORELimit?
    - TRIGger:A:BUS:MIL1553B:TIME:QUALifier {LESSthan|MOREthan|INrange|OUTrange}
    - TRIGger:A:BUS:MIL1553B:TIME:QUALifier?
    - TRIGger:A:BUS:PCIE:CHARacter:CHAR <string>
    - TRIGger:A:BUS:PCIE:CHARacter:CHAR?
    - TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus <string>
    - TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus?
    - TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS <string>
    - TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS?
    - TRIGger:A:BUS:PCIE:CONDition {ANYControl|CHARacter|ERROR|PATtern}
    - TRIGger:A:BUS:PCIE:CONDition?
    - TRIGger:A:BUS:PCIE:DISParity {EITher|NEGAtive|POSITIVe}
    - TRIGger:A:BUS:PCIE:DISParity?
    - TRIGger:A:BUS:PCIE:ERROR {CHARacter|DISParity}
    - TRIGger:A:BUS:PCIE:ERROR?
    - TRIGger:A:BUS:PCIE:FORMat {ORDERedset|SYMbol|CHAR}
    - TRIGger:A:BUS:PCIE:FORMat?
    - TRIGger:A:BUS:PCIE:PATtern:CHAR<x> <string>
    - TRIGger:A:BUS:PCIE:PATtern:CHAR<x>?
    - TRIGger:A:BUS:PCIE:PATtern:ORDERedset {EI|FTS|SKP}
    - TRIGger:A:BUS:PCIE:PATtern:ORDERedset?
    - TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x> <string>
    - TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x>?
    - TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x> <string>
    - TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x>?
    - TRIGger:A:BUS:RS232C:CONDition {DATa|EOp|PARItyerror|STARt}
    - TRIGger:A:BUS:RS232C:CONDition?
    - TRIGger:A:BUS:RS232C:DATa:FORMat {BINary|HEXadecimal}
    - TRIGger:A:BUS:RS232C:DATa:FORMat?
    - TRIGger:A:BUS:RS232C:DATa:SIZe <NR3>
    - TRIGger:A:BUS:RS232C:DATa:SIZe?
    - TRIGger:A:BUS:RS232C:DATa:VALue <string>
    - TRIGger:A:BUS:RS232C:DATa:VALue?
    - TRIGger:A:BUS:S64B66B:BLOCKONE { SYNC | INVSYNC | BLOCKtype | PATtern }
    - TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType { NONe | X1E | X2D | X33 | X66 | X55 | X78 | X4B | X87 | X99 | XB4 | XCC | XD2 | XE1 | XFF }
    - TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType?
    - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat { Binary | HEX }
    - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat?
    - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC <string>
    - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC?
    - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue <string>
    - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue?
    - TRIGger:A:BUS:S64B66B:BLOCKONE?
    - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat { Binary | HEX }
    - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat?
    - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC <string>
    - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC?
    - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue <string>
    - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue?
    - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC <string>
    - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC?
    - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue <string>
    - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue?
    - TRIGger:A:BUS:S64B66B:CONDition { BLOCK | BLOCK1THEN2 }
    - TRIGger:A:BUS:S64B66B:CONDition?
    - TRIGger:A:BUS:S8B10B:CHARacter:CHAR <string>
    - TRIGger:A:BUS:S8B10B:CHARacter:CHAR?
    - TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus <string>
    - TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus?
    - TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS <string>
    - TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS?
    - TRIGger:A:BUS:S8B10B:CONDition {ANYControl|CHARacter|ERROR|PATtern}
    - TRIGger:A:BUS:S8B10B:CONDition?
    - TRIGger:A:BUS:S8B10B:DISParity {NEGAtive|POSITIVe|EITher}
    - TRIGger:A:BUS:S8B10B:DISParity?
    - TRIGger:A:BUS:S8B10B:ERROR {CHARacter|DISParity}
    - TRIGger:A:BUS:S8B10B:ERROR?
    - TRIGger:A:BUS:S8B10B:FORMat {CHAR|SYMbol}
    - TRIGger:A:BUS:S8B10B:FORMat?
    - TRIGger:A:BUS:S8B10B:PATtern:CHAR<x> <string>
    - TRIGger:A:BUS:S8B10B:PATtern:CHAR<x>?
    - TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x> <string>
    - TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x>?
    - TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x> <string>
    - TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x>?
    - TRIGger:A:BUS:SOUrce {B1|B2|B3|B4|B5|B6|B7|B8|B9|B10|B11|B12| B13|B14|B15|B16}
    - TRIGger:A:BUS:SOUrce?
    - TRIGger:A:BUS:SPI:CONDition {DATA|SS}
    - TRIGger:A:BUS:SPI:CONDition?
    - TRIGger:A:BUS:SPI:DATa:FORMat {BINary|HEXadecimal}
    - TRIGger:A:BUS:SPI:DATa:FORMat?
    - TRIGger:A:BUS:SPI:DATa:SIZe <NR3>
    - TRIGger:A:BUS:SPI:DATa:SIZe?
    - TRIGger:A:BUS:SPI:DATa:VALue <string>
    - TRIGger:A:BUS:SPI:DATa:VALue?
    - TRIGger:A:BUS:USB:ADDress:FORMat {BINary|HEXadecimal|SYMBolic}
    - TRIGger:A:BUS:USB:ADDress:FORMat?
    - TRIGger:A:BUS:USB:ADDress:HIVALue <string>
    - TRIGger:A:BUS:USB:ADDress:HIVALue?
    - TRIGger:A:BUS:USB:ADDress:VALue <string>
    - TRIGger:A:BUS:USB:ADDress:VALue?
    - TRIGger:A:BUS:USB:CHARacter:CHAR <string>
    - TRIGger:A:BUS:USB:CHARacter:CHAR?
    - TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus <string>
    - TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus?
    - TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS <string>
    - TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS?
    - TRIGger:A:BUS:USB:CONDition {DATAPacket|EOP|ERROR|HANDSHAKEPacket|RESET|RESUME| SPECIALPacket|SUSPEND|SYNC|TOKENPacket}
    - TRIGger:A:BUS:USB:CONDition?
    - TRIGger:A:BUS:USB:DATa:FORMat {BINary|HEXadecimal}
    - TRIGger:A:BUS:USB:DATa:FORMat?
    - TRIGger:A:BUS:USB:DATa:HIVALue <string>
    - TRIGger:A:BUS:USB:DATa:HIVALue?
    - TRIGger:A:BUS:USB:DATa:OFFSet {<NR3>|DONTCare}
    - TRIGger:A:BUS:USB:DATa:OFFSet?
    - TRIGger:A:BUS:USB:DATa:SIZe <NR3>
    - TRIGger:A:BUS:USB:DATa:SIZe?
    - TRIGger:A:BUS:USB:DATa:TYPe {ANY|DATA<x>|MDATA}
    - TRIGger:A:BUS:USB:DATa:TYPe?
    - TRIGger:A:BUS:USB:DATa:VALue <string>
    - TRIGger:A:BUS:USB:DATa:VALue?
    - TRIGger:A:BUS:USB:DISParity {NEGAtive|POSITIVe|EITher}
    - TRIGger:A:BUS:USB:DISParity?
    - TRIGger:A:BUS:USB:ENDPoint:FORMat {BINary|HEXadecimal}
    - TRIGger:A:BUS:USB:ENDPoint:FORMat?
    - TRIGger:A:BUS:USB:ENDPoint:HIVALue <string>
    - TRIGger:A:BUS:USB:ENDPoint:HIVALue?
    - TRIGger:A:BUS:USB:ENDPoint:VALue <string>
    - TRIGger:A:BUS:USB:ENDPoint:VALue?
    - TRIGger:A:BUS:USB:ERROR {CHARacter|DISParity}
    - TRIGger:A:BUS:USB:ERROR?
    - TRIGger:A:BUS:USB:ERRTYPE {BITSTUFFing|CRC5|CRC16|PID}
    - TRIGger:A:BUS:USB:ERRTYPE?
    - TRIGger:A:BUS:USB:FORMat {CHAR|SYMbol}
    - TRIGger:A:BUS:USB:FORMat?
    - TRIGger:A:BUS:USB:HANDShaketype {ACK|ANY|NAK|NYET|STALL}
    - TRIGger:A:BUS:USB:HANDShaketype?
    - TRIGger:A:BUS:USB:PATtern:CHAR<x> <string>
    - TRIGger:A:BUS:USB:PATtern:CHAR<x>?
    - TRIGger:A:BUS:USB:PATtern:NUMSymbols <NR1>
    - TRIGger:A:BUS:USB:PATtern:NUMSymbols?
    - TRIGger:A:BUS:USB:PATtern:ORDERedset {OFF|ON|0|1}
    - TRIGger:A:BUS:USB:PATtern:ORDERedset?
    - TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x> <string>
    - TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x>?
    - TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x> <string>
    - TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x>?
    - TRIGger:A:BUS:USB:QUAlifier {EQUal|INrange|LESSEQual|MOREEQual|OUTrange|UNEQual| LESSThan|MOREThan}
    - TRIGger:A:BUS:USB:QUAlifier?
    - TRIGger:A:BUS:USB:SOF:FORMat {BINary|HEXadecimal|SYMBolic}
    - TRIGger:A:BUS:USB:SOF:FORMat?
    - TRIGger:A:BUS:USB:SOF:FRAMENUMber <string>
    - TRIGger:A:BUS:USB:SOF:FRAMENUMber?
    - TRIGger:A:BUS:USB:SPECIALType {ANY|ERR|PING|PRE|RESERVED|SPLIT}
    - TRIGger:A:BUS:USB:SPECIALType?
    - TRIGger:A:BUS:USB:SPLIT:ET:VALue {DONTcare|CONTRol|ISOchronous|BULK|INTERRUPT}
    - TRIGger:A:BUS:USB:SPLIT:ET:VALue?
    - TRIGger:A:BUS:USB:SPLIT:HUB:FORMat {BINary|HEXadecimal}
    - TRIGger:A:BUS:USB:SPLIT:HUB:FORMat?
    - TRIGger:A:BUS:USB:SPLIT:HUB:VALue <string>
    - TRIGger:A:BUS:USB:SPLIT:HUB:VALue?
    - TRIGger:A:BUS:USB:SPLIT:PORT:FORMat {BINary|HEXadecimal}
    - TRIGger:A:BUS:USB:SPLIT:PORT:FORMat?
    - TRIGger:A:BUS:USB:SPLIT:PORT:VALue <string>
    - TRIGger:A:BUS:USB:SPLIT:PORT:VALue?
    - TRIGger:A:BUS:USB:SPLIT:SC:VALue {CSPLIT|SSPLIT|DONTcare}
    - TRIGger:A:BUS:USB:SPLIT:SC:VALue?
    - TRIGger:A:BUS:USB:SPLIT:SE:VALue {DONTCare|FULLSPeed|LOWSPeed|ISOMID|ISOEND|ISOSTART|ISOALL}
    - TRIGger:A:BUS:USB:SPLIT:SE:VALue?
    - TRIGger:A:BUS:USB:TOKENType {ANY|IN|OUT|SOF|SETUP}
    - TRIGger:A:BUS:USB:TOKENType?
    - TRIGger:A:CAN:CONDition {SOF|FRAMEtype|IDENTifier|DATA|IDANDDATA|EOF|ACKMISS}
    - TRIGger:A:CAN:CONDition?
    - TRIGger:A:CAN:DATa:DIRection {READ|WRITE|NOCARE}
    - TRIGger:A:CAN:DATa:DIRection?
    - TRIGger:A:CAN:DATa:LEVel <NR3>
    - TRIGger:A:CAN:DATa:LEVel?
    - TRIGger:A:CAN:DATa:SOUrce CH<x>
    - TRIGger:A:CAN:DATa:SOUrce?
    - TRIGger:A:CAN:DATa:VALue <QString>
    - TRIGger:A:CAN:DATa:VALue?
    - TRIGger:A:CAN:FORMat {BINary|HEX}
    - TRIGger:A:CAN:FORMat?
    - TRIGger:A:CAN:FRAMEtype {DATA|REMote|ERROR|OVERLOAD}
    - TRIGger:A:CAN:FRAMEtype?
    - TRIGger:A:CAN:IDENTifier:MODe {STANdard|EXTENded}
    - TRIGger:A:CAN:IDENTifier:MODe?
    - TRIGger:A:CAN:IDENTifier:VALue <QString>
    - TRIGger:A:CAN:IDENTifier:VALue?
    - TRIGger:A:CAN:PROBE {CANL|CANH|DIFFerential|TX|RX}
    - TRIGger:A:CAN:PROBE?
    - TRIGger:A:CAN:SPEed <NR3>
    - TRIGger:A:CAN:SPEed?
    - TRIGger:A:COMMunication:AMI:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
    - TRIGger:A:COMMunication:AMI:PULSEForm?
    - TRIGger:A:COMMunication:AMI:THReshold:HIGH <NR3>
    - TRIGger:A:COMMunication:AMI:THReshold:HIGH?
    - TRIGger:A:COMMunication:AMI:THReshold:LOW <NR3>
    - TRIGger:A:COMMunication:AMI:THReshold:LOW?
    - TRIGger:A:COMMunication:B3ZS:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
    - TRIGger:A:COMMunication:B3ZS:PULSEForm?
    - TRIGger:A:COMMunication:B3ZS:THReshold:HIGH <NR3>
    - TRIGger:A:COMMunication:B3ZS:THReshold:HIGH?
    - TRIGger:A:COMMunication:B3ZS:THReshold:LOW <NR3>
    - TRIGger:A:COMMunication:B3ZS:THReshold:LOW?
    - TRIGger:A:COMMunication:B6ZS:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
    - TRIGger:A:COMMunication:B6ZS:PULSEForm?
    - TRIGger:A:COMMunication:B6ZS:THReshold:HIGH <NR3>
    - TRIGger:A:COMMunication:B6ZS:THReshold:HIGH?
    - TRIGger:A:COMMunication:B6ZS:THReshold:LOW <NR3>
    - TRIGger:A:COMMunication:B6ZS:THReshold:LOW?
    - TRIGger:A:COMMunication:B8ZS:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
    - TRIGger:A:COMMunication:B8ZS:PULSEForm?
    - TRIGger:A:COMMunication:B8ZS:THReshold:HIGH <NR3>
    - TRIGger:A:COMMunication:B8ZS:THReshold:HIGH?
    - TRIGger:A:COMMunication:B8ZS:THReshold:LOW <NR3>
    - TRIGger:A:COMMunication:B8ZS:THReshold:LOW?
    - TRIGger:A:COMMunication:BITRate <NR3>
    - TRIGger:A:COMMunication:BITRate?
    - TRIGger:A:COMMunication:CLOCk:POLarity {RISe|FALL}
    - TRIGger:A:COMMunication:CLOCk:POLarity?
    - TRIGger:A:COMMunication:CMI:PULSEForm {PLUSOne|MINUSOne|ZERO|EYEdiagram}
    - TRIGger:A:COMMunication:CMI:PULSEForm?
    - TRIGger:A:COMMunication:CODe {AMI|HDB3|B3ZS|B6ZS|B8ZS|CMI|NRZ|MLT3|MANChester}
    - TRIGger:A:COMMunication:CODe?
    - TRIGger:A:COMMunication:HDB3:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
    - TRIGger:A:COMMunication:HDB3:PULSEForm?
    - TRIGger:A:COMMunication:HDB3:THReshold:HIGH <NR3>
    - TRIGger:A:COMMunication:HDB3:THReshold:HIGH?
    - TRIGger:A:COMMunication:HDB3:THReshold:LOW <NR3>
    - TRIGger:A:COMMunication:HDB3:THReshold:LOW?
    - TRIGger:A:COMMunication:SOUrce {CH<x>}
    - TRIGger:A:COMMunication:SOUrce:TYPe {DATa|CLOCk|RECOVered}
    - TRIGger:A:COMMunication:SOUrce:TYPe?
    - TRIGger:A:COMMunication:SOUrce?
    - TRIGger:A:COMMunication:STANdard {ATAG<x>|CLOCKCoax| CLOCKSymmetrical|Custom|D<x>|DS0Contra| DS0Double| DS0Single|DS0Timing|DS1|DS1A| DS1C|DS2| DS2RATECoax|DS2RATESymmetrical| DS3|DS4NA|E1|E2|E3|E4|ENET100|ENET1250| ENETXAUI| FC133|FC266|FC531|FC1063|FC2125|FC4250| FST|FW1394BS400B|FW1394BS1600B|HST|INF2_5G| OC1|OC3| OC12|OC48|OC48_FEC|PCIEXPRESS|RATE32Mbit| RATE97Mbit|RIO_500M|RIO_750M| RIO_1G|RIO_2G|RIO_1_5G|RIO_SERIAL_1G| RIO_SERIAL_2G|RIO_SERIAL_3G|SAS1_5|SAS3_?| SFI5_2|SFI5_3|STM0_CMI|STM0_HDBX|STM1E|STS1| STS3| TFI5_2|TFI5_3|VIDEO270|VIDEO292M|VIDEO360|VSROC192}
    - TRIGger:A:COMMunication:STANdard?
    - TRIGger:A:EDGE:COUPling {AC|DC|HFRej|LFRej|NOISErej|ATRIGger}
    - TRIGger:A:EDGE:COUPling:CH<x> {AC|DC|HFRej|LFRej|NOISErej}
    - TRIGger:A:EDGE:COUPling:CH<x>?
    - TRIGger:A:EDGE:COUPling?
    - TRIGger:A:EDGE:SLOpe {RISe|FALL|EITher}
    - TRIGger:A:EDGE:SLOpe:AUX {RISe|FALL|EITHER}
    - TRIGger:A:EDGE:SLOpe:AUX?
    - TRIGger:A:EDGE:SLOpe:CH<x> {RISe|FALL|EITher}
    - TRIGger:A:EDGE:SLOpe:CH<x>?
    - TRIGger:A:EDGE:SLOpe?
    - TRIGger:A:EDGE:SOUrce {AUXiliary|CH<x>|MCH<x>|LINE|D<x>}
    - TRIGger:A:EDGE:SOUrce?
    - TRIGger:A:EDGE?
    - TRIGger:A:HOLDoff:ACTUal?
    - TRIGger:A:HOLDoff:BY {TIMe|DEFAult|RANDom|AUTO}
    - TRIGger:A:HOLDoff:BY?
    - TRIGger:A:HOLDoff:TIMe <NR3>
    - TRIGger:A:HOLDoff:TIMe?
    - TRIGger:A:HOLDoff?
    - TRIGger:A:I2C:ADDRess:RWINClude {OFF|ON}
    - TRIGger:A:I2C:ADDRess:RWINClude?
    - TRIGger:A:LEVel {ECL|TTL|<NR3>}
    - TRIGger:A:LEVel:CH<x> {ECL|TTL|<NR3>}
    - TRIGger:A:LEVel:CH<x>?
    - TRIGger:A:LEVel?
    - TRIGger:A:LOGIc:CLAss {PATtern|STATE|SETHold}
    - TRIGger:A:LOGIc:CLAss?
    - TRIGger:A:LOGIc:FUNCtion {AND|NANd|NOR|OR}
    - TRIGger:A:LOGIc:FUNCtion?
    - TRIGger:A:LOGIc:INPut:ALL <QString>
    - TRIGger:A:LOGIc:INPut:ALL?
    - TRIGger:A:LOGIc:INPut:CH<x> {HIGH|LOW|X}
    - TRIGger:A:LOGIc:INPut:CH<x>?
    - TRIGger:A:LOGIc:INPut:FORMat {HEXadecimal|BINary}
    - TRIGger:A:LOGIc:INPut:FORMat?
    - TRIGger:A:LOGIc:INPut?
    - TRIGger:A:LOGIc:PATtern:INPut:CH<x> {HIGH|LOW|X}
    - TRIGger:A:LOGIc:PATtern:INPut:CH<x>?
    - TRIGger:A:LOGIc:PATtern:WHEn {TRUe|FALSe|LESSThan|MOREThan}
    - TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit <NR3>
    - TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit?
    - TRIGger:A:LOGIc:PATtern:WHEn:MORELimit <NR3>
    - TRIGger:A:LOGIc:PATtern:WHEn:MORELimit?
    - TRIGger:A:LOGIc:PATtern:WHEn?
    - TRIGger:A:LOGIc:PATtern?
    - TRIGger:A:LOGIc:SETHold:CLOCk:EDGE {FALL|RISe}
    - TRIGger:A:LOGIc:SETHold:CLOCk:EDGE?
    - TRIGger:A:LOGIc:SETHold:CLOCk:LEVel {ECL|TTL|<NR3>}
    - TRIGger:A:LOGIc:SETHold:CLOCk:LEVel?
    - TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce CH<x>
    - TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce?
    - TRIGger:A:LOGIc:SETHold:CLOCk:THReshold {ECL|TTL|<NR3>}
    - TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x> {ECL|TTL|<NR3>}
    - TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x>?
    - TRIGger:A:LOGIc:SETHold:CLOCk:THReshold?
    - TRIGger:A:LOGIc:SETHold:CLOCk?
    - TRIGger:A:LOGIc:SETHold:DATa:LEVel {ECL|TTL|<NR3>}
    - TRIGger:A:LOGIc:SETHold:DATa:LEVel?
    - TRIGger:A:LOGIc:SETHold:DATa:SOUrce CH<x>
    - TRIGger:A:LOGIc:SETHold:DATa:SOUrce?
    - TRIGger:A:LOGIc:SETHold:DATa:THReshold {ECL|TTL|<NR3>}
    - TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x> {ECL|TTL|<NR3>}
    - TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x>?
    - TRIGger:A:LOGIc:SETHold:DATa:THReshold?
    - TRIGger:A:LOGIc:SETHold:DATa?
    - TRIGger:A:LOGIc:SETHold:HOLDTime <NR3>
    - TRIGger:A:LOGIc:SETHold:HOLDTime?
    - TRIGger:A:LOGIc:SETHold:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:A:LOGIc:SETHold:QUAlify?
    - TRIGger:A:LOGIc:SETHold:SETTime <NR3>
    - TRIGger:A:LOGIc:SETHold:SETTime?
    - TRIGger:A:LOGIc:SETHold?
    - TRIGger:A:LOGIc:STATE:CLOck:SOUrce {CH4|CQ}
    - TRIGger:A:LOGIc:STATE:CLOck:SOUrce?
    - TRIGger:A:LOGIc:STATE:INPut:CH<x> {FALL|RISe}
    - TRIGger:A:LOGIc:STATE:INPut:CH<x>?
    - TRIGger:A:LOGIc:STATE:WHEn {TRUe|FALSe}
    - TRIGger:A:LOGIc:STATE:WHEn?
    - TRIGger:A:LOGIc:STATE?
    - TRIGger:A:LOGIc:THReshold:CH<x> <NR3>
    - TRIGger:A:LOGIc:THReshold:CH<x>?
    - TRIGger:A:LOGIc:THReshold?
    - TRIGger:A:LOGIc?
    - TRIGger:A:LOWerthreshold:CH<x> {ECL|TTL|<NR3>}
    - TRIGger:A:LOWerthreshold:CH<x>?
    - TRIGger:A:MODe {AUTO|NORMal}
    - TRIGger:A:MODe?
    - TRIGger:A:PLOCK:COUNT <NR1>
    - TRIGger:A:PLOCK:COUNT?
    - TRIGger:A:PLOCK:LENGTH <NR1>
    - TRIGger:A:PLOCK:LENGTH?
    - TRIGger:A:PLOCK:SOURCE CH<x>
    - TRIGger:A:PLOCK:SOURCE?
    - TRIGger:A:PULse:CLAss {GLItch|RUNT|WIDth| TRANsition|TIMEOut|WINdow}
    - TRIGger:A:PULse:CLAss?
    - TRIGger:A:PULse:GLItch:FILTer {ACCept|REJect}
    - TRIGger:A:PULse:GLItch:FILTer?
    - TRIGger:A:PULse:GLItch:LOWPASSfilter {ON|OFF}
    - TRIGger:A:PULse:GLItch:LOWPASSfilter?
    - TRIGger:A:PULse:GLItch:POLarity {POSITIVe|NEGAtive|EITher}
    - TRIGger:A:PULse:GLItch:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
    - TRIGger:A:PULse:GLItch:POLarity:CH<x>?
    - TRIGger:A:PULse:GLItch:POLarity?
    - TRIGger:A:PULse:GLItch:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:A:PULse:GLItch:QUAlify?
    - TRIGger:A:PULse:GLItch:TRIGIF {ACCept|REJect}
    - TRIGger:A:PULse:GLItch:TRIGIF?
    - TRIGger:A:PULse:GLItch:WIDth <NR3>
    - TRIGger:A:PULse:GLItch:WIDth?
    - TRIGger:A:PULse:GLItch?
    - TRIGger:A:PULse:PERiod:HIGHLimit <NR3>
    - TRIGger:A:PULse:PERiod:HIGHLimit?
    - TRIGger:A:PULse:PERiod:LOWLimit <NR3>
    - TRIGger:A:PULse:PERiod:LOWLimit?
    - TRIGger:A:PULse:PERiod:POLarity {NEGAtive|POSITIVe}
    - TRIGger:A:PULse:PERiod:POLarity?
    - TRIGger:A:PULse:PERiod:QUAlify {OCCurs | LOGIC | BUS}
    - TRIGger:A:PULse:PERiod:QUAlify?
    - TRIGger:A:PULse:PERiod:VIEW {PERiod|FREQuency}
    - TRIGger:A:PULse:PERiod:VIEW?
    - TRIGger:A:PULse:PERiod:WHEn {LESSthan | GREATerthan | WITHin | OUTside}
    - TRIGger:A:PULse:PERiod:WHEn?
    - TRIGger:A:PULse:PERiod?
    - TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x> {HIGH|LOW|X}
    - TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x>?
    - TRIGger:A:PULse:RUNT:LOGIc:INPUT? TRIGger:A:PULse:RUNT:LOGIcINPUT?
    - TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x> <NR3>
    - TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x>?
    - TRIGger:A:PULse:RUNT:LOGIc?
    - TRIGger:A:PULse:RUNT:POLarity {POSITIVe|NEGAtive|EITher}
    - TRIGger:A:PULse:RUNT:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
    - TRIGger:A:PULse:RUNT:POLarity:CH<x>?
    - TRIGger:A:PULse:RUNT:POLarity?
    - TRIGger:A:PULse:RUNT:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:A:PULse:RUNT:QUAlify?
    - TRIGger:A:PULse:RUNT:THReshold:BOTh {TTL|ECL}
    - TRIGger:A:PULse:RUNT:THReshold:HIGH <NR3>
    - TRIGger:A:PULse:RUNT:THReshold:HIGH?
    - TRIGger:A:PULse:RUNT:THReshold:LOW <NR3>
    - TRIGger:A:PULse:RUNT:THReshold:LOW?
    - TRIGger:A:PULse:RUNT:THReshold?
    - TRIGger:A:PULse:RUNT:WHEn {OCCurs|WIDERthan}
    - TRIGger:A:PULse:RUNT:WHEn?
    - TRIGger:A:PULse:RUNT:WIDth <NR3>
    - TRIGger:A:PULse:RUNT:WIDth?
    - TRIGger:A:PULse:SOUrce {CH<x>|D<x>|MCH<x>}
    - TRIGger:A:PULse:SOUrce?
    - TRIGger:A:PULse:TIMEOut:LOWPASSfilter {ON|OFF}
    - TRIGger:A:PULse:TIMEOut:LOWPASSfilter?
    - TRIGger:A:PULse:TIMEOut:POLarity {STAYSHigh|STAYSLow|EITher}
    - TRIGger:A:PULse:TIMEOut:POLarity:CH<x> {STAYSHigh|STAYSLow|EITher}
    - TRIGger:A:PULse:TIMEOut:POLarity:CH<x>?
    - TRIGger:A:PULse:TIMEOut:POLarity?
    - TRIGger:A:PULse:TIMEOut:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:A:PULse:TIMEOut:QUAlify?
    - TRIGger:A:PULse:TIMEOut:TIMe <NR3>
    - TRIGger:A:PULse:TIMEOut:TIMe?
    - TRIGger:A:PULse:TIMEOut?
    - TRIGger:A:PULse:TRANsition:DELTATime <NR3>
    - TRIGger:A:PULse:TRANsition:DELTATime?
    - TRIGger:A:PULse:TRANsition:POLarity {POSITIVe|NEGAtive|EITher}
    - TRIGger:A:PULse:TRANsition:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
    - TRIGger:A:PULse:TRANsition:POLarity:CH<x>?
    - TRIGger:A:PULse:TRANsition:POLarity?
    - TRIGger:A:PULse:TRANsition:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:A:PULse:TRANsition:QUAlify?
    - TRIGger:A:PULse:TRANsition:THReshold:BOTh {TTL|ECL}
    - TRIGger:A:PULse:TRANsition:THReshold:HIGH <NR3>
    - TRIGger:A:PULse:TRANsition:THReshold:HIGH?
    - TRIGger:A:PULse:TRANsition:THReshold:LOW <NR3>
    - TRIGger:A:PULse:TRANsition:THReshold:LOW?
    - TRIGger:A:PULse:TRANsition:THReshold?
    - TRIGger:A:PULse:TRANsition:WHEn {FASTERthan|SLOWERthan}
    - TRIGger:A:PULse:TRANsition:WHEn?
    - TRIGger:A:PULse:TRANsition?
    - TRIGger:A:PULse:WIDth:HIGHLimit <NR3>
    - TRIGger:A:PULse:WIDth:HIGHLimit?
    - TRIGger:A:PULse:WIDth:LOWLimit <NR3>
    - TRIGger:A:PULse:WIDth:LOWLimit?
    - TRIGger:A:PULse:WIDth:LOWPASSfilter {ON|OFF}
    - TRIGger:A:PULse:WIDth:LOWPASSfilter?
    - TRIGger:A:PULse:WIDth:POLarity {NEGAtive|POSITIVe}
    - TRIGger:A:PULse:WIDth:POLarity:CH<x> {NEGAtive|POSITIVe}
    - TRIGger:A:PULse:WIDth:POLarity:CH<x>?
    - TRIGger:A:PULse:WIDth:POLarity?
    - TRIGger:A:PULse:WIDth:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:A:PULse:WIDth:QUAlify?
    - TRIGger:A:PULse:WIDth:WHEn {OUTside|WIThin}
    - TRIGger:A:PULse:WIDth:WHEn?
    - TRIGger:A:PULse:WIDth?
    - TRIGger:A:PULse:WINdow:EVENT {OUTSIDEGreater|INSIDEGreater|ENTERSWindow|EXITSWindow}
    - TRIGger:A:PULse:WINdow:EVENT?
    - TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x> {HIGH\LOW\X}
    - TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x>?
    - TRIGger:A:PULse:WINdow:LOGIc:INPUT? TRIGger:A:PULse:WINdow:LOGIcINPUT?
    - TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x> <NR3>
    - TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x>?
    - TRIGger:A:PULse:WINdow:LOGIc?
    - TRIGger:A:PULse:WINdow:POLarity {EITher|NEGAtive|POSITIVe}
    - TRIGger:A:PULse:WINdow:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
    - TRIGger:A:PULse:WINdow:POLarity:CH<x>?
    - TRIGger:A:PULse:WINdow:POLarity?
    - TRIGger:A:PULse:WINdow:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:A:PULse:WINdow:QUAlify?
    - TRIGger:A:PULse:WINdow:THReshold:BOTh {TTL|ECL}
    - TRIGger:A:PULse:WINdow:THReshold:HIGH <NR3>
    - TRIGger:A:PULse:WINdow:THReshold:HIGH?
    - TRIGger:A:PULse:WINdow:THReshold:LOW <NR3>
    - TRIGger:A:PULse:WINdow:THReshold:LOW?
    - TRIGger:A:PULse:WINdow:THReshold?
    - TRIGger:A:PULse:WINdow:TYPe {INSide|OUTside}
    - TRIGger:A:PULse:WINdow:TYPe?
    - TRIGger:A:PULse:WINdow:WHEn {LOGIc|OCCurs|WIDERthan}
    - TRIGger:A:PULse:WINdow:WHEn?
    - TRIGger:A:PULse:WINdow:WIDTH <NR3>
    - TRIGger:A:PULse:WINdow:WIDTH?
    - TRIGger:A:READY?
    - TRIGger:A:SERIAL:BITRate <NR3>
    - TRIGger:A:SERIAL:BITRate?
    - TRIGger:A:SERIAL:CLOCk:LEVel <NR3>
    - TRIGger:A:SERIAL:CLOCk:LEVel?
    - TRIGger:A:SERIAL:CLOCk:POLarity {RISe|FALL}
    - TRIGger:A:SERIAL:CLOCk:POLarity?
    - TRIGger:A:SERIAL:CLOCk:SOUrce {CH<x>|RECOVered}
    - TRIGger:A:SERIAL:CLOCk:SOUrce?
    - TRIGger:A:SERIAL:CODe {NRZ|S8B10B}
    - TRIGger:A:SERIAL:CODe?
    - TRIGger:A:SERIAL:DATa:FORMat {BINary|HEX}
    - TRIGger:A:SERIAL:DATa:FORMat?
    - TRIGger:A:SERIAL:DATa:PATtern <QString>
    - TRIGger:A:SERIAL:DATa:PATtern:NRZ <QString>
    - TRIGger:A:SERIAL:DATa:PATtern:NRZ?
    - TRIGger:A:SERIAL:DATa:PATtern:S8B10B <QString>
    - TRIGger:A:SERIAL:DATa:PATtern:S8B10B?
    - TRIGger:A:SERIAL:DATa:PATtern?
    - TRIGger:A:SERIAL:ERRORdetector:FILE:NAME <LBPT|LFTP|MFTP|HFTP|CJTP|NONE>
    - TRIGger:A:SERIAL:LOCKLen <NR1>
    - TRIGger:A:SERIAL:LOCKLen?
    - TRIGger:A:SERIAL:LOCKOffset <NR1>
    - TRIGger:A:SERIAL:LOCKOffset?
    - TRIGger:A:SERIAL:SOUrce {CH<x>}
    - TRIGger:A:SERIAL:SOUrce?
    - TRIGger:A:SERIAL:STANdard {FC133|FC266|FC531|FC1063|D<x>|VIDEO270|VIDEO360|OC1|OC3| OC12|ENET1250|FW1394BS400B|FW1394BS800B|CUSTom|ENET100FX| RIO_500M|RIO_750M|RIO_1G|RIO_SERIAL_1G|VSROC192|ENETXAUI| SAS3_?|PCIExpress|INFINIBAND|RIO_SERIAL_2G|RIO_SERIAL_3G| FC2125|RIO_2G|FW1394BS1600B|SAS1_5|ENETXAUI|ENETXAUI2| FC2125|FC4250|FW1394BS1600B|INFINIBAND|PCIExpress|PCIExpress2| RIO_2G|RIO_500M|RIO_750M|RIO_SERIAL_1G|RIO_SERIAL_2_5G| RIO_SERIAL_3G|SAS6_0|SATA1_5|SATA3_0|SATA6_0}
    - TRIGger:A:SERIAL:STANdard?
    - TRIGger:A:SERIAL:TRIGgeron {PATtern|LOck}
    - TRIGger:A:SERIAL:TRIGgeron?
    - TRIGger:A:SPI:CONDition {MISO|MOSI|MISOMOSI}
    - TRIGger:A:SPI:CONDition?
    - TRIGger:A:SPI:DATa:FORMat {BINary|HEX}
    - TRIGger:A:SPI:DATa:FORMat?
    - TRIGger:A:SPI:DATa:MISO:ACTIVE {HIGH|LOW}
    - TRIGger:A:SPI:DATa:MISO:ACTIVE?
    - TRIGger:A:SPI:DATa:MISO:LEVel <NR3>
    - TRIGger:A:SPI:DATa:MISO:LEVel?
    - TRIGger:A:SPI:DATa:MISO:SOUrce CH<x>
    - TRIGger:A:SPI:DATa:MISO:SOUrce?
    - TRIGger:A:SPI:DATa:MISO:VALue <QString>
    - TRIGger:A:SPI:DATa:MISO:VALue?
    - TRIGger:A:SPI:DATa:MOSI:ACTIVE {HIGH|LOW}
    - TRIGger:A:SPI:DATa:MOSI:ACTIVE?
    - TRIGger:A:SPI:DATa:MOSI:LEVel <NR3>
    - TRIGger:A:SPI:DATa:MOSI:LEVel?
    - TRIGger:A:SPI:DATa:MOSI:SOUrce CH<x>
    - TRIGger:A:SPI:DATa:MOSI:SOUrce?
    - TRIGger:A:SPI:DATa:MOSI:VALue <QString>
    - TRIGger:A:SPI:DATa:MOSI:VALue?
    - TRIGger:A:SPI:DATa:STARt <NR3>
    - TRIGger:A:SPI:DATa:STARt?
    - TRIGger:A:SPI:FORMat {BINary|HEX}
    - TRIGger:A:SPI:FORMat?
    - TRIGger:A:SPI:SCLK:ACTIVE {RISe|FALL}
    - TRIGger:A:SPI:SCLK:ACTIVE?
    - TRIGger:A:SPI:SCLK:LEVel <NR3>
    - TRIGger:A:SPI:SCLK:LEVel?
    - TRIGger:A:SPI:SCLK:SOUrce CH<x>
    - TRIGger:A:SPI:SCLK:SOUrce?
    - TRIGger:A:SPI:SS:ACTIVE {HIGH|LOW}
    - TRIGger:A:SPI:SS:ACTIVE?
    - TRIGger:A:SPI:SS:LEVel <NR3>
    - TRIGger:A:SPI:SS:LEVel?
    - TRIGger:A:SPI:SS:SOUrce CH<x>
    - TRIGger:A:SPI:SS:SOUrce?
    - TRIGger:A:TYPe {EDGE|LOGIc|PULse|VIDeo| I2C|CAN|SPI|COMMunication|SERIAL|RS232}}
    - TRIGger:A:TYPe?
    - TRIGger:A:UPPerthreshold:CH<x> {ECL|TTL|<NR3>}
    - TRIGger:A:UPPerthreshold:CH<x>?
    - TRIGger:A:VIDeo:CUSTom:FORMat {INTERLAced|PROGressive}
    - TRIGger:A:VIDeo:CUSTom:FORMat?
    - TRIGger:A:VIDeo:CUSTom:LINEPeriod <NR3>
    - TRIGger:A:VIDeo:CUSTom:LINEPeriod?
    - TRIGger:A:VIDeo:CUSTom:SYNCInterval <NR3>
    - TRIGger:A:VIDeo:CUSTom:SYNCInterval?
    - TRIGger:A:VIDeo:CUSTom?
    - TRIGger:A:VIDeo:FIELD {ODD|EVEN|FIELD<x>|ALLFields|ALLLines|NUMERic}
    - TRIGger:A:VIDeo:FIELD?
    - TRIGger:A:VIDeo:HOLdoff:FIELD <NR3>
    - TRIGger:A:VIDeo:HOLdoff:FIELD?
    - TRIGger:A:VIDeo:LINE <NR1>
    - TRIGger:A:VIDeo:LINE?
    - TRIGger:A:VIDeo:POLarity {INVERTed|NORMal}
    - TRIGger:A:VIDeo:POLarity?
    - TRIGger:A:VIDeo:SCAN {RATE<x>}
    - TRIGger:A:VIDeo:SCAN?
    - TRIGger:A:VIDeo:SOUrce CH<x>
    - TRIGger:A:VIDeo:SOUrce?
    - TRIGger:A:VIDeo:STANdard {BILevelcustom|TRILevelcustom|NTSc|PAL| SECAM|HD480P60|HD576P50|HD875I60|HD720P30|HD720P50| HD720P60|HD1080I50|HD1080I60|HD1080P24| HD1080P25|HD1080P30|HD1080P50|HD1080P60| HD1080SF24}
    - TRIGger:A:VIDeo:STANdard?
    - TRIGger:A:VIDeo?
    - TRIGger:A?
    - TRIGger:AUXLevel {<NR3>|ECL|TTL}
    - TRIGger:AUXLevel?
    - TRIGger:B SETLevel
    - TRIGger:B:BY {EVENTS|TIMe|ARMAtrigb}
    - TRIGger:B:BY?
    - TRIGger:B:EDGE:COUPling {AC|DC|HFRej|LFRej|NOISErej|ATRIGger}
    - TRIGger:B:EDGE:COUPling:CH<x> {AC|DC|HFRej|LFRej|NOISErej}
    - TRIGger:B:EDGE:COUPling:CH<x>?
    - TRIGger:B:EDGE:COUPling?
    - TRIGger:B:EDGE:SLOpe {RISe|FALL|EITher}
    - TRIGger:B:EDGE:SLOpe:AUX {RISe|FALL|EITHER}
    - TRIGger:B:EDGE:SLOpe:AUX?
    - TRIGger:B:EDGE:SLOpe:CH<x> {RISe|FALL|EITher}
    - TRIGger:B:EDGE:SLOpe:CH<x>?
    - TRIGger:B:EDGE:SLOpe?
    - TRIGger:B:EDGE:SOUrce {AUXiliary|CH<x>|MCH<x>|LINE|D<x>}
    - TRIGger:B:EDGE:SOUrce?
    - TRIGger:B:EDGE?
    - TRIGger:B:EVENTS:COUNt <NR1>
    - TRIGger:B:EVENTS:COUNt?
    - TRIGger:B:EVENTS?
    - TRIGger:B:LEVel {ECL|TTL|<NR3>}
    - TRIGger:B:LEVel:CH<x> {ECL|TTL|<NR3>}
    - TRIGger:B:LEVel:CH<x>?
    - TRIGger:B:LEVel?
    - TRIGger:B:LOGIc:CLAss {PATtern|STATE|SETHold}
    - TRIGger:B:LOGIc:CLAss?
    - TRIGger:B:LOGIc:FUNCtion {AND|NANd|NOR|OR}
    - TRIGger:B:LOGIc:FUNCtion?
    - TRIGger:B:LOGIc:INPut:ALL <QString>
    - TRIGger:B:LOGIc:INPut:ALL?
    - TRIGger:B:LOGIc:INPut:CH<x> {HIGH|LOW|X}
    - TRIGger:B:LOGIc:INPut:CH<x>?
    - TRIGger:B:LOGIc:INPut:FORMat {HEXadecimal|BINary}
    - TRIGger:B:LOGIc:INPut:FORMat?
    - TRIGger:B:LOGIc:INPut?
    - TRIGger:B:LOGIc:PATtern:INPut:CH<x> {HIGH|LOW|X}
    - TRIGger:B:LOGIc:PATtern:INPut:CH<x>?
    - TRIGger:B:LOGIc:PATtern:WHEn {TRUe|FALSe|LESSThan|MOREThan}
    - TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit <NR3>
    - TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit?
    - TRIGger:B:LOGIc:PATtern:WHEn:MORELimit <NR3>
    - TRIGger:B:LOGIc:PATtern:WHEn:MORELimit?
    - TRIGger:B:LOGIc:PATtern:WHEn?
    - TRIGger:B:LOGIc:PATtern?
    - TRIGger:B:LOGIc:SETHold:CLOCk:EDGE {FALL|RISe}
    - TRIGger:B:LOGIc:SETHold:CLOCk:EDGE?
    - TRIGger:B:LOGIc:SETHold:CLOCk:LEVel {ECL|TTL|<NR3>}
    - TRIGger:B:LOGIc:SETHold:CLOCk:LEVel?
    - TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce CH<x>
    - TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce?
    - TRIGger:B:LOGIc:SETHold:CLOCk:THReshold {ECL|TTL|<NR3>}
    - TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x> {ECL|TTL|<NR3>}
    - TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x>?
    - TRIGger:B:LOGIc:SETHold:CLOCk:THReshold?
    - TRIGger:B:LOGIc:SETHold:CLOCk?
    - TRIGger:B:LOGIc:SETHold:DATa:LEVel {ECL|TTL|<NR3>}
    - TRIGger:B:LOGIc:SETHold:DATa:LEVel?
    - TRIGger:B:LOGIc:SETHold:DATa:SOUrce CH<x>
    - TRIGger:B:LOGIc:SETHold:DATa:SOUrce?
    - TRIGger:B:LOGIc:SETHold:DATa:THReshold {ECL|TTL|<NR3>}
    - TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x> {ECL|TTL|<NR3>}
    - TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x>?
    - TRIGger:B:LOGIc:SETHold:DATa:THReshold?
    - TRIGger:B:LOGIc:SETHold:DATa?
    - TRIGger:B:LOGIc:SETHold:HOLDTime <NR3>
    - TRIGger:B:LOGIc:SETHold:HOLDTime?
    - TRIGger:B:LOGIc:SETHold:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:B:LOGIc:SETHold:QUAlify?
    - TRIGger:B:LOGIc:SETHold:SETTime <NR3>
    - TRIGger:B:LOGIc:SETHold:SETTime?
    - TRIGger:B:LOGIc:SETHold?
    - TRIGger:B:LOGIc:STATE:CLOck:SOUrce {CH4|CQ}
    - TRIGger:B:LOGIc:STATE:CLOck:SOUrce?
    - TRIGger:B:LOGIc:STATE:INPut:CH<x> {FALL|RISe}
    - TRIGger:B:LOGIc:STATE:INPut:CH<x>?
    - TRIGger:B:LOGIc:STATE:WHEn {TRUe|FALSe}
    - TRIGger:B:LOGIc:STATE:WHEn?
    - TRIGger:B:LOGIc:STATE?
    - TRIGger:B:LOGIc:THReshold:CH<x> <NR3>
    - TRIGger:B:LOGIc:THReshold:CH<x>?
    - TRIGger:B:LOGIc:THReshold?
    - TRIGger:B:LOGIc?
    - TRIGger:B:LOWerthreshold:CH<x> {ECL|TTL|<NR3>}
    - TRIGger:B:LOWerthreshold:CH<x>?
    - TRIGger:B:PULse:CLAss {GLItch|RUNT|WIDth| TRANsition|TIMEOut|WINdow}
    - TRIGger:B:PULse:CLAss?
    - TRIGger:B:PULse:GLItch:FILTer {ACCept|REJect}
    - TRIGger:B:PULse:GLItch:FILTer?
    - TRIGger:B:PULse:GLItch:LOWPASSfilter {ON|OFF}
    - TRIGger:B:PULse:GLItch:LOWPASSfilter?
    - TRIGger:B:PULse:GLItch:POLarity {POSITIVe|NEGAtive|EITher}
    - TRIGger:B:PULse:GLItch:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
    - TRIGger:B:PULse:GLItch:POLarity:CH<x>?
    - TRIGger:B:PULse:GLItch:POLarity?
    - TRIGger:B:PULse:GLItch:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:B:PULse:GLItch:QUAlify?
    - TRIGger:B:PULse:GLItch:TRIGIF {ACCept|REJect}
    - TRIGger:B:PULse:GLItch:TRIGIF?
    - TRIGger:B:PULse:GLItch:WIDth <NR3>
    - TRIGger:B:PULse:GLItch:WIDth?
    - TRIGger:B:PULse:GLItch?
    - TRIGger:B:PULse:PERiod:HIGHLimit <NR3>
    - TRIGger:B:PULse:PERiod:HIGHLimit?
    - TRIGger:B:PULse:PERiod:LOWLimit <NR3>
    - TRIGger:B:PULse:PERiod:LOWLimit?
    - TRIGger:B:PULse:PERiod:POLarity {NEGAtive|POSITIVe}
    - TRIGger:B:PULse:PERiod:POLarity?
    - TRIGger:B:PULse:PERiod:QUAlify {OCCurs | LOGIC | BUS}
    - TRIGger:B:PULse:PERiod:QUAlify?
    - TRIGger:B:PULse:PERiod:VIEW {PERiod|FREQuency}
    - TRIGger:B:PULse:PERiod:VIEW?
    - TRIGger:B:PULse:PERiod:WHEn {LESSthan | GREATerthan | WITHin | OUTside}
    - TRIGger:B:PULse:PERiod:WHEn?
    - TRIGger:B:PULse:PERiod?
    - TRIGger:B:PULse:RUNT:POLarity {POSITIVe|NEGAtive|EITher}
    - TRIGger:B:PULse:RUNT:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
    - TRIGger:B:PULse:RUNT:POLarity:CH<x>?
    - TRIGger:B:PULse:RUNT:POLarity?
    - TRIGger:B:PULse:RUNT:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:B:PULse:RUNT:QUAlify?
    - TRIGger:B:PULse:RUNT:THReshold:BOTh {TTL|ECL}
    - TRIGger:B:PULse:RUNT:THReshold:HIGH <NR3>
    - TRIGger:B:PULse:RUNT:THReshold:HIGH?
    - TRIGger:B:PULse:RUNT:THReshold:LOW <NR3>
    - TRIGger:B:PULse:RUNT:THReshold:LOW?
    - TRIGger:B:PULse:RUNT:THReshold?
    - TRIGger:B:PULse:RUNT:WHEn {OCCurs|WIDERthan}
    - TRIGger:B:PULse:RUNT:WHEn?
    - TRIGger:B:PULse:RUNT:WIDth <NR3>
    - TRIGger:B:PULse:RUNT:WIDth?
    - TRIGger:B:PULse:RUNT?
    - TRIGger:B:PULse:SOUrce {CH<x>|D<x>|MCH<x>}
    - TRIGger:B:PULse:SOUrce?
    - TRIGger:B:PULse:TIMEOut:LOWPASSfilter {ON|OFF}
    - TRIGger:B:PULse:TIMEOut:LOWPASSfilter?
    - TRIGger:B:PULse:TIMEOut:POLarity {STAYSHigh|STAYSLow|EITher}
    - TRIGger:B:PULse:TIMEOut:POLarity:CH<x> {STAYSHigh|STAYSLow|EITher}
    - TRIGger:B:PULse:TIMEOut:POLarity:CH<x>?
    - TRIGger:B:PULse:TIMEOut:POLarity?
    - TRIGger:B:PULse:TIMEOut:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:B:PULse:TIMEOut:QUAlify?
    - TRIGger:B:PULse:TIMEOut:TIMe <NR3>
    - TRIGger:B:PULse:TIMEOut:TIMe?
    - TRIGger:B:PULse:TIMEOut?
    - TRIGger:B:PULse:TRANsition:DELTATime <NR3>
    - TRIGger:B:PULse:TRANsition:DELTATime?
    - TRIGger:B:PULse:TRANsition:POLarity {POSITIVe|NEGAtive|EITher}
    - TRIGger:B:PULse:TRANsition:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
    - TRIGger:B:PULse:TRANsition:POLarity:CH<x>?
    - TRIGger:B:PULse:TRANsition:POLarity?
    - TRIGger:B:PULse:TRANsition:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:B:PULse:TRANsition:QUAlify?
    - TRIGger:B:PULse:TRANsition:THReshold:BOTh {TTL|ECL}
    - TRIGger:B:PULse:TRANsition:THReshold:HIGH <NR3>
    - TRIGger:B:PULse:TRANsition:THReshold:HIGH?
    - TRIGger:B:PULse:TRANsition:THReshold:LOW <NR3>
    - TRIGger:B:PULse:TRANsition:THReshold:LOW?
    - TRIGger:B:PULse:TRANsition:THReshold?
    - TRIGger:B:PULse:TRANsition:WHEn {FASTERthan|SLOWERthan}
    - TRIGger:B:PULse:TRANsition:WHEn?
    - TRIGger:B:PULse:TRANsition?
    - TRIGger:B:PULse:WIDth:HIGHLimit <NR3>
    - TRIGger:B:PULse:WIDth:HIGHLimit?
    - TRIGger:B:PULse:WIDth:LOWLimit <NR3>
    - TRIGger:B:PULse:WIDth:LOWLimit?
    - TRIGger:B:PULse:WIDth:LOWPASSfilter {ON|OFF}
    - TRIGger:B:PULse:WIDth:LOWPASSfilter?
    - TRIGger:B:PULse:WIDth:POLarity {NEGAtive|POSITIVe}
    - TRIGger:B:PULse:WIDth:POLarity:CH<x> {NEGAtive|POSITIVe}
    - TRIGger:B:PULse:WIDth:POLarity:CH<x>?
    - TRIGger:B:PULse:WIDth:POLarity?
    - TRIGger:B:PULse:WIDth:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:B:PULse:WIDth:QUAlify?
    - TRIGger:B:PULse:WIDth:WHEn {OUTside|WIThin}
    - TRIGger:B:PULse:WIDth:WHEn?
    - TRIGger:B:PULse:WIDth?
    - TRIGger:B:PULse:WINdow:EVENT {OUTSIDEGreater|INSIDEGreater|ENTERSWindow|EXITSWindow}
    - TRIGger:B:PULse:WINdow:EVENT?
    - TRIGger:B:PULse:WINdow:POLarity {EITher|NEGAtive|POSITIVe}
    - TRIGger:B:PULse:WINdow:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
    - TRIGger:B:PULse:WINdow:POLarity:CH<x>?
    - TRIGger:B:PULse:WINdow:POLarity?
    - TRIGger:B:PULse:WINdow:QUAlify {OCCurs|LOGIc|BUS}
    - TRIGger:B:PULse:WINdow:QUAlify?
    - TRIGger:B:PULse:WINdow:THReshold:BOTh {TTL|ECL}
    - TRIGger:B:PULse:WINdow:THReshold:HIGH <NR3>
    - TRIGger:B:PULse:WINdow:THReshold:HIGH?
    - TRIGger:B:PULse:WINdow:THReshold:LOW <NR3>
    - TRIGger:B:PULse:WINdow:THReshold:LOW?
    - TRIGger:B:PULse:WINdow:THReshold?
    - TRIGger:B:PULse:WINdow:TYPe {INSide|OUTside}
    - TRIGger:B:PULse:WINdow:TYPe?
    - TRIGger:B:PULse:WINdow:WHEn {OCCurs|WIDERthan}
    - TRIGger:B:PULse:WINdow:WHEn?
    - TRIGger:B:PULse:WINdow:WIDTH <NR3>
    - TRIGger:B:PULse:WINdow:WIDTH?
    - TRIGger:B:READY?
    - TRIGger:B:RESET:ACCEPTCOUNT?
    - TRIGger:B:RESET:ACCEPTTIMEout <NR3>
    - TRIGger:B:RESET:ACCEPTTIMEout?
    - TRIGger:B:RESET:RATIO?
    - TRIGger:B:RESET:RATIOENable <ON/OFF>
    - TRIGger:B:RESET:RATIOENable?
    - TRIGger:B:RESET:REJECTCOUNT?
    - TRIGger:B:RESET:REJECTTIMEout <NR3>
    - TRIGger:B:RESET:REJECTTIMEout?
    - TRIGger:B:RESET:SOUrce {CH<x>|AUXiliary}
    - TRIGger:B:RESET:SOUrce?
    - TRIGger:B:RESET:STATE {HIGH|LOW}
    - TRIGger:B:RESET:STATE?
    - TRIGger:B:RESET:THReshold {ECL|TTL|<NR3>}
    - TRIGger:B:RESET:THReshold?
    - TRIGger:B:RESET:TIMEOut <NR3>
    - TRIGger:B:RESET:TIMEOut?
    - TRIGger:B:RESET:TOTALCOUNT?
    - TRIGger:B:RESET:TRANsition {RISe|FALL}
    - TRIGger:B:RESET:TRANsition?
    - TRIGger:B:RESET:TYPe {NONe|TIMEOut|STATE|TRANsition|ACCepts|REJects}
    - TRIGger:B:RESET:TYPe?
    - TRIGger:B:SCAN:ADVANCEafter <NR1>
    - TRIGger:B:SCAN:ADVANCEafter?
    - TRIGger:B:SCAN:ENAble {ON|OFF}
    - TRIGger:B:SCAN:ENAble?
    - TRIGger:B:SCAN:ENDevent <NR1>
    - TRIGger:B:SCAN:ENDevent?
    - TRIGger:B:SCAN:MODE {SEQUENTIAL|RANDOM|TOGGLE}
    - TRIGger:B:SCAN:MODE?
    - TRIGger:B:SCAN:STARTevent <NR1>
    - TRIGger:B:SCAN:STARTevent?
    - TRIGger:B:STATE {ON|OFF|<NR1>}
    - TRIGger:B:STATE?
    - TRIGger:B:TIMe <NR3>
    - TRIGger:B:TIMe?
    - TRIGger:B:TYPe {EDGE|LOGIc|PULse|VIDeo| I2C|CAN|SPI|COMMunication|SERIAL|RS232}}
    - TRIGger:B:TYPe?
    - TRIGger:B:UPPerthreshold:CH<x> {ECL|TTL|<NR3>}
    - TRIGger:B:UPPerthreshold:CH<x>?
    - TRIGger:ENHanced {<NR1>|OFF|ON}
    - TRIGger:ENHanced?
    - TRIGger:EQUation<x> <string>
    - TRIGger:EQUation<x>?
    - TRIGger:LVLSrcpreference {SRCDependent|SRCIndependent}
    - TRIGger:LVLSrcpreference?
    - TRIGger:MAIn:PULse:GLItch:LOWPASSfilter {}
    - TRIGger:MAIn:PULse:GLItch:LOWPASSfilter?
    - TRIGger:MAIn:PULse:WINdow:POLarity {EITher|NEGAtive|POSITIVe}
    - TRIGger:MAIn:PULse:WINdow:POLarity?
    - TRIGger:MULTiscope {DISable|ENable}
    - TRIGger:MULTiscope:ALIGN
    - TRIGger:MULTiscope:ALIGN:COMPleted?
    - TRIGger:MULTiscope:ALIGN:DESKEW?
    - TRIGger:MULTiscope:ALIGN:MRTTime
    - TRIGger:MULTiscope:ALIGN:MRTTime?
    - TRIGger:MULTiscope:ALIGN:SETSTATE {START|STOP|WAIT|DONE}
    - TRIGger:MULTiscope:ALIGN:SETSTATE?
    - TRIGger:MULTiscope:ALIGN:VALue?
    - TRIGger:MULTiscope:DELay?
    - TRIGger:MULTiscope:LOGic {AND|OR}
    - TRIGger:MULTiscope:LOGic?
    - TRIGger:MULTiscope:OPTion {AND|OR}
    - TRIGger:MULTiscope:OPTion?
    - TRIGger:MULTiscope:ROLe {PRODucer|CONSumer|NONe}
    - TRIGger:MULTiscope:ROLe?
    - TRIGger:MULTiscope?
    - TRIGger:QUALification:BUS:FORMat {BINary|HEX|SYMBolic}
    - TRIGger:QUALification:BUS:FORMat?
    - TRIGger:QUALification:BUS:SOUrce {B<x>}
    - TRIGger:QUALification:BUS:SOUrce?
    - TRIGger:QUALification:BUS:VALue <String>
    - TRIGger:QUALification:BUS:VALue?
    - TRIGger:SENSITivity {<NR1>|OFF|ON}
    - TRIGger:SENSITivity?
    - TRIGger:SHOWEQuation {ON|OFF}
    - TRIGger:SHOWEQuation?
    - TRIGger:STATE?
    - TRIGger?
"""  # noqa: E501
from typing import Dict, Optional, TYPE_CHECKING

from .._helpers import (
    DefaultDictPassKeyToFactory,
    SCPICmdRead,
    SCPICmdReadWithArguments,
    SCPICmdWrite,
    SCPICmdWriteNoArguments,
    ValidatedChannel,
    ValidatedDynamicNumberCmd,
)

if TYPE_CHECKING:
    from tm_devices.drivers.pi.pi_device import PIDevice


class TriggerState(SCPICmdRead):
    """The ``TRIGger:STATE`` command.

    **Description:**
        - This query-only command returns the current state of the triggering system.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:STATE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:STATE?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:STATE?
    """


class TriggerShowequation(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:SHOWEQuation`` command.

    **Description:**
        - Causes the Visual Trigger Equation to be displayed in the upper left portion of the
          oscilloscope graticule.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:SHOWEQuation?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:SHOWEQuation?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:SHOWEQuation value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:SHOWEQuation {ON|OFF}
        - TRIGger:SHOWEQuation?

    **Info:**
        - ``ON`` causes the equation to appear on screen.
        - ``Off`` hides the equation.
    """


class TriggerSensitivity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:SENSITivity`` command.

    **Description:**
        - This command set or queries the state of trigger sensitivity. When on, the instrument
          calculates a rolling average for trigger position enhancement to suppress trigger jitter
          in noisy signals. This is equivalent to selecting Higher Sensitivity for Noisy Signals
          from the Trigger Mode menu. This is available only when ``TRIGGER:ENHANCED`` or the
          equivalent check box control is also on.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:SENSITivity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:SENSITivity?`` query and raise
          an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:SENSITivity value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:SENSITivity {<NR1>|OFF|ON}
        - TRIGger:SENSITivity?

    **Info:**
        - ``<NR1>`` = 0 disables rolling averaging, any other value enables rolling averaging for
          trigger position enhancement.
        - ``OFF`` disables rolling averaging for trigger position enhancement.
        - ``ON`` enables rolling averaging for trigger position enhancement.
    """


class TriggerQualificationBusValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:QUALification:BUS:VALue`` command.

    **Description:**
        - This command sets or queries the bit pattern for the bus qualification. The command is
          available only when the Trigger Type is set to Glitch, Runt, Setup/Hold, Timeout,
          Transition, Width, or Window and the trigger qualification is set to Occurs And. The
          pattern assigned is in the order D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 Ch1
          Ch2 Ch3 Ch4.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:QUALification:BUS:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:QUALification:BUS:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:QUALification:BUS:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:QUALification:BUS:VALue <String>
        - TRIGger:QUALification:BUS:VALue?

    **Info:**
        - ``<String>`` sets the bus value.
    """


class TriggerQualificationBusSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:QUALification:BUS:SOUrce`` command.

    **Description:**
        - This command sets or queries the source for the bus qualification. The command is
          available only when the Trigger Type is set to Glitch, Runt, Setup/Hold, Timeout,
          Transition, Width, or Window and the trigger qualification is set to Occurs And.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:QUALification:BUS:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:QUALification:BUS:SOUrce?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:QUALification:BUS:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:QUALification:BUS:SOUrce {B<x>}
        - TRIGger:QUALification:BUS:SOUrce?

    **Info:**
        - ``B<x>`` specifies the bus source from B0 to B16. x has a minimum of 0 and a maximum of
          16.
    """


class TriggerQualificationBusFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:QUALification:BUS:FORMat`` command.

    **Description:**
        - This command sets or queries the format of the bit pattern for the bus qualification. The
          command is available only when the Trigger Type is set to Glitch, Runt, Setup/Hold,
          Timeout, Transition, Width, or Window and the trigger qualification is set to Occurs And.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:QUALification:BUS:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:QUALification:BUS:FORMat?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:QUALification:BUS:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:QUALification:BUS:FORMat {BINary|HEX|SYMBolic}
        - TRIGger:QUALification:BUS:FORMat?

    **Info:**
        - ``BINary`` specifies the pattern format as binary.
        - ``HEX`` specifies the pattern format as hexadecimal.
        - ``SYMBolic`` specifies the pattern format as symbolic.
    """


class TriggerQualificationBus(SCPICmdRead):
    """The ``TRIGger:QUALification:BUS`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:QUALification:BUS?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:QUALification:BUS?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:QUALification:BUS:FORMat`` command.
        - ``.source``: The ``TRIGger:QUALification:BUS:SOUrce`` command.
        - ``.value``: The ``TRIGger:QUALification:BUS:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerQualificationBusFormat(device, f"{self._cmd_syntax}:FORMat")
        self._source = TriggerQualificationBusSource(device, f"{self._cmd_syntax}:SOUrce")
        self._value = TriggerQualificationBusValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerQualificationBusFormat:
        """Return the ``TRIGger:QUALification:BUS:FORMat`` command.

        **Description:**
            - This command sets or queries the format of the bit pattern for the bus qualification.
              The command is available only when the Trigger Type is set to Glitch, Runt,
              Setup/Hold, Timeout, Transition, Width, or Window and the trigger qualification is set
              to Occurs And.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:QUALification:BUS:FORMat?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:QUALification:BUS:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:QUALification:BUS:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:QUALification:BUS:FORMat {BINary|HEX|SYMBolic}
            - TRIGger:QUALification:BUS:FORMat?

        **Info:**
            - ``BINary`` specifies the pattern format as binary.
            - ``HEX`` specifies the pattern format as hexadecimal.
            - ``SYMBolic`` specifies the pattern format as symbolic.
        """
        return self._format

    @property
    def source(self) -> TriggerQualificationBusSource:
        """Return the ``TRIGger:QUALification:BUS:SOUrce`` command.

        **Description:**
            - This command sets or queries the source for the bus qualification. The command is
              available only when the Trigger Type is set to Glitch, Runt, Setup/Hold, Timeout,
              Transition, Width, or Window and the trigger qualification is set to Occurs And.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:QUALification:BUS:SOUrce?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:QUALification:BUS:SOUrce?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:QUALification:BUS:SOUrce value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:QUALification:BUS:SOUrce {B<x>}
            - TRIGger:QUALification:BUS:SOUrce?

        **Info:**
            - ``B<x>`` specifies the bus source from B0 to B16. x has a minimum of 0 and a maximum
              of 16.
        """
        return self._source

    @property
    def value(self) -> TriggerQualificationBusValue:
        """Return the ``TRIGger:QUALification:BUS:VALue`` command.

        **Description:**
            - This command sets or queries the bit pattern for the bus qualification. The command is
              available only when the Trigger Type is set to Glitch, Runt, Setup/Hold, Timeout,
              Transition, Width, or Window and the trigger qualification is set to Occurs And. The
              pattern assigned is in the order D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
              Ch1 Ch2 Ch3 Ch4.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:QUALification:BUS:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:QUALification:BUS:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:QUALification:BUS:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:QUALification:BUS:VALue <String>
            - TRIGger:QUALification:BUS:VALue?

        **Info:**
            - ``<String>`` sets the bus value.
        """
        return self._value


class TriggerQualification(SCPICmdRead):
    """The ``TRIGger:QUALification`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:QUALification?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:QUALification?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.bus``: The ``TRIGger:QUALification:BUS`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._bus = TriggerQualificationBus(device, f"{self._cmd_syntax}:BUS")

    @property
    def bus(self) -> TriggerQualificationBus:
        """Return the ``TRIGger:QUALification:BUS`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:QUALification:BUS?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:QUALification:BUS?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:QUALification:BUS:FORMat`` command.
            - ``.source``: The ``TRIGger:QUALification:BUS:SOUrce`` command.
            - ``.value``: The ``TRIGger:QUALification:BUS:VALue`` command.
        """
        return self._bus


class TriggerMultiscopeRole(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:MULTiscope:ROLe`` command.

    **Description:**
        - This command sets or queries the role of the instrument in the MultiScope trigger network.
          PRODUCER means that the instrument will both contribute and use the MultiScope trigger. If
          there is no hub, this makes the local instrument the master. CONSUMER means that the
          trigger in from the MultiScope network is used (rather than an internal trigger). This
          applies to a network with or without a hub.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:ROLe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:ROLe?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:MULTiscope:ROLe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:MULTiscope:ROLe {PRODucer|CONSumer|NONe}
        - TRIGger:MULTiscope:ROLe?

    **Info:**
        - ``PRODucer`` sets the instrument to both contribute and use the MultiScope trigger.
        - ``CONSumer`` sets the instrument to use the MultiScope trigger.
        - ``NONe`` takes the instrument off the MultiScope trigger network.
    """


class TriggerMultiscopeOption(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:MULTiscope:OPTion`` command.

    **Description:**
        - This command sets or queries the trigger type for the TekLink trigger. This will cause the
          instrument to set the hub and all instruments participating to either AND or OR
          triggering.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:OPTion?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:OPTion?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:MULTiscope:OPTion value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:MULTiscope:OPTion {AND|OR}
        - TRIGger:MULTiscope:OPTion?

    **Info:**
        - ``AND`` sets the hub and all participating instruments to AND triggering.
        - ``OR`` sets the hub and all participating instruments to OR triggering.
    """


class TriggerMultiscopeLogic(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:MULTiscope:LOGic`` command.

    **Description:**
        - This command sets or queries the TekLink trigger configuration when the TekLink network
          connection is HUB.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:LOGic?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:LOGic?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:MULTiscope:LOGic value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:MULTiscope:LOGic {AND|OR}
        - TRIGger:MULTiscope:LOGic?

    **Info:**
        - ``AND`` sets the hub and all participating instruments to AND triggering configuration.
        - ``OR`` sets the hub and all participating instruments to OR triggering configuration.
    """


class TriggerMultiscopeDelay(SCPICmdRead):
    """The ``TRIGger:MULTiscope:DELay`` command.

    **Description:**
        - This command queries the delay time in nanoseconds, for trigger out of the TekLink trigger
          out line.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:DELay?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:DELay?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:MULTiscope:DELay?
    """


class TriggerMultiscopeAlignValue(SCPICmdRead):
    """The ``TRIGger:MULTiscope:ALIGN:VALue`` command.

    **Description:**
        - This command returns the time interval result from the ``TRIGGER:MULTISCOPE:ALIGN``
          command. Round trip time, trigger out to trigger in.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:ALIGN:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:ALIGN:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:MULTiscope:ALIGN:VALue?
    """


class TriggerMultiscopeAlignSetstate(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:MULTiscope:ALIGN:SETSTATE`` command.

    **Description:**
        - This command causes the instrument to measure the round trip time between sending a
          trigger out the TekLink port and receiving the trigger pulse back from the port.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:ALIGN:SETSTATE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:ALIGN:SETSTATE?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:MULTiscope:ALIGN:SETSTATE value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:MULTiscope:ALIGN:SETSTATE {START|STOP|WAIT|DONE}
        - TRIGger:MULTiscope:ALIGN:SETSTATE?

    **Info:**
        - ``START`` begins calibration.
        - ``STOP`` ends calibration.
        - ``WAIT`` postpones calibration.
        - ``DONE`` indicates that the calibration is complete.
    """


class TriggerMultiscopeAlignMrttime(SCPICmdWriteNoArguments, SCPICmdRead):
    """The ``TRIGger:MULTiscope:ALIGN:MRTTime`` command.

    **Description:**
        - This command returns or sends the maximum round trip time to each of the instruments in a
          calibration cycle.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:ALIGN:MRTTime?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:ALIGN:MRTTime?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write()`` method will send the ``TRIGger:MULTiscope:ALIGN:MRTTime`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:MULTiscope:ALIGN:MRTTime
        - TRIGger:MULTiscope:ALIGN:MRTTime?
    """


class TriggerMultiscopeAlignDeskew(SCPICmdRead):
    """The ``TRIGger:MULTiscope:ALIGN:DESKEW`` command.

    **Description:**
        - This command sets or queries the deskew time in nanoseconds, for horizontal positioning of
          the waveform.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:ALIGN:DESKEW?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:ALIGN:DESKEW?``
          query and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:MULTiscope:ALIGN:DESKEW?
    """


class TriggerMultiscopeAlignCompleted(SCPICmdRead):
    """The ``TRIGger:MULTiscope:ALIGN:COMPleted`` command.

    **Description:**
        - This command returns whether the oscilloscope has successfully completed the MultiScope
          trigger align procedure.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:ALIGN:COMPleted?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:ALIGN:COMPleted?``
          query and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:MULTiscope:ALIGN:COMPleted?
    """


class TriggerMultiscopeAlign(SCPICmdWriteNoArguments, SCPICmdRead):
    """The ``TRIGger:MULTiscope:ALIGN`` command.

    **Description:**
        - This command starts the TekLink trigger alignment procedure on all oscilloscopes which are
          participating in MultiScope triggering. For this command to have any effect, the
          instrument must be participating in MultiScope triggering. Other instruments on the
          TekLink network are not affected.

    **Usage:**
        - Using the ``.write()`` method will send the ``TRIGger:MULTiscope:ALIGN`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:MULTiscope:ALIGN

    Properties:
        - ``.completed``: The ``TRIGger:MULTiscope:ALIGN:COMPleted`` command.
        - ``.deskew``: The ``TRIGger:MULTiscope:ALIGN:DESKEW`` command.
        - ``.mrttime``: The ``TRIGger:MULTiscope:ALIGN:MRTTime`` command.
        - ``.setstate``: The ``TRIGger:MULTiscope:ALIGN:SETSTATE`` command.
        - ``.value``: The ``TRIGger:MULTiscope:ALIGN:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._completed = TriggerMultiscopeAlignCompleted(device, f"{self._cmd_syntax}:COMPleted")
        self._deskew = TriggerMultiscopeAlignDeskew(device, f"{self._cmd_syntax}:DESKEW")
        self._mrttime = TriggerMultiscopeAlignMrttime(device, f"{self._cmd_syntax}:MRTTime")
        self._setstate = TriggerMultiscopeAlignSetstate(device, f"{self._cmd_syntax}:SETSTATE")
        self._value = TriggerMultiscopeAlignValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def completed(self) -> TriggerMultiscopeAlignCompleted:
        """Return the ``TRIGger:MULTiscope:ALIGN:COMPleted`` command.

        **Description:**
            - This command returns whether the oscilloscope has successfully completed the
              MultiScope trigger align procedure.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:ALIGN:COMPleted?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:MULTiscope:ALIGN:COMPleted?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:MULTiscope:ALIGN:COMPleted?
        """
        return self._completed

    @property
    def deskew(self) -> TriggerMultiscopeAlignDeskew:
        """Return the ``TRIGger:MULTiscope:ALIGN:DESKEW`` command.

        **Description:**
            - This command sets or queries the deskew time in nanoseconds, for horizontal
              positioning of the waveform.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:ALIGN:DESKEW?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:ALIGN:DESKEW?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:MULTiscope:ALIGN:DESKEW?
        """
        return self._deskew

    @property
    def mrttime(self) -> TriggerMultiscopeAlignMrttime:
        """Return the ``TRIGger:MULTiscope:ALIGN:MRTTime`` command.

        **Description:**
            - This command returns or sends the maximum round trip time to each of the instruments
              in a calibration cycle.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:ALIGN:MRTTime?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:MULTiscope:ALIGN:MRTTime?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write()`` method will send the ``TRIGger:MULTiscope:ALIGN:MRTTime``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:MULTiscope:ALIGN:MRTTime
            - TRIGger:MULTiscope:ALIGN:MRTTime?
        """
        return self._mrttime

    @property
    def setstate(self) -> TriggerMultiscopeAlignSetstate:
        """Return the ``TRIGger:MULTiscope:ALIGN:SETSTATE`` command.

        **Description:**
            - This command causes the instrument to measure the round trip time between sending a
              trigger out the TekLink port and receiving the trigger pulse back from the port.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:ALIGN:SETSTATE?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:MULTiscope:ALIGN:SETSTATE?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:MULTiscope:ALIGN:SETSTATE value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:MULTiscope:ALIGN:SETSTATE {START|STOP|WAIT|DONE}
            - TRIGger:MULTiscope:ALIGN:SETSTATE?

        **Info:**
            - ``START`` begins calibration.
            - ``STOP`` ends calibration.
            - ``WAIT`` postpones calibration.
            - ``DONE`` indicates that the calibration is complete.
        """
        return self._setstate

    @property
    def value(self) -> TriggerMultiscopeAlignValue:
        """Return the ``TRIGger:MULTiscope:ALIGN:VALue`` command.

        **Description:**
            - This command returns the time interval result from the ``TRIGGER:MULTISCOPE:ALIGN``
              command. Round trip time, trigger out to trigger in.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:ALIGN:VALue?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:ALIGN:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:MULTiscope:ALIGN:VALue?
        """
        return self._value


class TriggerMultiscope(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:MULTiscope`` command.

    **Description:**
        - This command sets or queries the state of MultiScope triggering, either ENABle or DISable.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MULTiscope?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope?`` query and raise
          an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:MULTiscope value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:MULTiscope {DISable|ENable}
        - TRIGger:MULTiscope?

    **Info:**
        - ``DISable`` sets the MultiScope triggering state to disabled.
        - ``ENable`` sets the MultiScope triggering state to enabled.

    Properties:
        - ``.align``: The ``TRIGger:MULTiscope:ALIGN`` command.
        - ``.delay``: The ``TRIGger:MULTiscope:DELay`` command.
        - ``.logic``: The ``TRIGger:MULTiscope:LOGic`` command.
        - ``.option``: The ``TRIGger:MULTiscope:OPTion`` command.
        - ``.role``: The ``TRIGger:MULTiscope:ROLe`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._align = TriggerMultiscopeAlign(device, f"{self._cmd_syntax}:ALIGN")
        self._delay = TriggerMultiscopeDelay(device, f"{self._cmd_syntax}:DELay")
        self._logic = TriggerMultiscopeLogic(device, f"{self._cmd_syntax}:LOGic")
        self._option = TriggerMultiscopeOption(device, f"{self._cmd_syntax}:OPTion")
        self._role = TriggerMultiscopeRole(device, f"{self._cmd_syntax}:ROLe")

    @property
    def align(self) -> TriggerMultiscopeAlign:
        """Return the ``TRIGger:MULTiscope:ALIGN`` command.

        **Description:**
            - This command starts the TekLink trigger alignment procedure on all oscilloscopes which
              are participating in MultiScope triggering. For this command to have any effect, the
              instrument must be participating in MultiScope triggering. Other instruments on the
              TekLink network are not affected.

        **Usage:**
            - Using the ``.write()`` method will send the ``TRIGger:MULTiscope:ALIGN`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:MULTiscope:ALIGN

        Sub-properties:
            - ``.completed``: The ``TRIGger:MULTiscope:ALIGN:COMPleted`` command.
            - ``.deskew``: The ``TRIGger:MULTiscope:ALIGN:DESKEW`` command.
            - ``.mrttime``: The ``TRIGger:MULTiscope:ALIGN:MRTTime`` command.
            - ``.setstate``: The ``TRIGger:MULTiscope:ALIGN:SETSTATE`` command.
            - ``.value``: The ``TRIGger:MULTiscope:ALIGN:VALue`` command.
        """
        return self._align

    @property
    def delay(self) -> TriggerMultiscopeDelay:
        """Return the ``TRIGger:MULTiscope:DELay`` command.

        **Description:**
            - This command queries the delay time in nanoseconds, for trigger out of the TekLink
              trigger out line.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:DELay?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:DELay?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:MULTiscope:DELay?
        """
        return self._delay

    @property
    def logic(self) -> TriggerMultiscopeLogic:
        """Return the ``TRIGger:MULTiscope:LOGic`` command.

        **Description:**
            - This command sets or queries the TekLink trigger configuration when the TekLink
              network connection is HUB.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:LOGic?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:LOGic?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:MULTiscope:LOGic value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:MULTiscope:LOGic {AND|OR}
            - TRIGger:MULTiscope:LOGic?

        **Info:**
            - ``AND`` sets the hub and all participating instruments to AND triggering
              configuration.
            - ``OR`` sets the hub and all participating instruments to OR triggering configuration.
        """
        return self._logic

    @property
    def option(self) -> TriggerMultiscopeOption:
        """Return the ``TRIGger:MULTiscope:OPTion`` command.

        **Description:**
            - This command sets or queries the trigger type for the TekLink trigger. This will cause
              the instrument to set the hub and all instruments participating to either AND or OR
              triggering.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:OPTion?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:OPTion?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:MULTiscope:OPTion value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:MULTiscope:OPTion {AND|OR}
            - TRIGger:MULTiscope:OPTion?

        **Info:**
            - ``AND`` sets the hub and all participating instruments to AND triggering.
            - ``OR`` sets the hub and all participating instruments to OR triggering.
        """
        return self._option

    @property
    def role(self) -> TriggerMultiscopeRole:
        """Return the ``TRIGger:MULTiscope:ROLe`` command.

        **Description:**
            - This command sets or queries the role of the instrument in the MultiScope trigger
              network. PRODUCER means that the instrument will both contribute and use the
              MultiScope trigger. If there is no hub, this makes the local instrument the master.
              CONSUMER means that the trigger in from the MultiScope network is used (rather than an
              internal trigger). This applies to a network with or without a hub.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MULTiscope:ROLe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope:ROLe?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:MULTiscope:ROLe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:MULTiscope:ROLe {PRODucer|CONSumer|NONe}
            - TRIGger:MULTiscope:ROLe?

        **Info:**
            - ``PRODucer`` sets the instrument to both contribute and use the MultiScope trigger.
            - ``CONSumer`` sets the instrument to use the MultiScope trigger.
            - ``NONe`` takes the instrument off the MultiScope trigger network.
        """
        return self._role


class TriggerMainPulseWindowPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:MAIn:PULse:WINdow:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity option seen in main pulse window trigger mode
          that causes the oscilloscope to trigger only when the signal exits the window. This is
          available only when the Window Event option is set to Inside > t. Also the logic selection
          is available only when the polarity is set to Either.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MAIn:PULse:WINdow:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MAIn:PULse:WINdow:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:MAIn:PULse:WINdow:POLarity value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:MAIn:PULse:WINdow:POLarity {EITher|NEGAtive|POSITIVe}
        - TRIGger:MAIn:PULse:WINdow:POLarity?

    **Info:**
        - ``EITher`` argument specifies positive or negative polarity.
        - ``NEGAtive`` argument specifies positive polarity.
        - ``POSITIVe`` argument specifies negative polarity.
    """


class TriggerMainPulseWindow(SCPICmdRead):
    """The ``TRIGger:MAIn:PULse:WINdow`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MAIn:PULse:WINdow?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MAIn:PULse:WINdow?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.polarity``: The ``TRIGger:MAIn:PULse:WINdow:POLarity`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._polarity = TriggerMainPulseWindowPolarity(device, f"{self._cmd_syntax}:POLarity")

    @property
    def polarity(self) -> TriggerMainPulseWindowPolarity:
        """Return the ``TRIGger:MAIn:PULse:WINdow:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity option seen in main pulse window trigger
              mode that causes the oscilloscope to trigger only when the signal exits the window.
              This is available only when the Window Event option is set to Inside > t. Also the
              logic selection is available only when the polarity is set to Either.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MAIn:PULse:WINdow:POLarity?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:MAIn:PULse:WINdow:POLarity?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:MAIn:PULse:WINdow:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:MAIn:PULse:WINdow:POLarity {EITher|NEGAtive|POSITIVe}
            - TRIGger:MAIn:PULse:WINdow:POLarity?

        **Info:**
            - ``EITher`` argument specifies positive or negative polarity.
            - ``NEGAtive`` argument specifies positive polarity.
            - ``POSITIVe`` argument specifies negative polarity.
        """
        return self._polarity


class TriggerMainPulseGlitchLowpassfilter(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:MAIn:PULse:GLItch:LOWPASSfilter`` command.

    **Description:**
        - This command turn on or turn off the low­pass filter feature. This allows triggering in
          the presence of high­ frequency signal edges.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MAIn:PULse:GLItch:LOWPASSfilter?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:MAIn:PULse:GLItch:LOWPASSfilter?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:MAIn:PULse:GLItch:LOWPASSfilter value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:MAIn:PULse:GLItch:LOWPASSfilter {}
        - TRIGger:MAIn:PULse:GLItch:LOWPASSfilter?
    """


class TriggerMainPulseGlitch(SCPICmdRead):
    """The ``TRIGger:MAIn:PULse:GLItch`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MAIn:PULse:GLItch?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MAIn:PULse:GLItch?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.lowpassfilter``: The ``TRIGger:MAIn:PULse:GLItch:LOWPASSfilter`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._lowpassfilter = TriggerMainPulseGlitchLowpassfilter(
            device, f"{self._cmd_syntax}:LOWPASSfilter"
        )

    @property
    def lowpassfilter(self) -> TriggerMainPulseGlitchLowpassfilter:
        """Return the ``TRIGger:MAIn:PULse:GLItch:LOWPASSfilter`` command.

        **Description:**
            - This command turn on or turn off the low­pass filter feature. This allows triggering
              in the presence of high­ frequency signal edges.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:MAIn:PULse:GLItch:LOWPASSfilter?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:MAIn:PULse:GLItch:LOWPASSfilter?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:MAIn:PULse:GLItch:LOWPASSfilter value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:MAIn:PULse:GLItch:LOWPASSfilter {}
            - TRIGger:MAIn:PULse:GLItch:LOWPASSfilter?
        """
        return self._lowpassfilter


class TriggerMainPulse(SCPICmdRead):
    """The ``TRIGger:MAIn:PULse`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MAIn:PULse?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MAIn:PULse?`` query and raise
          an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.glitch``: The ``TRIGger:MAIn:PULse:GLItch`` command tree.
        - ``.window``: The ``TRIGger:MAIn:PULse:WINdow`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._glitch = TriggerMainPulseGlitch(device, f"{self._cmd_syntax}:GLItch")
        self._window = TriggerMainPulseWindow(device, f"{self._cmd_syntax}:WINdow")

    @property
    def glitch(self) -> TriggerMainPulseGlitch:
        """Return the ``TRIGger:MAIn:PULse:GLItch`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MAIn:PULse:GLItch?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:MAIn:PULse:GLItch?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.lowpassfilter``: The ``TRIGger:MAIn:PULse:GLItch:LOWPASSfilter`` command.
        """
        return self._glitch

    @property
    def window(self) -> TriggerMainPulseWindow:
        """Return the ``TRIGger:MAIn:PULse:WINdow`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MAIn:PULse:WINdow?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:MAIn:PULse:WINdow?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.polarity``: The ``TRIGger:MAIn:PULse:WINdow:POLarity`` command.
        """
        return self._window


class TriggerMain(SCPICmdRead):
    """The ``TRIGger:MAIn`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:MAIn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:MAIn?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.pulse``: The ``TRIGger:MAIn:PULse`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._pulse = TriggerMainPulse(device, f"{self._cmd_syntax}:PULse")

    @property
    def pulse(self) -> TriggerMainPulse:
        """Return the ``TRIGger:MAIn:PULse`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MAIn:PULse?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:MAIn:PULse?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.glitch``: The ``TRIGger:MAIn:PULse:GLItch`` command tree.
            - ``.window``: The ``TRIGger:MAIn:PULse:WINdow`` command tree.
        """
        return self._pulse


class TriggerLvlsrcpreference(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:LVLSrcpreference`` command.

    **Description:**
        - This command sets or queries the dependent source/level trigger feature. SRCIndependent is
          the default value.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:LVLSrcpreference?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:LVLSrcpreference?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:LVLSrcpreference value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:LVLSrcpreference {SRCDependent|SRCIndependent}
        - TRIGger:LVLSrcpreference?

    **Info:**
        - ``SRCDependent`` sets the level of all trigger sources to the value you currently select,
          regardless of the last value selected.
        - ``SRCIndependent`` sets each trigger source to the level you are currently selecting.
    """


class TriggerEquationItem(ValidatedDynamicNumberCmd, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:EQUation<x>`` command.

    **Description:**
        - Sets the Visual Trigger Equation string, which defines the behavior of the areas. There
          can be only one equation, which can be up to 128 characters. You can enter the command as
          ``TRIGGER:EQUATION`` or ``TRIGGER:EQUATION1``. Each area is assigned a single source
          (analog channel 1, 2, 3, or 4). Any analog channel can be used as the source for one or
          more areas. Some basic equations are: (C1 IN A1) - The channel 1 waveform must intersect
          with Area 1. (C2 OUT A2) - The channel 2 waveform must NOT intersect with Area 2. ((C1 IN
          A1) and (C2 OUT A2)) - Combines the previous two examples.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:EQUation<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:EQUation<x>?`` query and raise
          an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:EQUation<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:EQUation<x> <string>
        - TRIGger:EQUation<x>?

    **Info:**
        - ``<string>`` is the equation that you want to use for visual triggering. This equation is
          shown on the oscilloscope screen when visual triggering is enabled.
    """


class TriggerEnhanced(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:ENHanced`` command.

    **Description:**
        - This command sets or queries the state of trigger position enhancement. When on, the
          instrument improves the trigger positioning to more closely match the acquired data. This
          is equivalent to selecting Enhanced Triggering from the Trigger Mode menu.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:ENHanced?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:ENHanced?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:ENHanced value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:ENHanced {<NR1>|OFF|ON}
        - TRIGger:ENHanced?

    **Info:**
        - ``<NR1>`` = 0 disables trigger position enhancement, any other value enables trigger
          position enhancement.
        - ``OFF`` disables trigger position enhancement.
        - ``ON`` enables trigger position enhancement.
    """


class TriggerBUpperthresholdChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:UPPerthreshold:CH<x>`` command.

    **Description:**
        - This command sets or queries the CH<x> upper trigger level for
          ``TRIGger:LVLSrcpreference SRCDependent``. The CH<x> range is 1 to 4.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:UPPerthreshold:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:UPPerthreshold:CH<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:UPPerthreshold:CH<x> value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:UPPerthreshold:CH<x> {ECL|TTL|<NR3>}
        - TRIGger:B:UPPerthreshold:CH<x>?

    **Info:**
        - ``ECL`` specifies the ECL high level.
        - ``TTL`` specifies the TTL high level.
        - ``<NR3>`` specifies the trigger level in user units (usually volts).
    """


class TriggerBUpperthreshold(SCPICmdRead):
    """The ``TRIGger:B:UPPerthreshold`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:UPPerthreshold?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:UPPerthreshold?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.ch``: The ``TRIGger:B:UPPerthreshold:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBUpperthresholdChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBUpperthresholdChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBUpperthresholdChannel]:
        """Return the ``TRIGger:B:UPPerthreshold:CH<x>`` command.

        **Description:**
            - This command sets or queries the CH<x> upper trigger level for
              ``TRIGger:LVLSrcpreference SRCDependent``. The CH<x> range is 1 to 4.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:UPPerthreshold:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:UPPerthreshold:CH<x>?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:UPPerthreshold:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:UPPerthreshold:CH<x> {ECL|TTL|<NR3>}
            - TRIGger:B:UPPerthreshold:CH<x>?

        **Info:**
            - ``ECL`` specifies the ECL high level.
            - ``TTL`` specifies the TTL high level.
            - ``<NR3>`` specifies the trigger level in user units (usually volts).
        """
        return self._ch


class TriggerBType(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:TYPe`` command.

    **Description:**
        - This command sets or queries the type of A or B trigger. Logic and Pulse triggers contain
          classes. Logic triggers consist of State and Pattern classes; Pulse triggers consist of
          Glitch, Runt, Width, Transition, Timeout, and Window classes. Once you have set the
          trigger type, you might also need to identify the associated trigger class. For details on
          selecting Logic and Pulse trigger classes, see and respectively. This command is similar
          to selecting Event Trigger Setup from the Trig menu and then selecting the desired Trigger
          Type. Some trigger types are not available on some instruments.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:TYPe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:TYPe?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:TYPe value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:TYPe {EDGE|LOGIc|PULse|VIDeo| I2C|CAN|SPI|COMMunication|SERIAL|RS232}}
        - TRIGger:B:TYPe?

    **Info:**
        - ``EDGE`` is a normal trigger. A trigger event occurs when a signal passes through a
          specified voltage level in a specified direction and is controlled by the
          ``TRIGger:A:EDGE`` commands.
        - ``LOGIc`` specifies that a trigger occurs when specified conditions are met and is
          controlled by the ``TRIGger:A:LOGIc`` commands.
        - ``PULse`` specifies that a trigger occurs when a specified pulse is found and is
          controlled by the ``TRIGger:A:PULse`` commands.
        - ``VIDeo`` specifies that the trigger occurs when a video signal is found. Requires an
          instrument with video hardware.
        - ``I2C`` specifies that a trigger occurs when an Inter-IC Control signal is found.
        - ``CAN`` specifies that a trigger occurs when a Controller Area Network frame signal is
          found.
        - ``SPI`` specifies that a trigger occurs when a Serial Peripheral Interface signal is
          found.
        - ``COMMunication`` (Option MTM) specifies that a trigger occurs when a communications
          signal is found. Supports AMI, HDB3, B3ZS, B6ZS, B8ZS, CMI, MLT3, Manchester, and NRZ
          encoded communications signals. COMMunication is available only if Option MTM is
          installed.
        - ``SERIAL`` specifies that a trigger occurs when NRZ-encoded data is found, providing a
          32-bit serial word. This argument is available with instruments with Option PTM.
        - ``RS232`` takes a signal on a data source and allows you to trigger on data within the
          RS232 bitstream. The data is only one byte wide.
    """


class TriggerBTime(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:TIMe`` command.

    **Description:**
        - This command sets or queries B trigger delay time, in seconds. The B Trigger time applies
          only if ``TRIGger:B:BY`` is set to TIMe.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:TIMe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:TIMe?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:TIMe value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:TIMe <NR3>
        - TRIGger:B:TIMe?

    **Info:**
        - ``<NR3>`` is the B trigger delay time in seconds.
    """


class TriggerBState(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:STATE`` command.

    **Description:**
        - This command sets or queries the state of B trigger activity. If the B trigger state is
          on, the B trigger is part of the triggering sequence. If the B trigger state is off, then
          only the A trigger causes the trigger event.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:STATE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:STATE?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:STATE value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:STATE {ON|OFF|<NR1>}
        - TRIGger:B:STATE?

    **Info:**
        - ``ON`` indicates that the B trigger is active and causes trigger events with the A
          trigger.
        - ``OFF`` indicates that only the A trigger causes trigger events.
        - ``<NR1>`` is an integer number. 0 turns off the B trigger; any other value activates the B
          trigger.
    """


class TriggerBScanStartevent(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:SCAN:STARTevent`` command.

    **Description:**
        - This command sets or queries the start event value of B-Event Scan.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:SCAN:STARTevent?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:SCAN:STARTevent?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:SCAN:STARTevent value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:SCAN:STARTevent <NR1>
        - TRIGger:B:SCAN:STARTevent?

    **Info:**
        - ``<NR1>`` is the start event value of B-Event Scan. The default value is 1 and ranges from
          1 to 2e9.
    """


class TriggerBScanMode(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:SCAN:MODE`` command.

    **Description:**
        - This command sets or queries the sequence advance mode of B-Event Scan.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:SCAN:MODE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:SCAN:MODE?`` query and raise
          an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:SCAN:MODE value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:SCAN:MODE {SEQUENTIAL|RANDOM|TOGGLE}
        - TRIGger:B:SCAN:MODE?

    **Info:**
        - ``SEQUENTIAL`` , where the B-Event Scan is initialized at start event. This value is
          incremented after each set of Advance After triggers have occurred, until the B-Event
          exceeds the end event value. Then the B-Event count is again set to the start event value.
        - ``RANDOM`` , where the B-Event value is changed to a random value such that start event
          value <= BEvent <= end event value), and after Advance After triggers have occurred.
        - ``TOGGLE`` , where the B-Event count is first set to the start event value and then
          changed to the end event value after additional Advance After triggers have occurred, and
          then B-Event is set back to the start event value.
    """


class TriggerBScanEndevent(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:SCAN:ENDevent`` command.

    **Description:**
        - This command sets or queries the end event value of B-Event Scan. The end event value is
          greater than or equal to the start event value.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:SCAN:ENDevent?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:SCAN:ENDevent?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:SCAN:ENDevent value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:SCAN:ENDevent <NR1>
        - TRIGger:B:SCAN:ENDevent?

    **Info:**
        - ``<NR1>`` is the end event value of B-Event Scan. The default value is 8 and ranges from 1
          to 2e9.
    """


class TriggerBScanEnable(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:SCAN:ENAble`` command.

    **Description:**
        - This command sets or queries if the B-Event Scan is on or off. The B-Events value is
          updated in a sequential, random, or toggle Advance mode.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:SCAN:ENAble?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:SCAN:ENAble?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:SCAN:ENAble value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:SCAN:ENAble {ON|OFF}
        - TRIGger:B:SCAN:ENAble?

    **Info:**
        - ``ON`` with A->B Sequence mode set to Trig on nth Event, the B-Event count is determined
          by the other B Scan triggering parameters such as Start Event value, End Event value,
          Advance After value, and the Advance mode.
        - ``OFF`` with A->B Sequence mode set to Trig on nth Event, behaves in a conventional way.
    """


class TriggerBScanAdvanceafter(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:SCAN:ADVANCEafter`` command.

    **Description:**
        - This command sets or queries the B-Event Scan advance after value. Advance After advances
          the B-Event value after the specified number of acquisitions have occurred. The B-Events
          value is updated in a sequential, random, or toggle mode.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:SCAN:ADVANCEafter?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:SCAN:ADVANCEafter?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:SCAN:ADVANCEafter value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:SCAN:ADVANCEafter <NR1>
        - TRIGger:B:SCAN:ADVANCEafter?

    **Info:**
        - ``<NR1>`` is the value that advances the B-Event after the given number of acquisitions
          have occurred. The default value is 1 and ranges from 1 to 2e9 (2000000000).
    """


class TriggerBScan(SCPICmdRead):
    """The ``TRIGger:B:SCAN`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:SCAN?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:SCAN?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.advanceafter``: The ``TRIGger:B:SCAN:ADVANCEafter`` command.
        - ``.enable``: The ``TRIGger:B:SCAN:ENAble`` command.
        - ``.endevent``: The ``TRIGger:B:SCAN:ENDevent`` command.
        - ``.mode``: The ``TRIGger:B:SCAN:MODE`` command.
        - ``.startevent``: The ``TRIGger:B:SCAN:STARTevent`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._advanceafter = TriggerBScanAdvanceafter(device, f"{self._cmd_syntax}:ADVANCEafter")
        self._enable = TriggerBScanEnable(device, f"{self._cmd_syntax}:ENAble")
        self._endevent = TriggerBScanEndevent(device, f"{self._cmd_syntax}:ENDevent")
        self._mode = TriggerBScanMode(device, f"{self._cmd_syntax}:MODE")
        self._startevent = TriggerBScanStartevent(device, f"{self._cmd_syntax}:STARTevent")

    @property
    def advanceafter(self) -> TriggerBScanAdvanceafter:
        """Return the ``TRIGger:B:SCAN:ADVANCEafter`` command.

        **Description:**
            - This command sets or queries the B-Event Scan advance after value. Advance After
              advances the B-Event value after the specified number of acquisitions have occurred.
              The B-Events value is updated in a sequential, random, or toggle mode.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:SCAN:ADVANCEafter?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:SCAN:ADVANCEafter?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:SCAN:ADVANCEafter value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:SCAN:ADVANCEafter <NR1>
            - TRIGger:B:SCAN:ADVANCEafter?

        **Info:**
            - ``<NR1>`` is the value that advances the B-Event after the given number of
              acquisitions have occurred. The default value is 1 and ranges from 1 to 2e9
              (2000000000).
        """
        return self._advanceafter

    @property
    def enable(self) -> TriggerBScanEnable:
        """Return the ``TRIGger:B:SCAN:ENAble`` command.

        **Description:**
            - This command sets or queries if the B-Event Scan is on or off. The B-Events value is
              updated in a sequential, random, or toggle Advance mode.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:SCAN:ENAble?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:SCAN:ENAble?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:SCAN:ENAble value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:SCAN:ENAble {ON|OFF}
            - TRIGger:B:SCAN:ENAble?

        **Info:**
            - ``ON`` with A->B Sequence mode set to Trig on nth Event, the B-Event count is
              determined by the other B Scan triggering parameters such as Start Event value, End
              Event value, Advance After value, and the Advance mode.
            - ``OFF`` with A->B Sequence mode set to Trig on nth Event, behaves in a conventional
              way.
        """
        return self._enable

    @property
    def endevent(self) -> TriggerBScanEndevent:
        """Return the ``TRIGger:B:SCAN:ENDevent`` command.

        **Description:**
            - This command sets or queries the end event value of B-Event Scan. The end event value
              is greater than or equal to the start event value.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:SCAN:ENDevent?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:SCAN:ENDevent?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:SCAN:ENDevent value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:SCAN:ENDevent <NR1>
            - TRIGger:B:SCAN:ENDevent?

        **Info:**
            - ``<NR1>`` is the end event value of B-Event Scan. The default value is 8 and ranges
              from 1 to 2e9.
        """
        return self._endevent

    @property
    def mode(self) -> TriggerBScanMode:
        """Return the ``TRIGger:B:SCAN:MODE`` command.

        **Description:**
            - This command sets or queries the sequence advance mode of B-Event Scan.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:SCAN:MODE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:SCAN:MODE?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:SCAN:MODE value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:SCAN:MODE {SEQUENTIAL|RANDOM|TOGGLE}
            - TRIGger:B:SCAN:MODE?

        **Info:**
            - ``SEQUENTIAL`` , where the B-Event Scan is initialized at start event. This value is
              incremented after each set of Advance After triggers have occurred, until the B-Event
              exceeds the end event value. Then the B-Event count is again set to the start event
              value.
            - ``RANDOM`` , where the B-Event value is changed to a random value such that start
              event value <= BEvent <= end event value), and after Advance After triggers have
              occurred.
            - ``TOGGLE`` , where the B-Event count is first set to the start event value and then
              changed to the end event value after additional Advance After triggers have occurred,
              and then B-Event is set back to the start event value.
        """
        return self._mode

    @property
    def startevent(self) -> TriggerBScanStartevent:
        """Return the ``TRIGger:B:SCAN:STARTevent`` command.

        **Description:**
            - This command sets or queries the start event value of B-Event Scan.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:SCAN:STARTevent?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:SCAN:STARTevent?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:SCAN:STARTevent value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:SCAN:STARTevent <NR1>
            - TRIGger:B:SCAN:STARTevent?

        **Info:**
            - ``<NR1>`` is the start event value of B-Event Scan. The default value is 1 and ranges
              from 1 to 2e9.
        """
        return self._startevent


class TriggerBResetType(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:RESET:TYPe`` command.

    **Description:**
        - This command sets or queries the type of A→B sequential trigger reset. If the B trigger
          reset is active, the reset criteria are part of the B triggering sequence. If the reset
          conditions defined by the reset type are not met, the instrument must start over searching
          for a new occurrence of the A event. You must identify a trigger Source and Threshold for
          each reset type, except for the Timeout, Accept, and Reject trigger types.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET:TYPe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:TYPe?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:TYPe value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:RESET:TYPe {NONe|TIMEOut|STATE|TRANsition|ACCepts|REJects}
        - TRIGger:B:RESET:TYPe?

    **Info:**
        - ``NONe`` defeats the trigger reset feature.
        - ``TIMEOut`` initiates a reset if the timeout conditions specified by
          ``TRIGger:B:RESET:TIMEOut`` are met.
        - ``STATE`` initiates a reset if the state conditions specified by TRIGger:
          ``B:RESET:SOUrce``, ``TRIGger:B:RESET:STATE``, and ``TRIGger:B:RESET:THReshold`` are met.
        - ``TRANsition`` initiates a reset if the transition conditions specified by
          ``TRIGger:B:RESET:SOUrce``, ``TRIGger:B:RESET:TRANsition``, and
          ``TRIGger:B:RESET:THReshold`` are met.
        - ``ACCepts`` initiates a trigger at the A-Event if the B-Event occurs before the Accept
          Timeout, as measured from the A- to the B-Event. That is, the B-Event Accepts (validates)
          the A- Event. Otherwise the oscilloscope does not trigger. The trigger location is at the
          A-Event.
        - ``REJects`` initiates a trigger if the Reject Timeout expires before the B-Event occurs,
          as measured from the A- to the B-Event. That is, reception of the B-Event Rejects
          (invalidates) the A-Event. Otherwise the oscilloscope does not trigger (if the B-Event
          occurs before the Reject Timeout). The trigger location is at the A-Event.
    """


class TriggerBResetTransition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:RESET:TRANsition`` command.

    **Description:**
        - This command sets or queries the type of transition required for a Transition trigger
          reset.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET:TRANsition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:TRANsition?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:TRANsition value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:RESET:TRANsition {RISe|FALL}
        - TRIGger:B:RESET:TRANsition?

    **Info:**
        - ``RISe`` indicates that a reset occurs when the trigger rises above the threshold level.
        - ``FALL`` indicates that a reset occurs when the trigger falls below the threshold level.
    """


class TriggerBResetTotalcount(SCPICmdRead):
    """The ``TRIGger:B:RESET:TOTALCOUNT`` command.

    **Description:**
        - This command queries the Reset Total Count for a sequence trigger reset by the ACCept and
          REJect Reset Types. These are often referred to as the Validation/Invalidation Triggers.
          The TotalCount is the sum of the accepted and rejected triggers when the Reset or Accept
          Reset Types are active, and is part of the equation TotalCount = AcceptCount + RejectCount
          used to form the ratio of accepted to total triggers that is optionally displayed when
          Validation/Invalidation Triggers are employed. For example, if the Reset Type Accept is
          active, the TotalCount is the sum of the accepted and rejected triggers processed by the
          Accept Reset Type, a query only value determined by the trigger system. Any acquired
          waveform obtained by Accept or Reject Reset Types is positioned at the A-Event. For
          example, if the Reset Type Reject is active, the TotalCount is the sum of the accepted and
          rejected triggers processed by the Reject Reset Type, a query only value determined by the
          trigger system. Any acquired waveform obtained by Accept or Reject Reset Types is
          positioned at the A-Event.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET:TOTALCOUNT?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:TOTALCOUNT?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:RESET:TOTALCOUNT?
    """


class TriggerBResetTimeout(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:RESET:TIMEOut`` command.

    **Description:**
        - This command sets or queries the reset timer for a sequential timeout trigger reset. For
          example, if the timeout is set to 1 s, this additional reset time begins following an A
          trigger event and runs sequentially with any B Trigger Delay. If a B trigger event is not
          found before it expires, the instrument searches for a new A event trigger sequence.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET:TIMEOut?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:TIMEOut?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:TIMEOut value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:RESET:TIMEOut <NR3>
        - TRIGger:B:RESET:TIMEOut?

    **Info:**
        - ``<NR3>`` specifies the reset time.
    """


class TriggerBResetThreshold(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:RESET:THReshold`` command.

    **Description:**
        - This command sets or queries the trigger threshold for the A→B sequential trigger reset,
          except for the Timeout reset type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET:THReshold?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:THReshold?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:THReshold value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:RESET:THReshold {ECL|TTL|<NR3>}
        - TRIGger:B:RESET:THReshold?

    **Info:**
        - ``ECL`` sets the reset threshold to ECL voltage levels.
        - ``TTL`` sets the reset threshold to TTL voltage levels.
        - ``<NR3>`` sets the reset threshold in volts.
    """


class TriggerBResetState(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:RESET:STATE`` command.

    **Description:**
        - This command sets or queries the trigger reset state for the A→B sequential State trigger
          reset feature.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET:STATE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:STATE?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:STATE value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:RESET:STATE {HIGH|LOW}
        - TRIGger:B:RESET:STATE?

    **Info:**
        - ``HIGH`` sets the condition for the state sequential trigger reset to high.
        - ``LOW`` sets the condition for the state sequential trigger reset to low.
    """


class TriggerBResetSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:RESET:SOUrce`` command.

    **Description:**
        - This command sets or queries the trigger source for the A→B sequential trigger reset
          feature, except for the Timeout trigger type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:SOUrce?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:RESET:SOUrce {CH<x>|AUXiliary}
        - TRIGger:B:RESET:SOUrce?

    **Info:**
        - ``CH<x>`` specifies one of the input channels as the reset source. Input channels are
          specified by x and can be 1, 2, 3, or 4.
        - ``AUXiliary`` specifies an external trigger (using the Auxiliary Trigger Input connector)
          as the reset source.
    """


class TriggerBResetRejecttimeout(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:RESET:REJECTTIMEout`` command.

    **Description:**
        - This command sets or queries the Reset Reject Time Out timer for a sequence trigger reset
          by the REJect Reset Type. This is often referred to as the Invalidation Trigger. The
          Reject Time Out indicates the time measured from the A-Event in which the B-Event must
          occur in order to reject the A-Event. When the B-Event does not occur within the Reject
          Time Out, the scope triggers on the A-Event, because the B-Event is interpreted as an
          invalidation or rejection of the A-Event. If the B-Event does occur within the Reject Time
          Out, the scope again starts waiting for an A-Event to occur, i.e., no trigger occurs and
          no acquisition is retained. Note that the acquired waveform trigger position is located at
          the A-Event, contrary to the behavior of most A->B Sequence triggers. For example, if the
          Reject Time Out is set to 5.2 µS, the A-Event will trigger the scope only if the B-Event
          does not occur before 5.2 µS has elapsed after the A-Event. The acquired waveform is
          positioned at the A-Event. When the B-Event does occur before the 5.2 µs has elapsed, then
          the scope does not trigger, and again starts waiting for an A-Event to occur. In this way
          the B-Event invalidates an A-Event.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET:REJECTTIMEout?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:REJECTTIMEout?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:REJECTTIMEout value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:RESET:REJECTTIMEout <NR3>
        - TRIGger:B:RESET:REJECTTIMEout?

    **Info:**
        - ``<NR3>`` specifies the Reject Time Out time.
    """


class TriggerBResetRejectcount(SCPICmdRead):
    """The ``TRIGger:B:RESET:REJECTCOUNT`` command.

    **Description:**
        - This command queries the Reset Reject Count for a sequence trigger reset by the ACCept and
          REJect Reset Types. These are often referred to as the Validation/Invalidation Triggers.
          The RejectCount is the number of triggers rejected when these triggers are active, and is
          part of the equation TotalCount = AcceptCount + RejectCount used to form the ratio of
          accepted to total triggers that is optionally displayed when Validation/Invalidation
          Triggers are employed. For example, if the Reset Type Accept is active, the RejectCount is
          the number of triggers that have been rejected, a query only value determined by the
          trigger system. For example, if Reset Type Reject is active, the RejectCount is the number
          of triggers that have been rejected, a query only value determined by the trigger system.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET:REJECTCOUNT?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:REJECTCOUNT?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:RESET:REJECTCOUNT?
    """


class TriggerBResetRatioenable(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:RESET:RATIOENable`` command.

    **Description:**
        - This command sets or queries the Ratio Enable enumerated value (OFF/ON). If ON, a ratio is
          displayed in the graticule area. The displayed value represents the ratio of accepted to
          total triggers for a sequence trigger reset by the ACCept and REJect Reset Types. These
          are often referred to as the Validation/Invalidation Triggers. The default value is ON.
          For example, if the Reset Type Accept is active, and RatioEnable is ON, the ratio of
          accepted to total triggers is displayed in the graticule area as a percent.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET:RATIOENable?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:RATIOENable?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:RATIOENable value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:RESET:RATIOENable <ON/OFF>
        - TRIGger:B:RESET:RATIOENable?
    """


class TriggerBResetRatio(SCPICmdRead):
    """The ``TRIGger:B:RESET:RATIO`` command.

    **Description:**
        - This command queries the (floating point) Ratio of accepted to total triggers for a
          sequence trigger reset by the ACCepts and REJects Reset Types. These are often referred to
          as the Validation/Invalidation Triggers. The Ratio = Accepted Count / Total Count, and is
          a query only value generated by the trigger system. The TotalCount = AcceptCount +
          RejectCount. For example, if the Reset Type Accept is active, and 100 triggers have been
          accepted and 100 trigger have been rejected, then the ratio = acceptCount / totalCount,
          then the ratio is 50%. The ratio is expressed in scientific notation.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET:RATIO?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:RATIO?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:RESET:RATIO?
    """


class TriggerBResetAccepttimeout(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:RESET:ACCEPTTIMEout`` command.

    **Description:**
        - This command sets or queries the Reset Accept Time Out timer for a sequence trigger reset
          by the ACCept Reset Type. This is often referred to as the Validation Trigger. The Accept
          Time Out indicates the time, as measured from the A-Event to the B-Event, in which the
          B-Event must occur in order to accept the A-Event. When the B-Event occurs within the
          Accept Time Out, the scope triggers on the A-Event, because the B-Event is interpreted as
          a validation of the A-Event. Note that the acquired waveform trigger position is location
          at the A-Event, contrary to the behavior of most A->B Sequence triggers. In this way, the
          B-Event validates the A-Event. If the B-Event does not occur within the Accept Time Out,
          the scope again starts waiting for an A-Event to occur, i.e., no trigger occurs and the
          acquisition is not retained. For example, if the Accept Time Out is set to 5.2 µs, the
          A-Event will trigger the scope only if the B-Event occurs before 5.2 µs has elapsed after
          the A-Event. Any acquired waveform is positioned at the A-Event.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET:ACCEPTTIMEout?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:ACCEPTTIMEout?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:ACCEPTTIMEout value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:RESET:ACCEPTTIMEout <NR3>
        - TRIGger:B:RESET:ACCEPTTIMEout?

    **Info:**
        - ``<NR3>`` specifies the Accept Time Out time.
    """


class TriggerBResetAcceptcount(SCPICmdRead):
    """The ``TRIGger:B:RESET:ACCEPTCOUNT`` command.

    **Description:**
        - This command queries the Reset Accept Count for a sequence trigger reset by the ACCept and
          REJect Reset Types. These are often referred to as the Validation/Invalidation Triggers.
          The AcceptCount is equivalent to the number of acquired waveforms, and is part of the
          equation TotalCount = AcceptCount + RejectCount used to form the ratio of accepted to
          total triggers that is optionally displayed when Validation/Invalidation Triggers are
          employed. The Accept Count is always equal the Acquisition Count. For example, if the
          Reset Type Accept is active, the AcceptCount is the number of triggers that have been
          accepted, a query only value determined by the trigger system. Any acquired waveform
          obtained by Reset Type Accept or Reject is positioned at the A-Event. For example, if
          Reset Type Reject is active, the AcceptCount is still the number of triggers that have
          been accepted, a query only value determined by the trigger system. Any acquired waveform
          obtained by Reset Type Accept or Reject is positioned at the A-Event.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET:ACCEPTCOUNT?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:ACCEPTCOUNT?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:RESET:ACCEPTCOUNT?
    """


#  pylint: disable=too-many-instance-attributes
class TriggerBReset(SCPICmdRead):
    """The ``TRIGger:B:RESET`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:RESET?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.acceptcount``: The ``TRIGger:B:RESET:ACCEPTCOUNT`` command.
        - ``.accepttimeout``: The ``TRIGger:B:RESET:ACCEPTTIMEout`` command.
        - ``.ratio``: The ``TRIGger:B:RESET:RATIO`` command.
        - ``.ratioenable``: The ``TRIGger:B:RESET:RATIOENable`` command.
        - ``.rejectcount``: The ``TRIGger:B:RESET:REJECTCOUNT`` command.
        - ``.rejecttimeout``: The ``TRIGger:B:RESET:REJECTTIMEout`` command.
        - ``.source``: The ``TRIGger:B:RESET:SOUrce`` command.
        - ``.state``: The ``TRIGger:B:RESET:STATE`` command.
        - ``.threshold``: The ``TRIGger:B:RESET:THReshold`` command.
        - ``.timeout``: The ``TRIGger:B:RESET:TIMEOut`` command.
        - ``.totalcount``: The ``TRIGger:B:RESET:TOTALCOUNT`` command.
        - ``.transition``: The ``TRIGger:B:RESET:TRANsition`` command.
        - ``.type``: The ``TRIGger:B:RESET:TYPe`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._acceptcount = TriggerBResetAcceptcount(device, f"{self._cmd_syntax}:ACCEPTCOUNT")
        self._accepttimeout = TriggerBResetAccepttimeout(
            device, f"{self._cmd_syntax}:ACCEPTTIMEout"
        )
        self._ratio = TriggerBResetRatio(device, f"{self._cmd_syntax}:RATIO")
        self._ratioenable = TriggerBResetRatioenable(device, f"{self._cmd_syntax}:RATIOENable")
        self._rejectcount = TriggerBResetRejectcount(device, f"{self._cmd_syntax}:REJECTCOUNT")
        self._rejecttimeout = TriggerBResetRejecttimeout(
            device, f"{self._cmd_syntax}:REJECTTIMEout"
        )
        self._source = TriggerBResetSource(device, f"{self._cmd_syntax}:SOUrce")
        self._state = TriggerBResetState(device, f"{self._cmd_syntax}:STATE")
        self._threshold = TriggerBResetThreshold(device, f"{self._cmd_syntax}:THReshold")
        self._timeout = TriggerBResetTimeout(device, f"{self._cmd_syntax}:TIMEOut")
        self._totalcount = TriggerBResetTotalcount(device, f"{self._cmd_syntax}:TOTALCOUNT")
        self._transition = TriggerBResetTransition(device, f"{self._cmd_syntax}:TRANsition")
        self._type = TriggerBResetType(device, f"{self._cmd_syntax}:TYPe")

    @property
    def acceptcount(self) -> TriggerBResetAcceptcount:
        """Return the ``TRIGger:B:RESET:ACCEPTCOUNT`` command.

        **Description:**
            - This command queries the Reset Accept Count for a sequence trigger reset by the ACCept
              and REJect Reset Types. These are often referred to as the Validation/Invalidation
              Triggers. The AcceptCount is equivalent to the number of acquired waveforms, and is
              part of the equation TotalCount = AcceptCount + RejectCount used to form the ratio of
              accepted to total triggers that is optionally displayed when Validation/Invalidation
              Triggers are employed. The Accept Count is always equal the Acquisition Count. For
              example, if the Reset Type Accept is active, the AcceptCount is the number of triggers
              that have been accepted, a query only value determined by the trigger system. Any
              acquired waveform obtained by Reset Type Accept or Reject is positioned at the
              A-Event. For example, if Reset Type Reject is active, the AcceptCount is still the
              number of triggers that have been accepted, a query only value determined by the
              trigger system. Any acquired waveform obtained by Reset Type Accept or Reject is
              positioned at the A-Event.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET:ACCEPTCOUNT?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:ACCEPTCOUNT?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:RESET:ACCEPTCOUNT?
        """
        return self._acceptcount

    @property
    def accepttimeout(self) -> TriggerBResetAccepttimeout:
        """Return the ``TRIGger:B:RESET:ACCEPTTIMEout`` command.

        **Description:**
            - This command sets or queries the Reset Accept Time Out timer for a sequence trigger
              reset by the ACCept Reset Type. This is often referred to as the Validation Trigger.
              The Accept Time Out indicates the time, as measured from the A-Event to the B-Event,
              in which the B-Event must occur in order to accept the A-Event. When the B-Event
              occurs within the Accept Time Out, the scope triggers on the A-Event, because the
              B-Event is interpreted as a validation of the A-Event. Note that the acquired waveform
              trigger position is location at the A-Event, contrary to the behavior of most A->B
              Sequence triggers. In this way, the B-Event validates the A-Event. If the B-Event does
              not occur within the Accept Time Out, the scope again starts waiting for an A-Event to
              occur, i.e., no trigger occurs and the acquisition is not retained. For example, if
              the Accept Time Out is set to 5.2 µs, the A-Event will trigger the scope only if the
              B-Event occurs before 5.2 µs has elapsed after the A-Event. Any acquired waveform is
              positioned at the A-Event.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET:ACCEPTTIMEout?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:ACCEPTTIMEout?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:RESET:ACCEPTTIMEout value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:RESET:ACCEPTTIMEout <NR3>
            - TRIGger:B:RESET:ACCEPTTIMEout?

        **Info:**
            - ``<NR3>`` specifies the Accept Time Out time.
        """
        return self._accepttimeout

    @property
    def ratio(self) -> TriggerBResetRatio:
        """Return the ``TRIGger:B:RESET:RATIO`` command.

        **Description:**
            - This command queries the (floating point) Ratio of accepted to total triggers for a
              sequence trigger reset by the ACCepts and REJects Reset Types. These are often
              referred to as the Validation/Invalidation Triggers. The Ratio = Accepted Count /
              Total Count, and is a query only value generated by the trigger system. The TotalCount
              = AcceptCount + RejectCount. For example, if the Reset Type Accept is active, and 100
              triggers have been accepted and 100 trigger have been rejected, then the ratio =
              acceptCount / totalCount, then the ratio is 50%. The ratio is expressed in scientific
              notation.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET:RATIO?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:RATIO?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:RESET:RATIO?
        """
        return self._ratio

    @property
    def ratioenable(self) -> TriggerBResetRatioenable:
        """Return the ``TRIGger:B:RESET:RATIOENable`` command.

        **Description:**
            - This command sets or queries the Ratio Enable enumerated value (OFF/ON). If ON, a
              ratio is displayed in the graticule area. The displayed value represents the ratio of
              accepted to total triggers for a sequence trigger reset by the ACCept and REJect Reset
              Types. These are often referred to as the Validation/Invalidation Triggers. The
              default value is ON. For example, if the Reset Type Accept is active, and RatioEnable
              is ON, the ratio of accepted to total triggers is displayed in the graticule area as a
              percent.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET:RATIOENable?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:RATIOENable?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:RATIOENable value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:RESET:RATIOENable <ON/OFF>
            - TRIGger:B:RESET:RATIOENable?
        """
        return self._ratioenable

    @property
    def rejectcount(self) -> TriggerBResetRejectcount:
        """Return the ``TRIGger:B:RESET:REJECTCOUNT`` command.

        **Description:**
            - This command queries the Reset Reject Count for a sequence trigger reset by the ACCept
              and REJect Reset Types. These are often referred to as the Validation/Invalidation
              Triggers. The RejectCount is the number of triggers rejected when these triggers are
              active, and is part of the equation TotalCount = AcceptCount + RejectCount used to
              form the ratio of accepted to total triggers that is optionally displayed when
              Validation/Invalidation Triggers are employed. For example, if the Reset Type Accept
              is active, the RejectCount is the number of triggers that have been rejected, a query
              only value determined by the trigger system. For example, if Reset Type Reject is
              active, the RejectCount is the number of triggers that have been rejected, a query
              only value determined by the trigger system.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET:REJECTCOUNT?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:REJECTCOUNT?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:RESET:REJECTCOUNT?
        """
        return self._rejectcount

    @property
    def rejecttimeout(self) -> TriggerBResetRejecttimeout:
        """Return the ``TRIGger:B:RESET:REJECTTIMEout`` command.

        **Description:**
            - This command sets or queries the Reset Reject Time Out timer for a sequence trigger
              reset by the REJect Reset Type. This is often referred to as the Invalidation Trigger.
              The Reject Time Out indicates the time measured from the A-Event in which the B-Event
              must occur in order to reject the A-Event. When the B-Event does not occur within the
              Reject Time Out, the scope triggers on the A-Event, because the B-Event is interpreted
              as an invalidation or rejection of the A-Event. If the B-Event does occur within the
              Reject Time Out, the scope again starts waiting for an A-Event to occur, i.e., no
              trigger occurs and no acquisition is retained. Note that the acquired waveform trigger
              position is located at the A-Event, contrary to the behavior of most A->B Sequence
              triggers. For example, if the Reject Time Out is set to 5.2 µS, the A-Event will
              trigger the scope only if the B-Event does not occur before 5.2 µS has elapsed after
              the A-Event. The acquired waveform is positioned at the A-Event. When the B-Event does
              occur before the 5.2 µs has elapsed, then the scope does not trigger, and again starts
              waiting for an A-Event to occur. In this way the B-Event invalidates an A-Event.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET:REJECTTIMEout?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:REJECTTIMEout?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:RESET:REJECTTIMEout value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:RESET:REJECTTIMEout <NR3>
            - TRIGger:B:RESET:REJECTTIMEout?

        **Info:**
            - ``<NR3>`` specifies the Reject Time Out time.
        """
        return self._rejecttimeout

    @property
    def source(self) -> TriggerBResetSource:
        """Return the ``TRIGger:B:RESET:SOUrce`` command.

        **Description:**
            - This command sets or queries the trigger source for the A→B sequential trigger reset
              feature, except for the Timeout trigger type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:SOUrce?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:SOUrce value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:RESET:SOUrce {CH<x>|AUXiliary}
            - TRIGger:B:RESET:SOUrce?

        **Info:**
            - ``CH<x>`` specifies one of the input channels as the reset source. Input channels are
              specified by x and can be 1, 2, 3, or 4.
            - ``AUXiliary`` specifies an external trigger (using the Auxiliary Trigger Input
              connector) as the reset source.
        """
        return self._source

    @property
    def state(self) -> TriggerBResetState:
        """Return the ``TRIGger:B:RESET:STATE`` command.

        **Description:**
            - This command sets or queries the trigger reset state for the A→B sequential State
              trigger reset feature.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET:STATE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:STATE?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:STATE value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:RESET:STATE {HIGH|LOW}
            - TRIGger:B:RESET:STATE?

        **Info:**
            - ``HIGH`` sets the condition for the state sequential trigger reset to high.
            - ``LOW`` sets the condition for the state sequential trigger reset to low.
        """
        return self._state

    @property
    def threshold(self) -> TriggerBResetThreshold:
        """Return the ``TRIGger:B:RESET:THReshold`` command.

        **Description:**
            - This command sets or queries the trigger threshold for the A→B sequential trigger
              reset, except for the Timeout reset type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:THReshold?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:THReshold value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:RESET:THReshold {ECL|TTL|<NR3>}
            - TRIGger:B:RESET:THReshold?

        **Info:**
            - ``ECL`` sets the reset threshold to ECL voltage levels.
            - ``TTL`` sets the reset threshold to TTL voltage levels.
            - ``<NR3>`` sets the reset threshold in volts.
        """
        return self._threshold

    @property
    def timeout(self) -> TriggerBResetTimeout:
        """Return the ``TRIGger:B:RESET:TIMEOut`` command.

        **Description:**
            - This command sets or queries the reset timer for a sequential timeout trigger reset.
              For example, if the timeout is set to 1 s, this additional reset time begins following
              an A trigger event and runs sequentially with any B Trigger Delay. If a B trigger
              event is not found before it expires, the instrument searches for a new A event
              trigger sequence.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET:TIMEOut?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:TIMEOut?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:TIMEOut value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:RESET:TIMEOut <NR3>
            - TRIGger:B:RESET:TIMEOut?

        **Info:**
            - ``<NR3>`` specifies the reset time.
        """
        return self._timeout

    @property
    def totalcount(self) -> TriggerBResetTotalcount:
        """Return the ``TRIGger:B:RESET:TOTALCOUNT`` command.

        **Description:**
            - This command queries the Reset Total Count for a sequence trigger reset by the ACCept
              and REJect Reset Types. These are often referred to as the Validation/Invalidation
              Triggers. The TotalCount is the sum of the accepted and rejected triggers when the
              Reset or Accept Reset Types are active, and is part of the equation TotalCount =
              AcceptCount + RejectCount used to form the ratio of accepted to total triggers that is
              optionally displayed when Validation/Invalidation Triggers are employed. For example,
              if the Reset Type Accept is active, the TotalCount is the sum of the accepted and
              rejected triggers processed by the Accept Reset Type, a query only value determined by
              the trigger system. Any acquired waveform obtained by Accept or Reject Reset Types is
              positioned at the A-Event. For example, if the Reset Type Reject is active, the
              TotalCount is the sum of the accepted and rejected triggers processed by the Reject
              Reset Type, a query only value determined by the trigger system. Any acquired waveform
              obtained by Accept or Reject Reset Types is positioned at the A-Event.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET:TOTALCOUNT?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:TOTALCOUNT?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:RESET:TOTALCOUNT?
        """
        return self._totalcount

    @property
    def transition(self) -> TriggerBResetTransition:
        """Return the ``TRIGger:B:RESET:TRANsition`` command.

        **Description:**
            - This command sets or queries the type of transition required for a Transition trigger
              reset.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET:TRANsition?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:TRANsition?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:TRANsition value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:RESET:TRANsition {RISe|FALL}
            - TRIGger:B:RESET:TRANsition?

        **Info:**
            - ``RISe`` indicates that a reset occurs when the trigger rises above the threshold
              level.
            - ``FALL`` indicates that a reset occurs when the trigger falls below the threshold
              level.
        """
        return self._transition

    @property
    def type(self) -> TriggerBResetType:
        """Return the ``TRIGger:B:RESET:TYPe`` command.

        **Description:**
            - This command sets or queries the type of A→B sequential trigger reset. If the B
              trigger reset is active, the reset criteria are part of the B triggering sequence. If
              the reset conditions defined by the reset type are not met, the instrument must start
              over searching for a new occurrence of the A event. You must identify a trigger Source
              and Threshold for each reset type, except for the Timeout, Accept, and Reject trigger
              types.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET:TYPe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET:TYPe?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:RESET:TYPe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:RESET:TYPe {NONe|TIMEOut|STATE|TRANsition|ACCepts|REJects}
            - TRIGger:B:RESET:TYPe?

        **Info:**
            - ``NONe`` defeats the trigger reset feature.
            - ``TIMEOut`` initiates a reset if the timeout conditions specified by
              ``TRIGger:B:RESET:TIMEOut`` are met.
            - ``STATE`` initiates a reset if the state conditions specified by TRIGger:
              ``B:RESET:SOUrce``, ``TRIGger:B:RESET:STATE``, and ``TRIGger:B:RESET:THReshold`` are
              met.
            - ``TRANsition`` initiates a reset if the transition conditions specified by
              ``TRIGger:B:RESET:SOUrce``, ``TRIGger:B:RESET:TRANsition``, and
              ``TRIGger:B:RESET:THReshold`` are met.
            - ``ACCepts`` initiates a trigger at the A-Event if the B-Event occurs before the Accept
              Timeout, as measured from the A- to the B-Event. That is, the B-Event Accepts
              (validates) the A- Event. Otherwise the oscilloscope does not trigger. The trigger
              location is at the A-Event.
            - ``REJects`` initiates a trigger if the Reject Timeout expires before the B-Event
              occurs, as measured from the A- to the B-Event. That is, reception of the B-Event
              Rejects (invalidates) the A-Event. Otherwise the oscilloscope does not trigger (if the
              B-Event occurs before the Reject Timeout). The trigger location is at the A-Event.
        """
        return self._type


class TriggerBReady(SCPICmdRead):
    """The ``TRIGger:B:READY`` command.

    **Description:**
        - This command queries the trigger ready state and provides the immediate state from the
          trigger system. It is a more synchronous means of determining when the oscilloscope is
          ready to trigger. The ``TRIGGER:STATE`` reflects a less-frequently updated status of the
          trigger LEDs on the instrument front panel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:READY?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:READY?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:READY?
    """


class TriggerBPulseWindowWidth(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WINdow:WIDTH`` command.

    **Description:**
        - This command sets or queries the minimum width for a window violation. This command is
          equivalent to selecting Window Setup from the Trig menu, selecting Wider than in the
          Trigger When box, and setting the Width.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:WIDTH?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow:WIDTH?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WINdow:WIDTH value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WINdow:WIDTH <NR3>
        - TRIGger:B:PULse:WINdow:WIDTH?

    **Info:**
        - ``<NR3>`` argument specifies the minimum width in seconds.
    """


class TriggerBPulseWindowWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WINdow:WHEn`` command.

    **Description:**
        - This command set or queries the

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow:WHEn?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WINdow:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WINdow:WHEn {OCCurs|WIDERthan}
        - TRIGger:B:PULse:WINdow:WHEn?
    """


class TriggerBPulseWindowType(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WINdow:TYPe`` command.

    **Description:**
        - This command set or queries the

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:TYPe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow:TYPe?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WINdow:TYPe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WINdow:TYPe {INSide|OUTside}
        - TRIGger:B:PULse:WINdow:TYPe?
    """


class TriggerBPulseWindowThresholdLow(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WINdow:THReshold:LOW`` command.

    **Description:**
        - This command sets or queries the lower limit for the window trigger. This command is
          equivalent to selecting Window Setup from the Trig menu and setting the Lower Level
          voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:THReshold:LOW?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:PULse:WINdow:THReshold:LOW?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:WINdow:THReshold:LOW value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WINdow:THReshold:LOW <NR3>
        - TRIGger:B:PULse:WINdow:THReshold:LOW?

    **Info:**
        - ``<NR3>`` specifies the threshold value in volts.
    """


class TriggerBPulseWindowThresholdHigh(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WINdow:THReshold:HIGH`` command.

    **Description:**
        - This command sets or queries the upper limit for the pulse window trigger. This command is
          equivalent to selecting Window Setup from the Trig menu and setting the window trigger
          Upper Level voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:THReshold:HIGH?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:PULse:WINdow:THReshold:HIGH?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:WINdow:THReshold:HIGH value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WINdow:THReshold:HIGH <NR3>
        - TRIGger:B:PULse:WINdow:THReshold:HIGH?

    **Info:**
        - ``<NR3>`` specifies the threshold value in volts.
    """


class TriggerBPulseWindowThresholdBoth(SCPICmdWrite):
    """The ``TRIGger:B:PULse:WINdow:THReshold:BOTh`` command.

    **Description:**
        - This command (no query form) sets the upper and lower switching thresholds for the window
          trigger. This command is equivalent to selecting Window Setup from the Trig menu and then
          setting the Upper Level and Lower Level voltages.

    **Usage:**
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:WINdow:THReshold:BOTh value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WINdow:THReshold:BOTh {TTL|ECL}

    **Info:**
        - ``TTL`` argument sets the upper and the lower threshold to the nominal TTL voltage levels.
        - ``ECL`` argument sets the upper and the lower threshold to the nominal ECL voltage levels.
    """


class TriggerBPulseWindowThreshold(SCPICmdRead):
    """The ``TRIGger:B:PULse:WINdow:THReshold`` command.

    **Description:**
        - This query-only command returns the upper and lower thresholds for the window trigger.
          This command query is equivalent to selecting Window Setup from the Trig menu and viewing
          the window trigger Upper Level and Lower Level settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:THReshold?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow:THReshold?``
          query and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WINdow:THReshold?

    Properties:
        - ``.both``: The ``TRIGger:B:PULse:WINdow:THReshold:BOTh`` command.
        - ``.high``: The ``TRIGger:B:PULse:WINdow:THReshold:HIGH`` command.
        - ``.low``: The ``TRIGger:B:PULse:WINdow:THReshold:LOW`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._both = TriggerBPulseWindowThresholdBoth(device, f"{self._cmd_syntax}:BOTh")
        self._high = TriggerBPulseWindowThresholdHigh(device, f"{self._cmd_syntax}:HIGH")
        self._low = TriggerBPulseWindowThresholdLow(device, f"{self._cmd_syntax}:LOW")

    @property
    def both(self) -> TriggerBPulseWindowThresholdBoth:
        """Return the ``TRIGger:B:PULse:WINdow:THReshold:BOTh`` command.

        **Description:**
            - This command (no query form) sets the upper and lower switching thresholds for the
              window trigger. This command is equivalent to selecting Window Setup from the Trig
              menu and then setting the Upper Level and Lower Level voltages.

        **Usage:**
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WINdow:THReshold:BOTh value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WINdow:THReshold:BOTh {TTL|ECL}

        **Info:**
            - ``TTL`` argument sets the upper and the lower threshold to the nominal TTL voltage
              levels.
            - ``ECL`` argument sets the upper and the lower threshold to the nominal ECL voltage
              levels.
        """
        return self._both

    @property
    def high(self) -> TriggerBPulseWindowThresholdHigh:
        """Return the ``TRIGger:B:PULse:WINdow:THReshold:HIGH`` command.

        **Description:**
            - This command sets or queries the upper limit for the pulse window trigger. This
              command is equivalent to selecting Window Setup from the Trig menu and setting the
              window trigger Upper Level voltage.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:THReshold:HIGH?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:WINdow:THReshold:HIGH?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WINdow:THReshold:HIGH value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WINdow:THReshold:HIGH <NR3>
            - TRIGger:B:PULse:WINdow:THReshold:HIGH?

        **Info:**
            - ``<NR3>`` specifies the threshold value in volts.
        """
        return self._high

    @property
    def low(self) -> TriggerBPulseWindowThresholdLow:
        """Return the ``TRIGger:B:PULse:WINdow:THReshold:LOW`` command.

        **Description:**
            - This command sets or queries the lower limit for the window trigger. This command is
              equivalent to selecting Window Setup from the Trig menu and setting the Lower Level
              voltage.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:THReshold:LOW?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:WINdow:THReshold:LOW?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WINdow:THReshold:LOW value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WINdow:THReshold:LOW <NR3>
            - TRIGger:B:PULse:WINdow:THReshold:LOW?

        **Info:**
            - ``<NR3>`` specifies the threshold value in volts.
        """
        return self._low


class TriggerBPulseWindowQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WINdow:QUAlify`` command.

    **Description:**
        - This command sets or queries the Window Trigger qualification. This is equivalent to
          selecting Window Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
          Trigger If Window drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow:QUAlify?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WINdow:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WINdow:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:B:PULse:WINdow:QUAlify?

    **Info:**
        - ``OCCurs`` specifies a trigger if any detectable event occurs.
        - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
          patterns and thresholds set by the.
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerBPulseWindowPolarityChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WINdow:POLarity:CH<x>`` command.

    **Description:**
        - This command sets or queries the pulse trigger window polarity of the specified channel.
          The oscilloscope triggers only when the signal exits the window. The command is available
          only when the Window Event is set to Inside > t and not available for the rest of the
          window events. The logic selection is available only when the polarity is set to Either.
          <x> is the search number or channel number.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:POLarity:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:PULse:WINdow:POLarity:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:WINdow:POLarity:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WINdow:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
        - TRIGger:B:PULse:WINdow:POLarity:CH<x>?

    **Info:**
        - ``EITher`` specifies positive or negative polarity.
        - ``NEGAtive`` specifies a negative polarity.
        - ``POSITIVe`` specifies a positive polarity.
    """


class TriggerBPulseWindowPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WINdow:POLarity`` command.

    **Description:**
        - This command sets or queries the pulse trigger window polarity of the selected trigger
          Source. The instrument triggers when the signal exits the window. The command is available
          only when the option Inside > t is selected in the Window Event drop-dowm list and not
          available for the rest of the window events. The logic selection is available only when
          the polarity is set to Either.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WINdow:POLarity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WINdow:POLarity {EITher|NEGAtive|POSITIVe}
        - TRIGger:B:PULse:WINdow:POLarity?

    **Info:**
        - ``EITher`` specifies positive or negative polarity.
        - ``NEGAtive`` specifies a negative polarity.
        - ``POSITIVe`` specifies a positive polarity.

    Properties:
        - ``.ch``: The ``TRIGger:B:PULse:WINdow:POLarity:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBPulseWindowPolarityChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBPulseWindowPolarityChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBPulseWindowPolarityChannel]:
        """Return the ``TRIGger:B:PULse:WINdow:POLarity:CH<x>`` command.

        **Description:**
            - This command sets or queries the pulse trigger window polarity of the specified
              channel. The oscilloscope triggers only when the signal exits the window. The command
              is available only when the Window Event is set to Inside > t and not available for the
              rest of the window events. The logic selection is available only when the polarity is
              set to Either. <x> is the search number or channel number.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:POLarity:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:WINdow:POLarity:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WINdow:POLarity:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WINdow:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
            - TRIGger:B:PULse:WINdow:POLarity:CH<x>?

        **Info:**
            - ``EITher`` specifies positive or negative polarity.
            - ``NEGAtive`` specifies a negative polarity.
            - ``POSITIVe`` specifies a positive polarity.
        """
        return self._ch


class TriggerBPulseWindowEvent(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WINdow:EVENT`` command.

    **Description:**
        - This command sets or queries the window trigger event. This command is equivalent to
          selecting Window Setup from the Trig menu and selecting from the Window Event box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:EVENT?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow:EVENT?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WINdow:EVENT value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WINdow:EVENT {OUTSIDEGreater|INSIDEGreater|ENTERSWindow|EXITSWindow}
        - TRIGger:B:PULse:WINdow:EVENT?

    **Info:**
        - ``OUTSIDEGreater`` specifies a trigger event when the signal leaves the window defined by
          the threshold levels for the time specified by Width.
        - ``INSIDEGreater`` specifies a trigger event when the signal enters the window defined by
          the threshold levels for the time specified by Width.
        - ``ENTERSWindow`` specifies a trigger event when the signal enters the window defined by
          the threshold levels.
        - ``EXITSWindow`` specifies a trigger event when the signal leaves the window defined by the
          threshold levels.
    """


class TriggerBPulseWindow(SCPICmdRead):
    """The ``TRIGger:B:PULse:WINdow`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.type``: The ``TRIGger:B:PULse:WINdow:TYPe`` command.
        - ``.when``: The ``TRIGger:B:PULse:WINdow:WHEn`` command.
        - ``.event``: The ``TRIGger:B:PULse:WINdow:EVENT`` command.
        - ``.polarity``: The ``TRIGger:B:PULse:WINdow:POLarity`` command.
        - ``.qualify``: The ``TRIGger:B:PULse:WINdow:QUAlify`` command.
        - ``.threshold``: The ``TRIGger:B:PULse:WINdow:THReshold`` command.
        - ``.width``: The ``TRIGger:B:PULse:WINdow:WIDTH`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._event = TriggerBPulseWindowEvent(device, f"{self._cmd_syntax}:EVENT")
        self._polarity = TriggerBPulseWindowPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerBPulseWindowQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._threshold = TriggerBPulseWindowThreshold(device, f"{self._cmd_syntax}:THReshold")
        self._type = TriggerBPulseWindowType(device, f"{self._cmd_syntax}:TYPe")
        self._when = TriggerBPulseWindowWhen(device, f"{self._cmd_syntax}:WHEn")
        self._width = TriggerBPulseWindowWidth(device, f"{self._cmd_syntax}:WIDTH")

    @property
    def event(self) -> TriggerBPulseWindowEvent:
        """Return the ``TRIGger:B:PULse:WINdow:EVENT`` command.

        **Description:**
            - This command sets or queries the window trigger event. This command is equivalent to
              selecting Window Setup from the Trig menu and selecting from the Window Event box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:EVENT?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow:EVENT?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WINdow:EVENT value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WINdow:EVENT {OUTSIDEGreater|INSIDEGreater|ENTERSWindow|EXITSWindow}
            - TRIGger:B:PULse:WINdow:EVENT?

        **Info:**
            - ``OUTSIDEGreater`` specifies a trigger event when the signal leaves the window defined
              by the threshold levels for the time specified by Width.
            - ``INSIDEGreater`` specifies a trigger event when the signal enters the window defined
              by the threshold levels for the time specified by Width.
            - ``ENTERSWindow`` specifies a trigger event when the signal enters the window defined
              by the threshold levels.
            - ``EXITSWindow`` specifies a trigger event when the signal leaves the window defined by
              the threshold levels.
        """
        return self._event

    @property
    def polarity(self) -> TriggerBPulseWindowPolarity:
        """Return the ``TRIGger:B:PULse:WINdow:POLarity`` command.

        **Description:**
            - This command sets or queries the pulse trigger window polarity of the selected trigger
              Source. The instrument triggers when the signal exits the window. The command is
              available only when the option Inside > t is selected in the Window Event drop-dowm
              list and not available for the rest of the window events. The logic selection is
              available only when the polarity is set to Either.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:POLarity?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow:POLarity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WINdow:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WINdow:POLarity {EITher|NEGAtive|POSITIVe}
            - TRIGger:B:PULse:WINdow:POLarity?

        **Info:**
            - ``EITher`` specifies positive or negative polarity.
            - ``NEGAtive`` specifies a negative polarity.
            - ``POSITIVe`` specifies a positive polarity.

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:PULse:WINdow:POLarity:CH<x>`` command.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerBPulseWindowQualify:
        """Return the ``TRIGger:B:PULse:WINdow:QUAlify`` command.

        **Description:**
            - This command sets or queries the Window Trigger qualification. This is equivalent to
              selecting Window Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
              Trigger If Window drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:QUAlify?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WINdow:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WINdow:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:B:PULse:WINdow:QUAlify?

        **Info:**
            - ``OCCurs`` specifies a trigger if any detectable event occurs.
            - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
              patterns and thresholds set by the.
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def threshold(self) -> TriggerBPulseWindowThreshold:
        """Return the ``TRIGger:B:PULse:WINdow:THReshold`` command.

        **Description:**
            - This query-only command returns the upper and lower thresholds for the window trigger.
              This command query is equivalent to selecting Window Setup from the Trig menu and
              viewing the window trigger Upper Level and Lower Level settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:THReshold?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:WINdow:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WINdow:THReshold?

        Sub-properties:
            - ``.both``: The ``TRIGger:B:PULse:WINdow:THReshold:BOTh`` command.
            - ``.high``: The ``TRIGger:B:PULse:WINdow:THReshold:HIGH`` command.
            - ``.low``: The ``TRIGger:B:PULse:WINdow:THReshold:LOW`` command.
        """
        return self._threshold

    @property
    def type(self) -> TriggerBPulseWindowType:
        """Return the ``TRIGger:B:PULse:WINdow:TYPe`` command.

        **Description:**
            - This command set or queries the

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:TYPe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow:TYPe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WINdow:TYPe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WINdow:TYPe {INSide|OUTside}
            - TRIGger:B:PULse:WINdow:TYPe?
        """
        return self._type

    @property
    def when(self) -> TriggerBPulseWindowWhen:
        """Return the ``TRIGger:B:PULse:WINdow:WHEn`` command.

        **Description:**
            - This command set or queries the

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:WHEn?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow:WHEn?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WINdow:WHEn value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WINdow:WHEn {OCCurs|WIDERthan}
            - TRIGger:B:PULse:WINdow:WHEn?
        """
        return self._when

    @property
    def width(self) -> TriggerBPulseWindowWidth:
        """Return the ``TRIGger:B:PULse:WINdow:WIDTH`` command.

        **Description:**
            - This command sets or queries the minimum width for a window violation. This command is
              equivalent to selecting Window Setup from the Trig menu, selecting Wider than in the
              Trigger When box, and setting the Width.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow:WIDTH?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow:WIDTH?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WINdow:WIDTH value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WINdow:WIDTH <NR3>
            - TRIGger:B:PULse:WINdow:WIDTH?

        **Info:**
            - ``<NR3>`` argument specifies the minimum width in seconds.
        """
        return self._width


class TriggerBPulseWidthWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WIDth:WHEn`` command.

    **Description:**
        - This command sets or queries whether to trigger on a pulse width that falls outside (or
          within) the specified range of limits. You can define or query trigger pulse width upper
          and lower limits using the ``TRIGger:A:PULse:WIDth:HIGHLimit`` and
          ``TRIGger:A:PULse:WIDth:LOWLimit`` commands. This command is equivalent to selecting Width
          Setup from the Trig menu and then choosing from the Trig When drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WIDth:WHEn?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WIDth:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WIDth:WHEn {OUTside|WIThin}
        - TRIGger:B:PULse:WIDth:WHEn?

    **Info:**
        - ``OUTside`` argument causes a trigger event the duration of the pulse is greater than the
          high limit or less than the low limit specified. The high and low limits are specified
          with the ``TRIGger:A:PULse:WIDth:HIGHLimit`` and ``TRIGger:A:PULse:WIDth:LOWLimit``
          commands respectively.
        - ``WIThin`` argument causes a trigger event when the duration of the pulse is within the
          high and low limits. The high and low limits are specified with the
          ``TRIGger:A:PULse:WIDth:HIGHLimit`` and ``TRIGger:A:PULse:WIDth:LOWLimit`` command
          respectively.
    """


class TriggerBPulseWidthQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WIDth:QUAlify`` command.

    **Description:**
        - This command sets or queries the Width Trigger qualification. This is equivalent to
          selecting Width Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
          Trigger If Width drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WIDth:QUAlify?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WIDth:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WIDth:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:B:PULse:WIDth:QUAlify?

    **Info:**
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerBPulseWidthPolarityChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WIDth:POLarity:CH<x>`` command.

    **Description:**
        - This command sets or queries the polarity for the A or B pulse width trigger for the
          channel. This command is equivalent to selecting Width Setup from the Trig menu and then
          selecting the pulse width trigger Polarity for the channel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:POLarity:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:PULse:WIDth:POLarity:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:WIDth:POLarity:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WIDth:POLarity:CH<x> {NEGAtive|POSITIVe}
        - TRIGger:B:PULse:WIDth:POLarity:CH<x>?

    **Info:**
        - ``NEGAtive`` specifies a negative pulse.
        - ``POSITIVe`` specifies a positive pulse.
    """


class TriggerBPulseWidthPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WIDth:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity for the width trigger. This command is
          equivalent to selecting Width Setup from the Trig menu and selecting the Polarity.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WIDth:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WIDth:POLarity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WIDth:POLarity {NEGAtive|POSITIVe}
        - TRIGger:B:PULse:WIDth:POLarity?

    **Info:**
        - ``NEGAtive`` specifies a negative pulse.
        - ``POSITIVe`` specifies a positive pulse.

    Properties:
        - ``.ch``: The ``TRIGger:B:PULse:WIDth:POLarity:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBPulseWidthPolarityChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBPulseWidthPolarityChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBPulseWidthPolarityChannel]:
        """Return the ``TRIGger:B:PULse:WIDth:POLarity:CH<x>`` command.

        **Description:**
            - This command sets or queries the polarity for the A or B pulse width trigger for the
              channel. This command is equivalent to selecting Width Setup from the Trig menu and
              then selecting the pulse width trigger Polarity for the channel.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:POLarity:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:WIDth:POLarity:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WIDth:POLarity:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WIDth:POLarity:CH<x> {NEGAtive|POSITIVe}
            - TRIGger:B:PULse:WIDth:POLarity:CH<x>?

        **Info:**
            - ``NEGAtive`` specifies a negative pulse.
            - ``POSITIVe`` specifies a positive pulse.
        """
        return self._ch


class TriggerBPulseWidthLowpassfilter(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WIDth:LOWPASSfilter`` command.

    **Description:**
        - This command turns on or turn off the low­pass filter feature for pulse width trigger.
          This allows triggering in the presence of high­ frequency signal edges.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:LOWPASSfilter?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WIDth:LOWPASSfilter?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:WIDth:LOWPASSfilter value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WIDth:LOWPASSfilter {ON|OFF}
        - TRIGger:B:PULse:WIDth:LOWPASSfilter?

    **Info:**
        - ``ON`` enables low­pass filter feature.
        - ``OFF`` disables low­pass filter feature.
    """


class TriggerBPulseWidthLowlimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WIDth:LOWLimit`` command.

    **Description:**
        - This command sets or queries the lower limit for the width trigger. This command is
          equivalent to selecting Width Setup from the Trig menu and setting the pulse Lower Limit.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:LOWLimit?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WIDth:LOWLimit?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WIDth:LOWLimit value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WIDth:LOWLimit <NR3>
        - TRIGger:B:PULse:WIDth:LOWLimit?

    **Info:**
        - ``<NR3>`` specifies the A pulse width trigger lower limit in seconds.
    """


class TriggerBPulseWidthHighlimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:WIDth:HIGHLimit`` command.

    **Description:**
        - This command sets or queries the upper limit for the width trigger. This command is
          equivalent to selecting Width Setup from the Trig menu and setting the Upper Limit.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:HIGHLimit?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WIDth:HIGHLimit?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WIDth:HIGHLimit value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WIDth:HIGHLimit <NR3>
        - TRIGger:B:PULse:WIDth:HIGHLimit?

    **Info:**
        - ``<NR3>`` specifies the width trigger upper limit in seconds.
    """


class TriggerBPulseWidth(SCPICmdRead):
    """The ``TRIGger:B:PULse:WIDth`` command.

    **Description:**
        - This query-only command returns the width parameters for the pulse width trigger. This
          command is equivalent to selecting Width Setup from the Trig menu and then viewing the
          current pulse width trigger Lower Limit, Upper Limit, Trig When and Polarity settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WIDth?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:WIDth?

    Properties:
        - ``.highlimit``: The ``TRIGger:B:PULse:WIDth:HIGHLimit`` command.
        - ``.lowlimit``: The ``TRIGger:B:PULse:WIDth:LOWLimit`` command.
        - ``.lowpassfilter``: The ``TRIGger:B:PULse:WIDth:LOWPASSfilter`` command.
        - ``.polarity``: The ``TRIGger:B:PULse:WIDth:POLarity`` command.
        - ``.qualify``: The ``TRIGger:B:PULse:WIDth:QUAlify`` command.
        - ``.when``: The ``TRIGger:B:PULse:WIDth:WHEn`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._highlimit = TriggerBPulseWidthHighlimit(device, f"{self._cmd_syntax}:HIGHLimit")
        self._lowlimit = TriggerBPulseWidthLowlimit(device, f"{self._cmd_syntax}:LOWLimit")
        self._lowpassfilter = TriggerBPulseWidthLowpassfilter(
            device, f"{self._cmd_syntax}:LOWPASSfilter"
        )
        self._polarity = TriggerBPulseWidthPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerBPulseWidthQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._when = TriggerBPulseWidthWhen(device, f"{self._cmd_syntax}:WHEn")

    @property
    def highlimit(self) -> TriggerBPulseWidthHighlimit:
        """Return the ``TRIGger:B:PULse:WIDth:HIGHLimit`` command.

        **Description:**
            - This command sets or queries the upper limit for the width trigger. This command is
              equivalent to selecting Width Setup from the Trig menu and setting the Upper Limit.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:HIGHLimit?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WIDth:HIGHLimit?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WIDth:HIGHLimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WIDth:HIGHLimit <NR3>
            - TRIGger:B:PULse:WIDth:HIGHLimit?

        **Info:**
            - ``<NR3>`` specifies the width trigger upper limit in seconds.
        """
        return self._highlimit

    @property
    def lowlimit(self) -> TriggerBPulseWidthLowlimit:
        """Return the ``TRIGger:B:PULse:WIDth:LOWLimit`` command.

        **Description:**
            - This command sets or queries the lower limit for the width trigger. This command is
              equivalent to selecting Width Setup from the Trig menu and setting the pulse Lower
              Limit.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:LOWLimit?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WIDth:LOWLimit?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WIDth:LOWLimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WIDth:LOWLimit <NR3>
            - TRIGger:B:PULse:WIDth:LOWLimit?

        **Info:**
            - ``<NR3>`` specifies the A pulse width trigger lower limit in seconds.
        """
        return self._lowlimit

    @property
    def lowpassfilter(self) -> TriggerBPulseWidthLowpassfilter:
        """Return the ``TRIGger:B:PULse:WIDth:LOWPASSfilter`` command.

        **Description:**
            - This command turns on or turn off the low­pass filter feature for pulse width trigger.
              This allows triggering in the presence of high­ frequency signal edges.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:LOWPASSfilter?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:WIDth:LOWPASSfilter?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WIDth:LOWPASSfilter value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WIDth:LOWPASSfilter {ON|OFF}
            - TRIGger:B:PULse:WIDth:LOWPASSfilter?

        **Info:**
            - ``ON`` enables low­pass filter feature.
            - ``OFF`` disables low­pass filter feature.
        """
        return self._lowpassfilter

    @property
    def polarity(self) -> TriggerBPulseWidthPolarity:
        """Return the ``TRIGger:B:PULse:WIDth:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity for the width trigger. This command is
              equivalent to selecting Width Setup from the Trig menu and selecting the Polarity.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:POLarity?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WIDth:POLarity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WIDth:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WIDth:POLarity {NEGAtive|POSITIVe}
            - TRIGger:B:PULse:WIDth:POLarity?

        **Info:**
            - ``NEGAtive`` specifies a negative pulse.
            - ``POSITIVe`` specifies a positive pulse.

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:PULse:WIDth:POLarity:CH<x>`` command.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerBPulseWidthQualify:
        """Return the ``TRIGger:B:PULse:WIDth:QUAlify`` command.

        **Description:**
            - This command sets or queries the Width Trigger qualification. This is equivalent to
              selecting Width Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
              Trigger If Width drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:QUAlify?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WIDth:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:WIDth:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WIDth:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:B:PULse:WIDth:QUAlify?

        **Info:**
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def when(self) -> TriggerBPulseWidthWhen:
        """Return the ``TRIGger:B:PULse:WIDth:WHEn`` command.

        **Description:**
            - This command sets or queries whether to trigger on a pulse width that falls outside
              (or within) the specified range of limits. You can define or query trigger pulse width
              upper and lower limits using the ``TRIGger:A:PULse:WIDth:HIGHLimit`` and
              ``TRIGger:A:PULse:WIDth:LOWLimit`` commands. This command is equivalent to selecting
              Width Setup from the Trig menu and then choosing from the Trig When drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth:WHEn?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WIDth:WHEn?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:WIDth:WHEn value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WIDth:WHEn {OUTside|WIThin}
            - TRIGger:B:PULse:WIDth:WHEn?

        **Info:**
            - ``OUTside`` argument causes a trigger event the duration of the pulse is greater than
              the high limit or less than the low limit specified. The high and low limits are
              specified with the ``TRIGger:A:PULse:WIDth:HIGHLimit`` and
              ``TRIGger:A:PULse:WIDth:LOWLimit`` commands respectively.
            - ``WIThin`` argument causes a trigger event when the duration of the pulse is within
              the high and low limits. The high and low limits are specified with the
              ``TRIGger:A:PULse:WIDth:HIGHLimit`` and ``TRIGger:A:PULse:WIDth:LOWLimit`` command
              respectively.
        """
        return self._when


class TriggerBPulseTransitionWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:TRANsition:WHEn`` command.

    **Description:**
        - This command sets or queries whether to check for a transitioning signal that is faster or
          slower than the specified delta time. This is equivalent to selecting Transition Setup
          from the Trig menu and choosing the Trigger When Transition Time setting.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:TRANsition:WHEn?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:TRANsition:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TRANsition:WHEn {FASTERthan|SLOWERthan}
        - TRIGger:B:PULse:TRANsition:WHEn?

    **Info:**
        - ``FASTERthan`` sets the trigger to occur when the transitioning signal is faster than the
          set volts/second rate.
        - ``SLOWERthan`` sets the trigger to occur when the transitioning signal is slower than the
          set volts/second rate.
    """


class TriggerBPulseTransitionThresholdLow(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:TRANsition:THReshold:LOW`` command.

    **Description:**
        - This command sets or queries the lower (most negative) transition trigger threshold. This
          command is equivalent to selecting Transition Setup from the Trig menu and setting the
          desired Lower Level voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition:THReshold:LOW?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:PULse:TRANsition:THReshold:LOW?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:TRANsition:THReshold:LOW value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TRANsition:THReshold:LOW <NR3>
        - TRIGger:B:PULse:TRANsition:THReshold:LOW?

    **Info:**
        - ``<NR3>`` specifies the lower threshold in volts.
    """


class TriggerBPulseTransitionThresholdHigh(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:TRANsition:THReshold:HIGH`` command.

    **Description:**
        - This command sets or queries the upper (most positive) transition trigger threshold. This
          command is equivalent to selecting Transition Setup from the Trig menu and then setting
          the desired Upper Level voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition:THReshold:HIGH?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:PULse:TRANsition:THReshold:HIGH?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:TRANsition:THReshold:HIGH value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TRANsition:THReshold:HIGH <NR3>
        - TRIGger:B:PULse:TRANsition:THReshold:HIGH?

    **Info:**
        - ``<NR3>`` specifies the upper threshold in volts.
    """


class TriggerBPulseTransitionThresholdBoth(SCPICmdWrite):
    """The ``TRIGger:B:PULse:TRANsition:THReshold:BOTh`` command.

    **Description:**
        - This command (no query form) sets the upper and lower thresholds for the transition
          trigger. This command is equivalent to selecting Transition Setup from the Trig menu and
          setting the desired Upper Level and Lower Level voltages.

    **Usage:**
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:TRANsition:THReshold:BOTh value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TRANsition:THReshold:BOTh {TTL|ECL}

    **Info:**
        - ``TTL`` sets the upper and lower threshold to the nominal TTL voltage levels.
        - ``ECL`` sets the upper and the lower threshold to the nominal ECL voltage levels.
    """


class TriggerBPulseTransitionThreshold(SCPICmdRead):
    """The ``TRIGger:B:PULse:TRANsition:THReshold`` command.

    **Description:**
        - This query-only command returns the upper and lower threshold limits for the transition
          time trigger. This command is equivalent to selecting Transition Setup from the Trig menu
          and viewing the Upper Level and Lower Level voltage settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition:THReshold?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:PULse:TRANsition:THReshold?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TRANsition:THReshold?

    Properties:
        - ``.both``: The ``TRIGger:B:PULse:TRANsition:THReshold:BOTh`` command.
        - ``.high``: The ``TRIGger:B:PULse:TRANsition:THReshold:HIGH`` command.
        - ``.low``: The ``TRIGger:B:PULse:TRANsition:THReshold:LOW`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._both = TriggerBPulseTransitionThresholdBoth(device, f"{self._cmd_syntax}:BOTh")
        self._high = TriggerBPulseTransitionThresholdHigh(device, f"{self._cmd_syntax}:HIGH")
        self._low = TriggerBPulseTransitionThresholdLow(device, f"{self._cmd_syntax}:LOW")

    @property
    def both(self) -> TriggerBPulseTransitionThresholdBoth:
        """Return the ``TRIGger:B:PULse:TRANsition:THReshold:BOTh`` command.

        **Description:**
            - This command (no query form) sets the upper and lower thresholds for the transition
              trigger. This command is equivalent to selecting Transition Setup from the Trig menu
              and setting the desired Upper Level and Lower Level voltages.

        **Usage:**
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:THReshold:BOTh value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TRANsition:THReshold:BOTh {TTL|ECL}

        **Info:**
            - ``TTL`` sets the upper and lower threshold to the nominal TTL voltage levels.
            - ``ECL`` sets the upper and the lower threshold to the nominal ECL voltage levels.
        """
        return self._both

    @property
    def high(self) -> TriggerBPulseTransitionThresholdHigh:
        """Return the ``TRIGger:B:PULse:TRANsition:THReshold:HIGH`` command.

        **Description:**
            - This command sets or queries the upper (most positive) transition trigger threshold.
              This command is equivalent to selecting Transition Setup from the Trig menu and then
              setting the desired Upper Level voltage.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:B:PULse:TRANsition:THReshold:HIGH?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:THReshold:HIGH?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:THReshold:HIGH value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TRANsition:THReshold:HIGH <NR3>
            - TRIGger:B:PULse:TRANsition:THReshold:HIGH?

        **Info:**
            - ``<NR3>`` specifies the upper threshold in volts.
        """
        return self._high

    @property
    def low(self) -> TriggerBPulseTransitionThresholdLow:
        """Return the ``TRIGger:B:PULse:TRANsition:THReshold:LOW`` command.

        **Description:**
            - This command sets or queries the lower (most negative) transition trigger threshold.
              This command is equivalent to selecting Transition Setup from the Trig menu and
              setting the desired Lower Level voltage.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:B:PULse:TRANsition:THReshold:LOW?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:THReshold:LOW?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:THReshold:LOW value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TRANsition:THReshold:LOW <NR3>
            - TRIGger:B:PULse:TRANsition:THReshold:LOW?

        **Info:**
            - ``<NR3>`` specifies the lower threshold in volts.
        """
        return self._low


class TriggerBPulseTransitionQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:TRANsition:QUAlify`` command.

    **Description:**
        - This command sets or queries the Transition Time Trigger qualification. This is equivalent
          to selecting Transition Setup from the Trig menu and selecting Occurs, Logic, or Bus in
          the Trigger If Transition drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:TRANsition:QUAlify?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:TRANsition:QUAlify value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TRANsition:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:B:PULse:TRANsition:QUAlify?

    **Info:**
        - ``OCCurs`` specifies a trigger if any violations occur.
        - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
          patterns and thresholds set by the.
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerBPulseTransitionPolarityChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:TRANsition:POLarity:CH<x>`` command.

    **Description:**
        - This command sets or queries the polarity for the A or B pulse transition trigger for the
          channel. This command is equivalent to selecting Transition Setup from the Trig menu and
          then choosing from the Polarity pull-down list for the channel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition:POLarity:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:PULse:TRANsition:POLarity:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:TRANsition:POLarity:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TRANsition:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
        - TRIGger:B:PULse:TRANsition:POLarity:CH<x>?

    **Info:**
        - ``EITher`` indicates either positive or negative polarity.
        - ``NEGAtive`` indicates that a pulse edge must traverse from the upper (most positive) to
          lower (most negative) level for transition triggering to occur.
        - ``POSITIVe`` indicates that a pulse edge must traverse from the lower (most negative) to
          higher (post positive) level for transition triggering to occur.
    """


class TriggerBPulseTransitionPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:TRANsition:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity for the transition trigger. This command is
          equivalent to selecting Transition Setup from the Trig menu and choosing from the Polarity
          drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition:POLarity?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:TRANsition:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:TRANsition:POLarity value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TRANsition:POLarity {POSITIVe|NEGAtive|EITher}
        - TRIGger:B:PULse:TRANsition:POLarity?

    **Info:**
        - ``POSITIVe`` indicates that a pulse edge must traverse from the lower (most negative) to
          higher (most positive) level for transition triggering to occur.
        - ``NEGAtive`` indicates that a pulse edge must traverse from the upper (most positive) to
          lower (most negative) level for transition triggering to occur.
        - ``EITher`` indicates either positive or negative polarity.

    Properties:
        - ``.ch``: The ``TRIGger:B:PULse:TRANsition:POLarity:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBPulseTransitionPolarityChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBPulseTransitionPolarityChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBPulseTransitionPolarityChannel]:
        """Return the ``TRIGger:B:PULse:TRANsition:POLarity:CH<x>`` command.

        **Description:**
            - This command sets or queries the polarity for the A or B pulse transition trigger for
              the channel. This command is equivalent to selecting Transition Setup from the Trig
              menu and then choosing from the Polarity pull-down list for the channel.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:B:PULse:TRANsition:POLarity:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:POLarity:CH<x>?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:POLarity:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TRANsition:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
            - TRIGger:B:PULse:TRANsition:POLarity:CH<x>?

        **Info:**
            - ``EITher`` indicates either positive or negative polarity.
            - ``NEGAtive`` indicates that a pulse edge must traverse from the upper (most positive)
              to lower (most negative) level for transition triggering to occur.
            - ``POSITIVe`` indicates that a pulse edge must traverse from the lower (most negative)
              to higher (post positive) level for transition triggering to occur.
        """
        return self._ch


class TriggerBPulseTransitionDeltatime(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:TRANsition:DELTATime`` command.

    **Description:**
        - This command sets or queries the delta time used in calculating the transition value for
          the transition trigger. This is equivalent to selecting Transition Setup from the Trig
          menu and setting the Time.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition:DELTATime?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:PULse:TRANsition:DELTATime?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:TRANsition:DELTATime value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TRANsition:DELTATime <NR3>
        - TRIGger:B:PULse:TRANsition:DELTATime?

    **Info:**
        - ``<NR3>`` specifies the delta time in seconds.
    """


class TriggerBPulseTransition(SCPICmdRead):
    """The ``TRIGger:B:PULse:TRANsition`` command.

    **Description:**
        - This query-only command returns delta time, polarity, and both upper and lower threshold
          limits for the transition time trigger. This command is equivalent to selecting Transition
          Setup from the Trig menu and then viewing the current transition settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:TRANsition?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TRANsition?

    Properties:
        - ``.deltatime``: The ``TRIGger:B:PULse:TRANsition:DELTATime`` command.
        - ``.polarity``: The ``TRIGger:B:PULse:TRANsition:POLarity`` command.
        - ``.qualify``: The ``TRIGger:B:PULse:TRANsition:QUAlify`` command.
        - ``.threshold``: The ``TRIGger:B:PULse:TRANsition:THReshold`` command.
        - ``.when``: The ``TRIGger:B:PULse:TRANsition:WHEn`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._deltatime = TriggerBPulseTransitionDeltatime(device, f"{self._cmd_syntax}:DELTATime")
        self._polarity = TriggerBPulseTransitionPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerBPulseTransitionQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._threshold = TriggerBPulseTransitionThreshold(device, f"{self._cmd_syntax}:THReshold")
        self._when = TriggerBPulseTransitionWhen(device, f"{self._cmd_syntax}:WHEn")

    @property
    def deltatime(self) -> TriggerBPulseTransitionDeltatime:
        """Return the ``TRIGger:B:PULse:TRANsition:DELTATime`` command.

        **Description:**
            - This command sets or queries the delta time used in calculating the transition value
              for the transition trigger. This is equivalent to selecting Transition Setup from the
              Trig menu and setting the Time.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition:DELTATime?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:DELTATime?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:DELTATime value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TRANsition:DELTATime <NR3>
            - TRIGger:B:PULse:TRANsition:DELTATime?

        **Info:**
            - ``<NR3>`` specifies the delta time in seconds.
        """
        return self._deltatime

    @property
    def polarity(self) -> TriggerBPulseTransitionPolarity:
        """Return the ``TRIGger:B:PULse:TRANsition:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity for the transition trigger. This command is
              equivalent to selecting Transition Setup from the Trig menu and choosing from the
              Polarity drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition:POLarity?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:POLarity?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TRANsition:POLarity {POSITIVe|NEGAtive|EITher}
            - TRIGger:B:PULse:TRANsition:POLarity?

        **Info:**
            - ``POSITIVe`` indicates that a pulse edge must traverse from the lower (most negative)
              to higher (most positive) level for transition triggering to occur.
            - ``NEGAtive`` indicates that a pulse edge must traverse from the upper (most positive)
              to lower (most negative) level for transition triggering to occur.
            - ``EITher`` indicates either positive or negative polarity.

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:PULse:TRANsition:POLarity:CH<x>`` command.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerBPulseTransitionQualify:
        """Return the ``TRIGger:B:PULse:TRANsition:QUAlify`` command.

        **Description:**
            - This command sets or queries the Transition Time Trigger qualification. This is
              equivalent to selecting Transition Setup from the Trig menu and selecting Occurs,
              Logic, or Bus in the Trigger If Transition drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition:QUAlify?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:QUAlify?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TRANsition:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:B:PULse:TRANsition:QUAlify?

        **Info:**
            - ``OCCurs`` specifies a trigger if any violations occur.
            - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
              patterns and thresholds set by the.
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def threshold(self) -> TriggerBPulseTransitionThreshold:
        """Return the ``TRIGger:B:PULse:TRANsition:THReshold`` command.

        **Description:**
            - This query-only command returns the upper and lower threshold limits for the
              transition time trigger. This command is equivalent to selecting Transition Setup from
              the Trig menu and viewing the Upper Level and Lower Level voltage settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition:THReshold?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TRANsition:THReshold?

        Sub-properties:
            - ``.both``: The ``TRIGger:B:PULse:TRANsition:THReshold:BOTh`` command.
            - ``.high``: The ``TRIGger:B:PULse:TRANsition:THReshold:HIGH`` command.
            - ``.low``: The ``TRIGger:B:PULse:TRANsition:THReshold:LOW`` command.
        """
        return self._threshold

    @property
    def when(self) -> TriggerBPulseTransitionWhen:
        """Return the ``TRIGger:B:PULse:TRANsition:WHEn`` command.

        **Description:**
            - This command sets or queries whether to check for a transitioning signal that is
              faster or slower than the specified delta time. This is equivalent to selecting
              Transition Setup from the Trig menu and choosing the Trigger When Transition Time
              setting.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition:WHEn?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:TRANsition:WHEn?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:TRANsition:WHEn value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TRANsition:WHEn {FASTERthan|SLOWERthan}
            - TRIGger:B:PULse:TRANsition:WHEn?

        **Info:**
            - ``FASTERthan`` sets the trigger to occur when the transitioning signal is faster than
              the set volts/second rate.
            - ``SLOWERthan`` sets the trigger to occur when the transitioning signal is slower than
              the set volts/second rate.
        """
        return self._when


class TriggerBPulseTimeoutTime(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:TIMEOut:TIMe`` command.

    **Description:**
        - This command sets or queries the pulse timeout trigger time (measured in seconds). This
          command is equivalent to selecting Timeout Setup from the Trig menu and setting a value
          for Timer.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TIMEOut:TIMe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:TIMEOut:TIMe?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:TIMEOut:TIMe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TIMEOut:TIMe <NR3>
        - TRIGger:B:PULse:TIMEOut:TIMe?

    **Info:**
        - ``<NR3>`` argument specifies the timeout period in seconds.
    """


class TriggerBPulseTimeoutQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:TIMEOut:QUAlify`` command.

    **Description:**
        - This command sets or queries the Timeout Trigger qualification. This is equivalent to
          selecting Timeout Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
          Trigger If Timeout drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TIMEOut:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:TIMEOut:QUAlify?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:TIMEOut:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TIMEOut:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:B:PULse:TIMEOut:QUAlify?

    **Info:**
        - ``OCCurs`` specifies a trigger if any detectable event occurs.
        - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
          patterns and thresholds set by the.
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerBPulseTimeoutPolarityChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:TIMEOut:POLarity:CH<x>`` command.

    **Description:**
        - This command sets or queries the polarity for the A or B pulse timeout trigger for the
          channel. This command is equivalent to selecting Transition Setup from the Trig menu and
          then setting the desired Polarity for the channel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TIMEOut:POLarity:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:PULse:TIMEOut:POLarity:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:TIMEOut:POLarity:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TIMEOut:POLarity:CH<x> {STAYSHigh|STAYSLow|EITher}
        - TRIGger:B:PULse:TIMEOut:POLarity:CH<x>?

    **Info:**
        - ``STAYSHigh`` indicates that a pulse edge must stay high (positive) for the required time
          period to permit time out triggering to occur. This is the default polarity.
        - ``STAYSLow`` indicates that a pulse edge must stay low (negative) for the required time
          period to permit time out triggering to occur.
        - ``EITher`` indicates that the polarity of the time out trigger can stay either high or low
          (positive or negative) for the required time period to permit time out triggering to
          occur.
    """


class TriggerBPulseTimeoutPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:TIMEOut:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity for the pulse timeout trigger. This command is
          equivalent to selecting Timeout Setup from the Trig menu and setting the desired polarity
          in the Trigger When box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TIMEOut:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:TIMEOut:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:TIMEOut:POLarity value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TIMEOut:POLarity {STAYSHigh|STAYSLow|EITher}
        - TRIGger:B:PULse:TIMEOut:POLarity?

    **Info:**
        - ``STAYSHigh`` indicates that a pulse edge must stay high (positive) for the required time
          period to permit timeout triggering to occur. This is the default polarity.
        - ``STAYSLow`` indicates that a pulse edge must stay low (negative) for the required time
          period to permit timeout triggering to occur.
        - ``EITher`` indicates that the polarity of the timeout trigger can stay either high or low
          (positive or negative) for the required time period to permit time out triggering to
          occur.

    Properties:
        - ``.ch``: The ``TRIGger:B:PULse:TIMEOut:POLarity:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBPulseTimeoutPolarityChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBPulseTimeoutPolarityChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBPulseTimeoutPolarityChannel]:
        """Return the ``TRIGger:B:PULse:TIMEOut:POLarity:CH<x>`` command.

        **Description:**
            - This command sets or queries the polarity for the A or B pulse timeout trigger for the
              channel. This command is equivalent to selecting Transition Setup from the Trig menu
              and then setting the desired Polarity for the channel.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:B:PULse:TIMEOut:POLarity:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:TIMEOut:POLarity:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:TIMEOut:POLarity:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TIMEOut:POLarity:CH<x> {STAYSHigh|STAYSLow|EITher}
            - TRIGger:B:PULse:TIMEOut:POLarity:CH<x>?

        **Info:**
            - ``STAYSHigh`` indicates that a pulse edge must stay high (positive) for the required
              time period to permit time out triggering to occur. This is the default polarity.
            - ``STAYSLow`` indicates that a pulse edge must stay low (negative) for the required
              time period to permit time out triggering to occur.
            - ``EITher`` indicates that the polarity of the time out trigger can stay either high or
              low (positive or negative) for the required time period to permit time out triggering
              to occur.
        """
        return self._ch


class TriggerBPulseTimeoutLowpassfilter(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:TIMEOut:LOWPASSfilter`` command.

    **Description:**
        - This command turns on or turns off the low­pass filter feature for Timeout trigger. This
          allows triggering in the presence of high­ frequency signal edges.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TIMEOut:LOWPASSfilter?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:PULse:TIMEOut:LOWPASSfilter?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:TIMEOut:LOWPASSfilter value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TIMEOut:LOWPASSfilter {ON|OFF}
        - TRIGger:B:PULse:TIMEOut:LOWPASSfilter?

    **Info:**
        - ``ON`` enables low­pass filter feature.
        - ``OFF`` disables low­pass filter feature.
    """


class TriggerBPulseTimeout(SCPICmdRead):
    """The ``TRIGger:B:PULse:TIMEOut`` command.

    **Description:**
        - This query-only command returns the polarity and time-out duration for the pulse timeout
          trigger. This command is equivalent to selecting Timeout Setup from the Trig menu and
          viewing the polarity in the Trigger When box and the Timer setting.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TIMEOut?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:TIMEOut?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:TIMEOut?

    Properties:
        - ``.lowpassfilter``: The ``TRIGger:B:PULse:TIMEOut:LOWPASSfilter`` command.
        - ``.polarity``: The ``TRIGger:B:PULse:TIMEOut:POLarity`` command.
        - ``.qualify``: The ``TRIGger:B:PULse:TIMEOut:QUAlify`` command.
        - ``.time``: The ``TRIGger:B:PULse:TIMEOut:TIMe`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._lowpassfilter = TriggerBPulseTimeoutLowpassfilter(
            device, f"{self._cmd_syntax}:LOWPASSfilter"
        )
        self._polarity = TriggerBPulseTimeoutPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerBPulseTimeoutQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._time = TriggerBPulseTimeoutTime(device, f"{self._cmd_syntax}:TIMe")

    @property
    def lowpassfilter(self) -> TriggerBPulseTimeoutLowpassfilter:
        """Return the ``TRIGger:B:PULse:TIMEOut:LOWPASSfilter`` command.

        **Description:**
            - This command turns on or turns off the low­pass filter feature for Timeout trigger.
              This allows triggering in the presence of high­ frequency signal edges.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TIMEOut:LOWPASSfilter?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:TIMEOut:LOWPASSfilter?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:TIMEOut:LOWPASSfilter value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TIMEOut:LOWPASSfilter {ON|OFF}
            - TRIGger:B:PULse:TIMEOut:LOWPASSfilter?

        **Info:**
            - ``ON`` enables low­pass filter feature.
            - ``OFF`` disables low­pass filter feature.
        """
        return self._lowpassfilter

    @property
    def polarity(self) -> TriggerBPulseTimeoutPolarity:
        """Return the ``TRIGger:B:PULse:TIMEOut:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity for the pulse timeout trigger. This command
              is equivalent to selecting Timeout Setup from the Trig menu and setting the desired
              polarity in the Trigger When box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TIMEOut:POLarity?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:TIMEOut:POLarity?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:TIMEOut:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TIMEOut:POLarity {STAYSHigh|STAYSLow|EITher}
            - TRIGger:B:PULse:TIMEOut:POLarity?

        **Info:**
            - ``STAYSHigh`` indicates that a pulse edge must stay high (positive) for the required
              time period to permit timeout triggering to occur. This is the default polarity.
            - ``STAYSLow`` indicates that a pulse edge must stay low (negative) for the required
              time period to permit timeout triggering to occur.
            - ``EITher`` indicates that the polarity of the timeout trigger can stay either high or
              low (positive or negative) for the required time period to permit time out triggering
              to occur.

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:PULse:TIMEOut:POLarity:CH<x>`` command.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerBPulseTimeoutQualify:
        """Return the ``TRIGger:B:PULse:TIMEOut:QUAlify`` command.

        **Description:**
            - This command sets or queries the Timeout Trigger qualification. This is equivalent to
              selecting Timeout Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
              Trigger If Timeout drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TIMEOut:QUAlify?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:TIMEOut:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:TIMEOut:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TIMEOut:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:B:PULse:TIMEOut:QUAlify?

        **Info:**
            - ``OCCurs`` specifies a trigger if any detectable event occurs.
            - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
              patterns and thresholds set by the.
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def time(self) -> TriggerBPulseTimeoutTime:
        """Return the ``TRIGger:B:PULse:TIMEOut:TIMe`` command.

        **Description:**
            - This command sets or queries the pulse timeout trigger time (measured in seconds).
              This command is equivalent to selecting Timeout Setup from the Trig menu and setting a
              value for Timer.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TIMEOut:TIMe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:TIMEOut:TIMe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:TIMEOut:TIMe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TIMEOut:TIMe <NR3>
            - TRIGger:B:PULse:TIMEOut:TIMe?

        **Info:**
            - ``<NR3>`` argument specifies the timeout period in seconds.
        """
        return self._time


class TriggerBPulseSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:SOUrce`` command.

    **Description:**
        - This command sets or queries the source for the pulse trigger. This source parameter
          applies to all classes of pulse triggers. This command is equivalent to selecting Event
          Trigger Setup from the Trig menu, selecting the pulse type (Glitch, Width, Runt, Timeout,
          or Transition), and then choosing the desired channel from the Source pull-down list. When
          an UltraSync stack is used, the mapped channels are used to both acquire waveform data and
          to trigger the oscilloscope. In the special case of an UltraSync stack master, additional
          channels are available for triggering. These are the unmapped channels. For an ATI
          UltraSync stack master, CH2, MCH1, and MCH3 can be used for triggering. For a 4-Channel
          UltraSync stack master, CH1, MCH2, MCH3, and MCH4 are available for triggering. The
          vertical min/max amplitude for these signals must be set up. A detailed discussion is
          provided in .

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:SOUrce?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:SOUrce {CH<x>|D<x>|MCH<x>}
        - TRIGger:B:PULse:SOUrce?

    **Info:**
        - ``CH<x>`` specifies one of the input channels, which range from 1 through 4.
        - ``D<x>`` specifies one of the digital inputs, which range from 0 through 15.
        - ``MCH<x>`` specifies one of the unmapped channels on the master when using an UltraSync
          stack. For details see.
    """


class TriggerBPulseRuntWidth(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:RUNT:WIDth`` command.

    **Description:**
        - This command sets or queries the minimum width for an Pulse Runt trigger. This command is
          equivalent to selecting Runt Setup from the Trig menu and then setting the Width.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:WIDth?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT:WIDth?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:RUNT:WIDth value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:RUNT:WIDth <NR3>
        - TRIGger:B:PULse:RUNT:WIDth?

    **Info:**
        - ``<NR3>`` specifies the minimum width in seconds.
    """


class TriggerBPulseRuntWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:RUNT:WHEn`` command.

    **Description:**
        - This command sets or queries the type of pulse width the trigger checks for when it
          detects a runt. This is equivalent to selecting Runt Setup from the Trig menu and choosing
          the desired Trigger When setting from the drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT:WHEn?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:RUNT:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:RUNT:WHEn {OCCurs|WIDERthan}
        - TRIGger:B:PULse:RUNT:WHEn?

    **Info:**
        - ``OCCurs`` argument specifies a trigger event if a runt of any detectable width occurs.
        - ``WIDERthan`` specifies a trigger event if a runt greater than the specified width occurs.
    """


class TriggerBPulseRuntThresholdLow(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:RUNT:THReshold:LOW`` command.

    **Description:**
        - This command sets or queries the lower limit for the pulse runt trigger. This command is
          equivalent to selecting Runt Setup from the Trig menu and then setting the Lower Level
          voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:THReshold:LOW?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT:THReshold:LOW?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:RUNT:THReshold:LOW value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:RUNT:THReshold:LOW <NR3>
        - TRIGger:B:PULse:RUNT:THReshold:LOW?

    **Info:**
        - ``<NR3>`` specifies the threshold value in volts.
    """


class TriggerBPulseRuntThresholdHigh(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:RUNT:THReshold:HIGH`` command.

    **Description:**
        - This command sets or queries the upper limit for the pulse runt trigger. This command is
          equivalent to selecting Runt Setup from the Trig menu and setting the runt trigger Upper
          Level voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:THReshold:HIGH?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT:THReshold:HIGH?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:RUNT:THReshold:HIGH value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:RUNT:THReshold:HIGH <NR3>
        - TRIGger:B:PULse:RUNT:THReshold:HIGH?

    **Info:**
        - ``<NR3>`` specifies the threshold value in volts.
    """


class TriggerBPulseRuntThresholdBoth(SCPICmdWrite):
    """The ``TRIGger:B:PULse:RUNT:THReshold:BOTh`` command.

    **Description:**
        - This command (no query form) sets the upper and lower switching thresholds for the pulse
          runt trigger. This command is equivalent to selecting Runt Setup from the Trig menu and
          then setting the Upper Level and Lower Level voltages.

    **Usage:**
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:RUNT:THReshold:BOTh value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:RUNT:THReshold:BOTh {TTL|ECL}

    **Info:**
        - ``TTL`` sets the upper and lower threshold to the nominal TTL voltage levels.
        - ``ECL`` sets the upper and lower threshold to the nominal ECL voltage levels.
    """


class TriggerBPulseRuntThreshold(SCPICmdRead):
    """The ``TRIGger:B:PULse:RUNT:THReshold`` command.

    **Description:**
        - This query-only command returns the upper and lower thresholds for the pulse runt trigger.
          This command query is equivalent to selecting Runt Setup from the Trig menu and then
          viewing the Upper Level and Lower Level settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:THReshold?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT:THReshold?``
          query and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:RUNT:THReshold?

    Properties:
        - ``.both``: The ``TRIGger:B:PULse:RUNT:THReshold:BOTh`` command.
        - ``.high``: The ``TRIGger:B:PULse:RUNT:THReshold:HIGH`` command.
        - ``.low``: The ``TRIGger:B:PULse:RUNT:THReshold:LOW`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._both = TriggerBPulseRuntThresholdBoth(device, f"{self._cmd_syntax}:BOTh")
        self._high = TriggerBPulseRuntThresholdHigh(device, f"{self._cmd_syntax}:HIGH")
        self._low = TriggerBPulseRuntThresholdLow(device, f"{self._cmd_syntax}:LOW")

    @property
    def both(self) -> TriggerBPulseRuntThresholdBoth:
        """Return the ``TRIGger:B:PULse:RUNT:THReshold:BOTh`` command.

        **Description:**
            - This command (no query form) sets the upper and lower switching thresholds for the
              pulse runt trigger. This command is equivalent to selecting Runt Setup from the Trig
              menu and then setting the Upper Level and Lower Level voltages.

        **Usage:**
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:RUNT:THReshold:BOTh value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:RUNT:THReshold:BOTh {TTL|ECL}

        **Info:**
            - ``TTL`` sets the upper and lower threshold to the nominal TTL voltage levels.
            - ``ECL`` sets the upper and lower threshold to the nominal ECL voltage levels.
        """
        return self._both

    @property
    def high(self) -> TriggerBPulseRuntThresholdHigh:
        """Return the ``TRIGger:B:PULse:RUNT:THReshold:HIGH`` command.

        **Description:**
            - This command sets or queries the upper limit for the pulse runt trigger. This command
              is equivalent to selecting Runt Setup from the Trig menu and setting the runt trigger
              Upper Level voltage.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:THReshold:HIGH?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:RUNT:THReshold:HIGH?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:RUNT:THReshold:HIGH value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:RUNT:THReshold:HIGH <NR3>
            - TRIGger:B:PULse:RUNT:THReshold:HIGH?

        **Info:**
            - ``<NR3>`` specifies the threshold value in volts.
        """
        return self._high

    @property
    def low(self) -> TriggerBPulseRuntThresholdLow:
        """Return the ``TRIGger:B:PULse:RUNT:THReshold:LOW`` command.

        **Description:**
            - This command sets or queries the lower limit for the pulse runt trigger. This command
              is equivalent to selecting Runt Setup from the Trig menu and then setting the Lower
              Level voltage.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:THReshold:LOW?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:RUNT:THReshold:LOW?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:RUNT:THReshold:LOW value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:RUNT:THReshold:LOW <NR3>
            - TRIGger:B:PULse:RUNT:THReshold:LOW?

        **Info:**
            - ``<NR3>`` specifies the threshold value in volts.
        """
        return self._low


class TriggerBPulseRuntQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:RUNT:QUAlify`` command.

    **Description:**
        - This command sets or queries the Runt Trigger qualification. This is equivalent to
          selecting Runt Setup from the Trig menu and selecting Occurs, Logic, or Bus in the Trigger
          If Runt drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT:QUAlify?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:RUNT:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:RUNT:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:B:PULse:RUNT:QUAlify?

    **Info:**
        - ``OCCurs`` specifies a trigger if any detectable event occurs.
        - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
          patterns and thresholds set by the command.
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerBPulseRuntPolarityChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:RUNT:POLarity:CH<x>`` command.

    **Description:**
        - This command sets or queries the polarity for the A or B pulse runt trigger for the
          channel. This command is equivalent to selecting Runt Setup from the Trig menu and then
          choosing the Polarity setting for the channel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:POLarity:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT:POLarity:CH<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:RUNT:POLarity:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:RUNT:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
        - TRIGger:B:PULse:RUNT:POLarity:CH<x>?

    **Info:**
        - ``EITher`` indicates either negative or positive polarity.
        - ``NEGAtive`` indicates that the falling edge crosses the high threshold and the rising
          edge recrosses the high threshold without either edge ever crossing the low threshold.
        - ``POSITIVe`` indicates that the rising edge crosses the low threshold and the falling edge
          recrosses the low threshold without either edge ever crossing the high threshold.
    """


class TriggerBPulseRuntPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:RUNT:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity for the A or B pulse runt trigger. This command
          is equivalent to selecting Runt Setup from the Trig menu and then choosing the Polarity
          setting.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT:POLarity?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:RUNT:POLarity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:RUNT:POLarity {POSITIVe|NEGAtive|EITher}
        - TRIGger:B:PULse:RUNT:POLarity?

    **Info:**
        - ``POSITIVe`` indicates that the rising edge crosses the low threshold and the falling edge
          recrosses the low threshold without either edge ever crossing the high threshold.
        - ``NEGAtive`` indicates that the falling edge crosses the high threshold and the rising
          edge recrosses the high threshold without either edge ever crossing the low threshold.
        - ``EITher`` indicates either negative or positive polarity.

    Properties:
        - ``.ch``: The ``TRIGger:B:PULse:RUNT:POLarity:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBPulseRuntPolarityChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBPulseRuntPolarityChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBPulseRuntPolarityChannel]:
        """Return the ``TRIGger:B:PULse:RUNT:POLarity:CH<x>`` command.

        **Description:**
            - This command sets or queries the polarity for the A or B pulse runt trigger for the
              channel. This command is equivalent to selecting Runt Setup from the Trig menu and
              then choosing the Polarity setting for the channel.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:POLarity:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:RUNT:POLarity:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:RUNT:POLarity:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:RUNT:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
            - TRIGger:B:PULse:RUNT:POLarity:CH<x>?

        **Info:**
            - ``EITher`` indicates either negative or positive polarity.
            - ``NEGAtive`` indicates that the falling edge crosses the high threshold and the rising
              edge recrosses the high threshold without either edge ever crossing the low threshold.
            - ``POSITIVe`` indicates that the rising edge crosses the low threshold and the falling
              edge recrosses the low threshold without either edge ever crossing the high threshold.
        """
        return self._ch


class TriggerBPulseRunt(SCPICmdRead):
    """The ``TRIGger:B:PULse:RUNT`` command.

    **Description:**
        - This query-only command returns the current runt trigger parameters. This command query is
          equivalent to selecting Runt Setup from the Trig menu and then viewing the current
          settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:RUNT?

    Properties:
        - ``.polarity``: The ``TRIGger:B:PULse:RUNT:POLarity`` command.
        - ``.qualify``: The ``TRIGger:B:PULse:RUNT:QUAlify`` command.
        - ``.threshold``: The ``TRIGger:B:PULse:RUNT:THReshold`` command.
        - ``.when``: The ``TRIGger:B:PULse:RUNT:WHEn`` command.
        - ``.width``: The ``TRIGger:B:PULse:RUNT:WIDth`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._polarity = TriggerBPulseRuntPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerBPulseRuntQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._threshold = TriggerBPulseRuntThreshold(device, f"{self._cmd_syntax}:THReshold")
        self._when = TriggerBPulseRuntWhen(device, f"{self._cmd_syntax}:WHEn")
        self._width = TriggerBPulseRuntWidth(device, f"{self._cmd_syntax}:WIDth")

    @property
    def polarity(self) -> TriggerBPulseRuntPolarity:
        """Return the ``TRIGger:B:PULse:RUNT:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity for the A or B pulse runt trigger. This
              command is equivalent to selecting Runt Setup from the Trig menu and then choosing the
              Polarity setting.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:POLarity?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT:POLarity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:RUNT:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:RUNT:POLarity {POSITIVe|NEGAtive|EITher}
            - TRIGger:B:PULse:RUNT:POLarity?

        **Info:**
            - ``POSITIVe`` indicates that the rising edge crosses the low threshold and the falling
              edge recrosses the low threshold without either edge ever crossing the high threshold.
            - ``NEGAtive`` indicates that the falling edge crosses the high threshold and the rising
              edge recrosses the high threshold without either edge ever crossing the low threshold.
            - ``EITher`` indicates either negative or positive polarity.

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:PULse:RUNT:POLarity:CH<x>`` command.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerBPulseRuntQualify:
        """Return the ``TRIGger:B:PULse:RUNT:QUAlify`` command.

        **Description:**
            - This command sets or queries the Runt Trigger qualification. This is equivalent to
              selecting Runt Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
              Trigger If Runt drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:QUAlify?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:RUNT:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:RUNT:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:B:PULse:RUNT:QUAlify?

        **Info:**
            - ``OCCurs`` specifies a trigger if any detectable event occurs.
            - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
              patterns and thresholds set by the command.
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def threshold(self) -> TriggerBPulseRuntThreshold:
        """Return the ``TRIGger:B:PULse:RUNT:THReshold`` command.

        **Description:**
            - This query-only command returns the upper and lower thresholds for the pulse runt
              trigger. This command query is equivalent to selecting Runt Setup from the Trig menu
              and then viewing the Upper Level and Lower Level settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT:THReshold?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:RUNT:THReshold?

        Sub-properties:
            - ``.both``: The ``TRIGger:B:PULse:RUNT:THReshold:BOTh`` command.
            - ``.high``: The ``TRIGger:B:PULse:RUNT:THReshold:HIGH`` command.
            - ``.low``: The ``TRIGger:B:PULse:RUNT:THReshold:LOW`` command.
        """
        return self._threshold

    @property
    def when(self) -> TriggerBPulseRuntWhen:
        """Return the ``TRIGger:B:PULse:RUNT:WHEn`` command.

        **Description:**
            - This command sets or queries the type of pulse width the trigger checks for when it
              detects a runt. This is equivalent to selecting Runt Setup from the Trig menu and
              choosing the desired Trigger When setting from the drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:WHEn?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT:WHEn?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:RUNT:WHEn value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:RUNT:WHEn {OCCurs|WIDERthan}
            - TRIGger:B:PULse:RUNT:WHEn?

        **Info:**
            - ``OCCurs`` argument specifies a trigger event if a runt of any detectable width
              occurs.
            - ``WIDERthan`` specifies a trigger event if a runt greater than the specified width
              occurs.
        """
        return self._when

    @property
    def width(self) -> TriggerBPulseRuntWidth:
        """Return the ``TRIGger:B:PULse:RUNT:WIDth`` command.

        **Description:**
            - This command sets or queries the minimum width for an Pulse Runt trigger. This command
              is equivalent to selecting Runt Setup from the Trig menu and then setting the Width.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT:WIDth?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT:WIDth?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:RUNT:WIDth value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:RUNT:WIDth <NR3>
            - TRIGger:B:PULse:RUNT:WIDth?

        **Info:**
            - ``<NR3>`` specifies the minimum width in seconds.
        """
        return self._width


class TriggerBPulsePeriodWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:PERiod:WHEn`` command.

    **Description:**
        - This command sets or queries the trigger when enumeration for the Pulse Period Trigger. If
          the argument is LESSthan , the scope triggers on the signal when the period (frequency) of
          the signal is less than the period (frequency) of the Low Limit. If the argument is
          GREATerthan, the scope triggers on the signal when the period (frequency) of the signal is
          greater than the period (frequency) of the Low Limit. If the argument is WITHin, the scope
          triggers on the signal when the period (frequency) of the signal is within the range
          defined by the Low Limit and the High Limit. If the argument is OUTside, the scope
          triggers on the signal when the period (frequency) of the signal is outside of the range
          defined by the Low Limit and the High Limit.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:PERiod:WHEn?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:PERiod:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:PERiod:WHEn {LESSthan | GREATerthan | WITHin | OUTside}
        - TRIGger:B:PULse:PERiod:WHEn?

    **Info:**
        - ``LESSthan`` tells the scope to trigger when the period (frequency) of the signal is less
          than the low limit value.
        - ``GREATerthan`` tells the scope to trigger when the period (frequency) of the signal is
          greater than the low limit value.
        - ``WITHin`` tells the scope to trigger when the period (frequency) of the signal is inside
          the range set by the low and high limit values.
        - ``OUTside`` tells the scope to trigger when the period (frequency) of the signal is
          outside of the range set by the low and high limit values.
    """


class TriggerBPulsePeriodView(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:PERiod:VIEW`` command.

    **Description:**
        - This command sets or queries the view for the pulse period trigger. When PERiod is
          selected the LOWLimit and HIGHLimit values are in units of time (Seconds). When FREQuency
          is selected, the units are in frequency (Hz). This two methods are equivalent, so the
          alternative views are provided as a convenience.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod:VIEW?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:PERiod:VIEW?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:PERiod:VIEW value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:PERiod:VIEW {PERiod|FREQuency}
        - TRIGger:B:PULse:PERiod:VIEW?

    **Info:**
        - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
        - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
    """


class TriggerBPulsePeriodQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:PERiod:QUAlify`` command.

    **Description:**
        - This command sets or queries the Qualification setup for Pulse Period Trigger. The
          high/low state of one or more other signals (channels) may be used to qualify whether the
          trigger should occur. The BUS option is not available on the 77K scope family at this
          time. When the QUALify enumeration is OCCurs, no qualification is done. When the QUALify
          enumeration is LOGIC, the scope triggers using the pulse period trigger definition as
          qualified by the high/low states of the qualifying signals. Additional description is
          given elsewhere in this document under the term logic qualification.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:PERiod:QUAlify?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:PERiod:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:PERiod:QUAlify {OCCurs | LOGIC | BUS}
        - TRIGger:B:PULse:PERiod:QUAlify?

    **Info:**
        - ``OCCurs`` specifies the no other signals are used to qualify the pulse period trigger.
        - ``LOGIC`` specifies that other analog signals (channels) are used to qualify the pulse
          period trigger.
        - ``BUS`` specifies that other digital signals (digital channels) are used to qualify the
          pulse period trigger.
    """


class TriggerBPulsePeriodPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:PERiod:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity for the Pulse Period trigger. It refers to the
          polarity of the edges that begin and end a given period of the signal, and thus allows
          duty-cycle testing of clock signals.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:PERiod:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:PERiod:POLarity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:PERiod:POLarity {NEGAtive|POSITIVe}
        - TRIGger:B:PULse:PERiod:POLarity?

    **Info:**
        - ``POSITIVe`` specifies to trigger on the rising or positive edge of a signal.
        - ``NEGAtive`` specifies to trigger on the falling or negative edge of a signal.
    """


class TriggerBPulsePeriodLowlimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:PERiod:LOWLimit`` command.

    **Description:**
        - This command sets or queries the Period/Frequency low limit. When the VIEW is PERiod the
          units of this number are time (Seconds). When the VIEW is FREQuency, the units of this
          number are frequency (Hz). The low limit is used alone when the WHEn enumeration is
          LESSthan or GREATerthan, and is used in combination with the high limit to define a range
          if the WHEn enumeration is WITHin or OUTside. The limits specify the most significant
          characteristic of the signal for this Pulse Trigger Type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod:LOWLimit?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:PERiod:LOWLimit?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:PERiod:LOWLimit value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:PERiod:LOWLimit <NR3>
        - TRIGger:B:PULse:PERiod:LOWLimit?

    **Info:**
        - ``<NR3>`` is the period (in Seconds) or frequency (in Hz).
    """


class TriggerBPulsePeriodHighlimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:PERiod:HIGHLimit`` command.

    **Description:**
        - This command sets or queries the Period/Frequency high limit. When the VIEW is PERiod the
          units of this number are time (Seconds). When the VIEW is FREQuency, the units of this
          number are frequency (Hz). The high limit is used in combination with the low limit to
          define a range if the WHEn enumeration is WITHin or OUTside. These limits specify the most
          significant characteristic of the signal for this Pulse Trigger Type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod:HIGHLimit?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:PERiod:HIGHLimit?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:PERiod:HIGHLimit value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:PERiod:HIGHLimit <NR3>
        - TRIGger:B:PULse:PERiod:HIGHLimit?

    **Info:**
        - ``<NR3>`` is the period (in Seconds) or frequency (in Hz).
    """


class TriggerBPulsePeriod(SCPICmdRead):
    """The ``TRIGger:B:PULse:PERiod`` command.

    **Description:**
        - This query-only command returns the Pulse Trigger settings specific to Period/Frequency
          trigger. These include the array of high and low limits, the trigger when enumeration, the
          polarity enumeration, the qualification enumeration, and the view enumeration. The view
          enumeration controls whether the high and low limits are expressed in units of time
          (Seconds) or frequency (Hz). The qualification enumeration determines if the trigger is
          state-qualified by additional signals (channels). The polarity enumeration determines
          whether the rising or falling edges of the signal are used to initiate the trigger. The
          trigger when enumeration determines if the trigger should occur when the period
          (frequency) is greater than or less than a single (low) limit value, or within or outside
          the period (frequency) of a high-low limit period (frequency) pair. The Period/Frequency
          Trigger is similar to Width Trigger, but instead of triggering on a single pulse of a
          given width, it triggers on the period (two back-to-back pulses, one up and one down) of a
          given width. As a convenience the period limits (Seconds) can be expressed as frequency
          limits (Hz) by changing the view enumeration. It is often used to determine if oscillators
          are operating within specification.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:PERiod?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:PERiod?

    Properties:
        - ``.highlimit``: The ``TRIGger:B:PULse:PERiod:HIGHLimit`` command.
        - ``.lowlimit``: The ``TRIGger:B:PULse:PERiod:LOWLimit`` command.
        - ``.polarity``: The ``TRIGger:B:PULse:PERiod:POLarity`` command.
        - ``.qualify``: The ``TRIGger:B:PULse:PERiod:QUAlify`` command.
        - ``.view``: The ``TRIGger:B:PULse:PERiod:VIEW`` command.
        - ``.when``: The ``TRIGger:B:PULse:PERiod:WHEn`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._highlimit = TriggerBPulsePeriodHighlimit(device, f"{self._cmd_syntax}:HIGHLimit")
        self._lowlimit = TriggerBPulsePeriodLowlimit(device, f"{self._cmd_syntax}:LOWLimit")
        self._polarity = TriggerBPulsePeriodPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerBPulsePeriodQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._view = TriggerBPulsePeriodView(device, f"{self._cmd_syntax}:VIEW")
        self._when = TriggerBPulsePeriodWhen(device, f"{self._cmd_syntax}:WHEn")

    @property
    def highlimit(self) -> TriggerBPulsePeriodHighlimit:
        """Return the ``TRIGger:B:PULse:PERiod:HIGHLimit`` command.

        **Description:**
            - This command sets or queries the Period/Frequency high limit. When the VIEW is PERiod
              the units of this number are time (Seconds). When the VIEW is FREQuency, the units of
              this number are frequency (Hz). The high limit is used in combination with the low
              limit to define a range if the WHEn enumeration is WITHin or OUTside. These limits
              specify the most significant characteristic of the signal for this Pulse Trigger Type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod:HIGHLimit?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:PERiod:HIGHLimit?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:PERiod:HIGHLimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:PERiod:HIGHLimit <NR3>
            - TRIGger:B:PULse:PERiod:HIGHLimit?

        **Info:**
            - ``<NR3>`` is the period (in Seconds) or frequency (in Hz).
        """
        return self._highlimit

    @property
    def lowlimit(self) -> TriggerBPulsePeriodLowlimit:
        """Return the ``TRIGger:B:PULse:PERiod:LOWLimit`` command.

        **Description:**
            - This command sets or queries the Period/Frequency low limit. When the VIEW is PERiod
              the units of this number are time (Seconds). When the VIEW is FREQuency, the units of
              this number are frequency (Hz). The low limit is used alone when the WHEn enumeration
              is LESSthan or GREATerthan, and is used in combination with the high limit to define a
              range if the WHEn enumeration is WITHin or OUTside. The limits specify the most
              significant characteristic of the signal for this Pulse Trigger Type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod:LOWLimit?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:PERiod:LOWLimit?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:PERiod:LOWLimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:PERiod:LOWLimit <NR3>
            - TRIGger:B:PULse:PERiod:LOWLimit?

        **Info:**
            - ``<NR3>`` is the period (in Seconds) or frequency (in Hz).
        """
        return self._lowlimit

    @property
    def polarity(self) -> TriggerBPulsePeriodPolarity:
        """Return the ``TRIGger:B:PULse:PERiod:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity for the Pulse Period trigger. It refers to
              the polarity of the edges that begin and end a given period of the signal, and thus
              allows duty-cycle testing of clock signals.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod:POLarity?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:PERiod:POLarity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:PERiod:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:PERiod:POLarity {NEGAtive|POSITIVe}
            - TRIGger:B:PULse:PERiod:POLarity?

        **Info:**
            - ``POSITIVe`` specifies to trigger on the rising or positive edge of a signal.
            - ``NEGAtive`` specifies to trigger on the falling or negative edge of a signal.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerBPulsePeriodQualify:
        """Return the ``TRIGger:B:PULse:PERiod:QUAlify`` command.

        **Description:**
            - This command sets or queries the Qualification setup for Pulse Period Trigger. The
              high/low state of one or more other signals (channels) may be used to qualify whether
              the trigger should occur. The BUS option is not available on the 77K scope family at
              this time. When the QUALify enumeration is OCCurs, no qualification is done. When the
              QUALify enumeration is LOGIC, the scope triggers using the pulse period trigger
              definition as qualified by the high/low states of the qualifying signals. Additional
              description is given elsewhere in this document under the term logic qualification.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod:QUAlify?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:PERiod:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:PERiod:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:PERiod:QUAlify {OCCurs | LOGIC | BUS}
            - TRIGger:B:PULse:PERiod:QUAlify?

        **Info:**
            - ``OCCurs`` specifies the no other signals are used to qualify the pulse period
              trigger.
            - ``LOGIC`` specifies that other analog signals (channels) are used to qualify the pulse
              period trigger.
            - ``BUS`` specifies that other digital signals (digital channels) are used to qualify
              the pulse period trigger.
        """
        return self._qualify

    @property
    def view(self) -> TriggerBPulsePeriodView:
        """Return the ``TRIGger:B:PULse:PERiod:VIEW`` command.

        **Description:**
            - This command sets or queries the view for the pulse period trigger. When PERiod is
              selected the LOWLimit and HIGHLimit values are in units of time (Seconds). When
              FREQuency is selected, the units are in frequency (Hz). This two methods are
              equivalent, so the alternative views are provided as a convenience.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod:VIEW?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:PERiod:VIEW?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:PERiod:VIEW value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:PERiod:VIEW {PERiod|FREQuency}
            - TRIGger:B:PULse:PERiod:VIEW?

        **Info:**
            - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
            - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
        """
        return self._view

    @property
    def when(self) -> TriggerBPulsePeriodWhen:
        """Return the ``TRIGger:B:PULse:PERiod:WHEn`` command.

        **Description:**
            - This command sets or queries the trigger when enumeration for the Pulse Period
              Trigger. If the argument is LESSthan , the scope triggers on the signal when the
              period (frequency) of the signal is less than the period (frequency) of the Low Limit.
              If the argument is GREATerthan, the scope triggers on the signal when the period
              (frequency) of the signal is greater than the period (frequency) of the Low Limit. If
              the argument is WITHin, the scope triggers on the signal when the period (frequency)
              of the signal is within the range defined by the Low Limit and the High Limit. If the
              argument is OUTside, the scope triggers on the signal when the period (frequency) of
              the signal is outside of the range defined by the Low Limit and the High Limit.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod:WHEn?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:PERiod:WHEn?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:PERiod:WHEn value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:PERiod:WHEn {LESSthan | GREATerthan | WITHin | OUTside}
            - TRIGger:B:PULse:PERiod:WHEn?

        **Info:**
            - ``LESSthan`` tells the scope to trigger when the period (frequency) of the signal is
              less than the low limit value.
            - ``GREATerthan`` tells the scope to trigger when the period (frequency) of the signal
              is greater than the low limit value.
            - ``WITHin`` tells the scope to trigger when the period (frequency) of the signal is
              inside the range set by the low and high limit values.
            - ``OUTside`` tells the scope to trigger when the period (frequency) of the signal is
              outside of the range set by the low and high limit values.
        """
        return self._when


class TriggerBPulseGlitchWidth(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:GLItch:WIDth`` command.

    **Description:**
        - This command sets or queries the width for the glitch trigger. This command is equivalent
          to selecting Glitch Setup from the Trig menu and then setting the desired Width. For
          information about using the width value, refer to the command.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:WIDth?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:GLItch:WIDth?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:GLItch:WIDth value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:GLItch:WIDth <NR3>
        - TRIGger:B:PULse:GLItch:WIDth?

    **Info:**
        - ``<NR3>`` argument specifies the width of the glitch in seconds.
    """


class TriggerBPulseGlitchTrigif(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:GLItch:TRIGIF`` command.

    **Description:**
        - This command sets or queries the acceptance or rejection of the glitch pulse trigger,
          based on width. This command is equivalent to selecting Glitch Setup from the Trig menu
          and choosing the desired Trig if Width setting.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:TRIGIF?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:GLItch:TRIGIF?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:GLItch:TRIGIF value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:GLItch:TRIGIF {ACCept|REJect}
        - TRIGger:B:PULse:GLItch:TRIGIF?

    **Info:**
        - ``ACCept`` specifies that the instrument will only trigger on pulses that are narrower
          than the specified width, when the trigger type is set to glitch. The width is specified
          using the.
        - ``REJect`` specifies that the instrument will only trigger on pulses that are wider than
          the specified width, when the trigger type is set to glitch. The width is specified using
          the.
    """


class TriggerBPulseGlitchQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:GLItch:QUAlify`` command.

    **Description:**
        - This command sets or queries the Glitch Trigger qualification. This is equivalent to
          selecting Glitch Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
          Trigger If Glitch drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:GLItch:QUAlify?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:GLItch:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:GLItch:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:B:PULse:GLItch:QUAlify?

    **Info:**
        - ``OCCurs`` specifies a trigger if any detectable event occurs.
        - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
          patterns and thresholds set by the.
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerBPulseGlitchPolarityChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:GLItch:POLarity:CH<x>`` command.

    **Description:**
        - This command sets or queries the polarity for A or B pulse glitch trigger for the channel.
          This command is equivalent to selecting Glitch Setup from the Trig menu and then choosing
          the desired Polarity.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:POLarity:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:PULse:GLItch:POLarity:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:GLItch:POLarity:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:GLItch:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
        - TRIGger:B:PULse:GLItch:POLarity:CH<x>?

    **Info:**
        - ``EITher`` specifies that the instrument will trigger when the polarity of the glitch is
          either positive or negative.
        - ``NEGAtive`` specifies that the instrument will only trigger when the polarity of the
          glitch is negative.
        - ``POSITIVe`` specifies that the instrument will only trigger when the polarity of the
          glitch is positive.
    """


class TriggerBPulseGlitchPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:GLItch:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity for A or B pulse glitch trigger. This command is
          equivalent to selecting Glitch Setup from the Trig menu and then choosing the desired
          Polarity.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:GLItch:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:GLItch:POLarity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:GLItch:POLarity {POSITIVe|NEGAtive|EITher}
        - TRIGger:B:PULse:GLItch:POLarity?

    **Info:**
        - ``POSITIVe`` specifies that the instrument will only trigger when the polarity of the
          glitch is positive.
        - ``NEGAtive`` specifies that the instrument will only trigger when the polarity of the
          glitch is negative.
        - ``EITher`` specifies that the instrument will trigger when the polarity of the glitch is
          either positive or negative.

    Properties:
        - ``.ch``: The ``TRIGger:B:PULse:GLItch:POLarity:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBPulseGlitchPolarityChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBPulseGlitchPolarityChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBPulseGlitchPolarityChannel]:
        """Return the ``TRIGger:B:PULse:GLItch:POLarity:CH<x>`` command.

        **Description:**
            - This command sets or queries the polarity for A or B pulse glitch trigger for the
              channel. This command is equivalent to selecting Glitch Setup from the Trig menu and
              then choosing the desired Polarity.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:POLarity:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:GLItch:POLarity:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:GLItch:POLarity:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:GLItch:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
            - TRIGger:B:PULse:GLItch:POLarity:CH<x>?

        **Info:**
            - ``EITher`` specifies that the instrument will trigger when the polarity of the glitch
              is either positive or negative.
            - ``NEGAtive`` specifies that the instrument will only trigger when the polarity of the
              glitch is negative.
            - ``POSITIVe`` specifies that the instrument will only trigger when the polarity of the
              glitch is positive.
        """
        return self._ch


class TriggerBPulseGlitchLowpassfilter(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:GLItch:LOWPASSfilter`` command.

    **Description:**
        - This command turns on or turns off the low­pass filter feature for Glitch trigger. This
          allows triggering in the presence of high­frequency signal edges.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:LOWPASSfilter?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:PULse:GLItch:LOWPASSfilter?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:PULse:GLItch:LOWPASSfilter value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:GLItch:LOWPASSfilter {ON|OFF}
        - TRIGger:B:PULse:GLItch:LOWPASSfilter?

    **Info:**
        - ``ON`` enables low­pass filter feature.
        - ``OFF`` disables low­pass filter feature.
    """


class TriggerBPulseGlitchFilter(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:GLItch:FILTer`` command.

    **Description:**
        - This command sets or queries the acceptance/rejection of the glitch pulse trigger. This
          command is equivalent to selecting Glitch Setup from the Trig menu and then choosing the
          desired Trig if Width setting.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:FILTer?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:GLItch:FILTer?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:GLItch:FILTer value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:GLItch:FILTer {ACCept|REJect}
        - TRIGger:B:PULse:GLItch:FILTer?
    """


class TriggerBPulseGlitch(SCPICmdRead):
    """The ``TRIGger:B:PULse:GLItch`` command.

    **Description:**
        - This query-only command returns the current glitch pulse trigger parameters. This command
          query is equivalent to selecting Glitch Setup from the Trig menu and viewing the current
          glitch trigger settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:GLItch?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:GLItch?

    Properties:
        - ``.filter``: The ``TRIGger:B:PULse:GLItch:FILTer`` command.
        - ``.lowpassfilter``: The ``TRIGger:B:PULse:GLItch:LOWPASSfilter`` command.
        - ``.polarity``: The ``TRIGger:B:PULse:GLItch:POLarity`` command.
        - ``.qualify``: The ``TRIGger:B:PULse:GLItch:QUAlify`` command.
        - ``.trigif``: The ``TRIGger:B:PULse:GLItch:TRIGIF`` command.
        - ``.width``: The ``TRIGger:B:PULse:GLItch:WIDth`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._filter = TriggerBPulseGlitchFilter(device, f"{self._cmd_syntax}:FILTer")
        self._lowpassfilter = TriggerBPulseGlitchLowpassfilter(
            device, f"{self._cmd_syntax}:LOWPASSfilter"
        )
        self._polarity = TriggerBPulseGlitchPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerBPulseGlitchQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._trigif = TriggerBPulseGlitchTrigif(device, f"{self._cmd_syntax}:TRIGIF")
        self._width = TriggerBPulseGlitchWidth(device, f"{self._cmd_syntax}:WIDth")

    @property
    def filter(self) -> TriggerBPulseGlitchFilter:
        """Return the ``TRIGger:B:PULse:GLItch:FILTer`` command.

        **Description:**
            - This command sets or queries the acceptance/rejection of the glitch pulse trigger.
              This command is equivalent to selecting Glitch Setup from the Trig menu and then
              choosing the desired Trig if Width setting.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:FILTer?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:GLItch:FILTer?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:GLItch:FILTer value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:GLItch:FILTer {ACCept|REJect}
            - TRIGger:B:PULse:GLItch:FILTer?
        """
        return self._filter

    @property
    def lowpassfilter(self) -> TriggerBPulseGlitchLowpassfilter:
        """Return the ``TRIGger:B:PULse:GLItch:LOWPASSfilter`` command.

        **Description:**
            - This command turns on or turns off the low­pass filter feature for Glitch trigger.
              This allows triggering in the presence of high­frequency signal edges.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:LOWPASSfilter?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:PULse:GLItch:LOWPASSfilter?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:GLItch:LOWPASSfilter value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:GLItch:LOWPASSfilter {ON|OFF}
            - TRIGger:B:PULse:GLItch:LOWPASSfilter?

        **Info:**
            - ``ON`` enables low­pass filter feature.
            - ``OFF`` disables low­pass filter feature.
        """
        return self._lowpassfilter

    @property
    def polarity(self) -> TriggerBPulseGlitchPolarity:
        """Return the ``TRIGger:B:PULse:GLItch:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity for A or B pulse glitch trigger. This
              command is equivalent to selecting Glitch Setup from the Trig menu and then choosing
              the desired Polarity.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:POLarity?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:GLItch:POLarity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:GLItch:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:GLItch:POLarity {POSITIVe|NEGAtive|EITher}
            - TRIGger:B:PULse:GLItch:POLarity?

        **Info:**
            - ``POSITIVe`` specifies that the instrument will only trigger when the polarity of the
              glitch is positive.
            - ``NEGAtive`` specifies that the instrument will only trigger when the polarity of the
              glitch is negative.
            - ``EITher`` specifies that the instrument will trigger when the polarity of the glitch
              is either positive or negative.

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:PULse:GLItch:POLarity:CH<x>`` command.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerBPulseGlitchQualify:
        """Return the ``TRIGger:B:PULse:GLItch:QUAlify`` command.

        **Description:**
            - This command sets or queries the Glitch Trigger qualification. This is equivalent to
              selecting Glitch Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
              Trigger If Glitch drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:QUAlify?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:GLItch:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:GLItch:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:GLItch:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:B:PULse:GLItch:QUAlify?

        **Info:**
            - ``OCCurs`` specifies a trigger if any detectable event occurs.
            - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
              patterns and thresholds set by the.
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def trigif(self) -> TriggerBPulseGlitchTrigif:
        """Return the ``TRIGger:B:PULse:GLItch:TRIGIF`` command.

        **Description:**
            - This command sets or queries the acceptance or rejection of the glitch pulse trigger,
              based on width. This command is equivalent to selecting Glitch Setup from the Trig
              menu and choosing the desired Trig if Width setting.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:TRIGIF?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:GLItch:TRIGIF?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:GLItch:TRIGIF value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:GLItch:TRIGIF {ACCept|REJect}
            - TRIGger:B:PULse:GLItch:TRIGIF?

        **Info:**
            - ``ACCept`` specifies that the instrument will only trigger on pulses that are narrower
              than the specified width, when the trigger type is set to glitch. The width is
              specified using the.
            - ``REJect`` specifies that the instrument will only trigger on pulses that are wider
              than the specified width, when the trigger type is set to glitch. The width is
              specified using the.
        """
        return self._trigif

    @property
    def width(self) -> TriggerBPulseGlitchWidth:
        """Return the ``TRIGger:B:PULse:GLItch:WIDth`` command.

        **Description:**
            - This command sets or queries the width for the glitch trigger. This command is
              equivalent to selecting Glitch Setup from the Trig menu and then setting the desired
              Width. For information about using the width value, refer to the command.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch:WIDth?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:GLItch:WIDth?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:PULse:GLItch:WIDth value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:GLItch:WIDth <NR3>
            - TRIGger:B:PULse:GLItch:WIDth?

        **Info:**
            - ``<NR3>`` argument specifies the width of the glitch in seconds.
        """
        return self._width


class TriggerBPulseClass(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:PULse:CLAss`` command.

    **Description:**
        - This command sets or queries the type of pulse on which to trigger. This command is
          equivalent to selecting the setup menu for the pulse type that you want from the Trig
          menu: Glitch Setup, Width Setup, Runt Setup, Timeout Setup, or Transition Setup.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse:CLAss?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:CLAss?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:CLAss value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:PULse:CLAss {GLItch|RUNT|WIDth| TRANsition|TIMEOut|WINdow}
        - TRIGger:B:PULse:CLAss?

    **Info:**
        - ``GLItch`` triggers when a pulse is found that is of the specified polarity and width.
          These are set with the commands.
        - ``RUNT`` triggers when a pulse crosses the first preset voltage threshold but does not
          cross the second preset threshold before recrossing the first. The thresholds are set with
          the.
        - ``WIDth`` triggers when a pulse is found that has the specified polarity and is either
          inside or outside the limits as specified by.
        - ``TRANsition`` triggers when a pulse crosses both thresholds in the same direction as the
          specified polarity and the transition time between the two threshold crossings is greater
          or less than the specified time delta.
        - ``TIMEOut`` triggers when the pulse train stops in the selected state for longer than the
          specified time.
        - ``WINdow`` triggers when a pulse is found that meets the conditions set by the A Event
          window trigger type, specified by the following commands.
    """


#  pylint: disable=too-many-instance-attributes
class TriggerBPulse(SCPICmdRead):
    """The ``TRIGger:B:PULse`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:PULse?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.period``: The ``TRIGger:B:PULse:PERiod`` command.
        - ``.window``: The ``TRIGger:B:PULse:WINdow`` command tree.
        - ``.class``: The ``TRIGger:B:PULse:CLAss`` command.
        - ``.glitch``: The ``TRIGger:B:PULse:GLItch`` command.
        - ``.runt``: The ``TRIGger:B:PULse:RUNT`` command.
        - ``.source``: The ``TRIGger:B:PULse:SOUrce`` command.
        - ``.timeout``: The ``TRIGger:B:PULse:TIMEOut`` command.
        - ``.transition``: The ``TRIGger:B:PULse:TRANsition`` command.
        - ``.width``: The ``TRIGger:B:PULse:WIDth`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._period = TriggerBPulsePeriod(device, f"{self._cmd_syntax}:PERiod")
        self._class = TriggerBPulseClass(device, f"{self._cmd_syntax}:CLAss")
        self._glitch = TriggerBPulseGlitch(device, f"{self._cmd_syntax}:GLItch")
        self._runt = TriggerBPulseRunt(device, f"{self._cmd_syntax}:RUNT")
        self._source = TriggerBPulseSource(device, f"{self._cmd_syntax}:SOUrce")
        self._timeout = TriggerBPulseTimeout(device, f"{self._cmd_syntax}:TIMEOut")
        self._transition = TriggerBPulseTransition(device, f"{self._cmd_syntax}:TRANsition")
        self._width = TriggerBPulseWidth(device, f"{self._cmd_syntax}:WIDth")
        self._window = TriggerBPulseWindow(device, f"{self._cmd_syntax}:WINdow")

    @property
    def period(self) -> TriggerBPulsePeriod:
        """Return the ``TRIGger:B:PULse:PERiod`` command.

        **Description:**
            - This query-only command returns the Pulse Trigger settings specific to
              Period/Frequency trigger. These include the array of high and low limits, the trigger
              when enumeration, the polarity enumeration, the qualification enumeration, and the
              view enumeration. The view enumeration controls whether the high and low limits are
              expressed in units of time (Seconds) or frequency (Hz). The qualification enumeration
              determines if the trigger is state-qualified by additional signals (channels). The
              polarity enumeration determines whether the rising or falling edges of the signal are
              used to initiate the trigger. The trigger when enumeration determines if the trigger
              should occur when the period (frequency) is greater than or less than a single (low)
              limit value, or within or outside the period (frequency) of a high-low limit period
              (frequency) pair. The Period/Frequency Trigger is similar to Width Trigger, but
              instead of triggering on a single pulse of a given width, it triggers on the period
              (two back-to-back pulses, one up and one down) of a given width. As a convenience the
              period limits (Seconds) can be expressed as frequency limits (Hz) by changing the view
              enumeration. It is often used to determine if oscillators are operating within
              specification.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:PERiod?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:PERiod?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:PERiod?

        Sub-properties:
            - ``.highlimit``: The ``TRIGger:B:PULse:PERiod:HIGHLimit`` command.
            - ``.lowlimit``: The ``TRIGger:B:PULse:PERiod:LOWLimit`` command.
            - ``.polarity``: The ``TRIGger:B:PULse:PERiod:POLarity`` command.
            - ``.qualify``: The ``TRIGger:B:PULse:PERiod:QUAlify`` command.
            - ``.view``: The ``TRIGger:B:PULse:PERiod:VIEW`` command.
            - ``.when``: The ``TRIGger:B:PULse:PERiod:WHEn`` command.
        """
        return self._period

    @property
    def class_(self) -> TriggerBPulseClass:
        """Return the ``TRIGger:B:PULse:CLAss`` command.

        **Description:**
            - This command sets or queries the type of pulse on which to trigger. This command is
              equivalent to selecting the setup menu for the pulse type that you want from the Trig
              menu: Glitch Setup, Width Setup, Runt Setup, Timeout Setup, or Transition Setup.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:CLAss?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:CLAss?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:CLAss value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:CLAss {GLItch|RUNT|WIDth| TRANsition|TIMEOut|WINdow}
            - TRIGger:B:PULse:CLAss?

        **Info:**
            - ``GLItch`` triggers when a pulse is found that is of the specified polarity and width.
              These are set with the commands.
            - ``RUNT`` triggers when a pulse crosses the first preset voltage threshold but does not
              cross the second preset threshold before recrossing the first. The thresholds are set
              with the.
            - ``WIDth`` triggers when a pulse is found that has the specified polarity and is either
              inside or outside the limits as specified by.
            - ``TRANsition`` triggers when a pulse crosses both thresholds in the same direction as
              the specified polarity and the transition time between the two threshold crossings is
              greater or less than the specified time delta.
            - ``TIMEOut`` triggers when the pulse train stops in the selected state for longer than
              the specified time.
            - ``WINdow`` triggers when a pulse is found that meets the conditions set by the A Event
              window trigger type, specified by the following commands.
        """
        return self._class

    @property
    def glitch(self) -> TriggerBPulseGlitch:
        """Return the ``TRIGger:B:PULse:GLItch`` command.

        **Description:**
            - This query-only command returns the current glitch pulse trigger parameters. This
              command query is equivalent to selecting Glitch Setup from the Trig menu and viewing
              the current glitch trigger settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:GLItch?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:GLItch?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:GLItch?

        Sub-properties:
            - ``.filter``: The ``TRIGger:B:PULse:GLItch:FILTer`` command.
            - ``.lowpassfilter``: The ``TRIGger:B:PULse:GLItch:LOWPASSfilter`` command.
            - ``.polarity``: The ``TRIGger:B:PULse:GLItch:POLarity`` command.
            - ``.qualify``: The ``TRIGger:B:PULse:GLItch:QUAlify`` command.
            - ``.trigif``: The ``TRIGger:B:PULse:GLItch:TRIGIF`` command.
            - ``.width``: The ``TRIGger:B:PULse:GLItch:WIDth`` command.
        """
        return self._glitch

    @property
    def runt(self) -> TriggerBPulseRunt:
        """Return the ``TRIGger:B:PULse:RUNT`` command.

        **Description:**
            - This query-only command returns the current runt trigger parameters. This command
              query is equivalent to selecting Runt Setup from the Trig menu and then viewing the
              current settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:RUNT?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:RUNT?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:RUNT?

        Sub-properties:
            - ``.polarity``: The ``TRIGger:B:PULse:RUNT:POLarity`` command.
            - ``.qualify``: The ``TRIGger:B:PULse:RUNT:QUAlify`` command.
            - ``.threshold``: The ``TRIGger:B:PULse:RUNT:THReshold`` command.
            - ``.when``: The ``TRIGger:B:PULse:RUNT:WHEn`` command.
            - ``.width``: The ``TRIGger:B:PULse:RUNT:WIDth`` command.
        """
        return self._runt

    @property
    def source(self) -> TriggerBPulseSource:
        """Return the ``TRIGger:B:PULse:SOUrce`` command.

        **Description:**
            - This command sets or queries the source for the pulse trigger. This source parameter
              applies to all classes of pulse triggers. This command is equivalent to selecting
              Event Trigger Setup from the Trig menu, selecting the pulse type (Glitch, Width, Runt,
              Timeout, or Transition), and then choosing the desired channel from the Source
              pull-down list. When an UltraSync stack is used, the mapped channels are used to both
              acquire waveform data and to trigger the oscilloscope. In the special case of an
              UltraSync stack master, additional channels are available for triggering. These are
              the unmapped channels. For an ATI UltraSync stack master, CH2, MCH1, and MCH3 can be
              used for triggering. For a 4-Channel UltraSync stack master, CH1, MCH2, MCH3, and MCH4
              are available for triggering. The vertical min/max amplitude for these signals must be
              set up. A detailed discussion is provided in .

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:SOUrce?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:PULse:SOUrce value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:SOUrce {CH<x>|D<x>|MCH<x>}
            - TRIGger:B:PULse:SOUrce?

        **Info:**
            - ``CH<x>`` specifies one of the input channels, which range from 1 through 4.
            - ``D<x>`` specifies one of the digital inputs, which range from 0 through 15.
            - ``MCH<x>`` specifies one of the unmapped channels on the master when using an
              UltraSync stack. For details see.
        """
        return self._source

    @property
    def timeout(self) -> TriggerBPulseTimeout:
        """Return the ``TRIGger:B:PULse:TIMEOut`` command.

        **Description:**
            - This query-only command returns the polarity and time-out duration for the pulse
              timeout trigger. This command is equivalent to selecting Timeout Setup from the Trig
              menu and viewing the polarity in the Trigger When box and the Timer setting.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TIMEOut?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:TIMEOut?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TIMEOut?

        Sub-properties:
            - ``.lowpassfilter``: The ``TRIGger:B:PULse:TIMEOut:LOWPASSfilter`` command.
            - ``.polarity``: The ``TRIGger:B:PULse:TIMEOut:POLarity`` command.
            - ``.qualify``: The ``TRIGger:B:PULse:TIMEOut:QUAlify`` command.
            - ``.time``: The ``TRIGger:B:PULse:TIMEOut:TIMe`` command.
        """
        return self._timeout

    @property
    def transition(self) -> TriggerBPulseTransition:
        """Return the ``TRIGger:B:PULse:TRANsition`` command.

        **Description:**
            - This query-only command returns delta time, polarity, and both upper and lower
              threshold limits for the transition time trigger. This command is equivalent to
              selecting Transition Setup from the Trig menu and then viewing the current transition
              settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:TRANsition?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:TRANsition?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:TRANsition?

        Sub-properties:
            - ``.deltatime``: The ``TRIGger:B:PULse:TRANsition:DELTATime`` command.
            - ``.polarity``: The ``TRIGger:B:PULse:TRANsition:POLarity`` command.
            - ``.qualify``: The ``TRIGger:B:PULse:TRANsition:QUAlify`` command.
            - ``.threshold``: The ``TRIGger:B:PULse:TRANsition:THReshold`` command.
            - ``.when``: The ``TRIGger:B:PULse:TRANsition:WHEn`` command.
        """
        return self._transition

    @property
    def width(self) -> TriggerBPulseWidth:
        """Return the ``TRIGger:B:PULse:WIDth`` command.

        **Description:**
            - This query-only command returns the width parameters for the pulse width trigger. This
              command is equivalent to selecting Width Setup from the Trig menu and then viewing the
              current pulse width trigger Lower Limit, Upper Limit, Trig When and Polarity settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WIDth?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WIDth?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:PULse:WIDth?

        Sub-properties:
            - ``.highlimit``: The ``TRIGger:B:PULse:WIDth:HIGHLimit`` command.
            - ``.lowlimit``: The ``TRIGger:B:PULse:WIDth:LOWLimit`` command.
            - ``.lowpassfilter``: The ``TRIGger:B:PULse:WIDth:LOWPASSfilter`` command.
            - ``.polarity``: The ``TRIGger:B:PULse:WIDth:POLarity`` command.
            - ``.qualify``: The ``TRIGger:B:PULse:WIDth:QUAlify`` command.
            - ``.when``: The ``TRIGger:B:PULse:WIDth:WHEn`` command.
        """
        return self._width

    @property
    def window(self) -> TriggerBPulseWindow:
        """Return the ``TRIGger:B:PULse:WINdow`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse:WINdow?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse:WINdow?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.type``: The ``TRIGger:B:PULse:WINdow:TYPe`` command.
            - ``.when``: The ``TRIGger:B:PULse:WINdow:WHEn`` command.
            - ``.event``: The ``TRIGger:B:PULse:WINdow:EVENT`` command.
            - ``.polarity``: The ``TRIGger:B:PULse:WINdow:POLarity`` command.
            - ``.qualify``: The ``TRIGger:B:PULse:WINdow:QUAlify`` command.
            - ``.threshold``: The ``TRIGger:B:PULse:WINdow:THReshold`` command.
            - ``.width``: The ``TRIGger:B:PULse:WINdow:WIDTH`` command.
        """
        return self._window


class TriggerBLowerthresholdChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOWerthreshold:CH<x>`` command.

    **Description:**
        - This command sets or queries the A or B lower trigger level for
          ``TRIGger:LVLSrcpreference SRCDependent`` or SRCIndependent modes for the channel,
          specified by x, which ranges from 1 through 4.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOWerthreshold:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOWerthreshold:CH<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:LOWerthreshold:CH<x> value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOWerthreshold:CH<x> {ECL|TTL|<NR3>}
        - TRIGger:B:LOWerthreshold:CH<x>?

    **Info:**
        - ``ECL`` specifies the preset ECL high level.
        - ``TTL`` specifies the preset TTL high level.
        - ``<NR3>`` specifies the threshold voltage in user units.
    """


class TriggerBLowerthreshold(SCPICmdRead):
    """The ``TRIGger:B:LOWerthreshold`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOWerthreshold?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOWerthreshold?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.ch``: The ``TRIGger:B:LOWerthreshold:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBLowerthresholdChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBLowerthresholdChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBLowerthresholdChannel]:
        """Return the ``TRIGger:B:LOWerthreshold:CH<x>`` command.

        **Description:**
            - This command sets or queries the A or B lower trigger level for
              ``TRIGger:LVLSrcpreference SRCDependent`` or SRCIndependent modes for the channel,
              specified by x, which ranges from 1 through 4.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOWerthreshold:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOWerthreshold:CH<x>?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOWerthreshold:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOWerthreshold:CH<x> {ECL|TTL|<NR3>}
            - TRIGger:B:LOWerthreshold:CH<x>?

        **Info:**
            - ``ECL`` specifies the preset ECL high level.
            - ``TTL`` specifies the preset TTL high level.
            - ``<NR3>`` specifies the threshold voltage in user units.
        """
        return self._ch


class TriggerBLogicThresholdChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:THReshold:CH<x>`` command.

    **Description:**
        - This command sets or queries the A or B logic trigger threshold voltage for the channel,
          specified by x, which ranges from 1 through 4. This command is equivalent to selecting A
          or B Event Trigger Setup from the Trig menu, choosing a logic trigger type, such as State
          or Pattern, and setting the Input Threshold voltage for the desired channel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:THReshold:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:THReshold:CH<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:THReshold:CH<x> value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:THReshold:CH<x> <NR3>
        - TRIGger:B:LOGIc:THReshold:CH<x>?

    **Info:**
        - ``<NR3>`` specifies the threshold voltage.
    """


class TriggerBLogicThreshold(SCPICmdRead):
    """The ``TRIGger:B:LOGIc:THReshold`` command.

    **Description:**
        - This query-only command returns the threshold voltage for all channels in a logic trigger.
          This command query is equivalent to selecting Event Trigger Setup from the Trig menu,
          choosing a logic trigger type, such as State or Pattern, and viewing the current Input
          Threshold voltage settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:THReshold?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:THReshold?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:THReshold?

    Properties:
        - ``.ch``: The ``TRIGger:B:LOGIc:THReshold:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBLogicThresholdChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBLogicThresholdChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBLogicThresholdChannel]:
        """Return the ``TRIGger:B:LOGIc:THReshold:CH<x>`` command.

        **Description:**
            - This command sets or queries the A or B logic trigger threshold voltage for the
              channel, specified by x, which ranges from 1 through 4. This command is equivalent to
              selecting A or B Event Trigger Setup from the Trig menu, choosing a logic trigger
              type, such as State or Pattern, and setting the Input Threshold voltage for the
              desired channel.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:THReshold:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:THReshold:CH<x>?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:THReshold:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:THReshold:CH<x> <NR3>
            - TRIGger:B:LOGIc:THReshold:CH<x>?

        **Info:**
            - ``<NR3>`` specifies the threshold voltage.
        """
        return self._ch


class TriggerBLogicStateWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:STATE:WHEn`` command.

    **Description:**
        - This command sets or queries the condition for generating an A or B logic state trigger.
          This command is equivalent to selecting Logic State from the Trig menu and choosing the
          desired condition from the Trigger When Pattern drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:STATE:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:STATE:WHEn?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:STATE:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:STATE:WHEn {TRUe|FALSe}
        - TRIGger:B:LOGIc:STATE:WHEn?

    **Info:**
        - ``TRUe`` specifies that the trigger occurs when the clock transition on channel 4 occurs
          and the pattern of channels 1-3 are at the desired logic input states.
        - ``FALSe`` specifies that the trigger occurs when the desired clock transition on channel 4
          occurs and the desired logic input states on channels 1-3 are not found.
    """


class TriggerBLogicStateInputChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:STATE:INPut:CH<x>`` command.

    **Description:**
        - This command sets or queries the slope for the channel specified by x when the logic class
          is set to State. This command is equivalent to selecting Logic State from the Trig menu,
          choosing the desired channel input, and then the slope (NEG or POS) from the When Clock is
          drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:STATE:INPut:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:STATE:INPut:CH<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:STATE:INPut:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:STATE:INPut:CH<x> {FALL|RISe}
        - TRIGger:B:LOGIc:STATE:INPut:CH<x>?

    **Info:**
        - ``FALL`` specifies the falling edge and the input slope is NEG.
        - ``RISe`` specifies the rising edge and the input slope is POS.
    """


class TriggerBLogicStateInput(SCPICmdRead):
    """The ``TRIGger:B:LOGIc:STATE:INPut`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:STATE:INPut?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:STATE:INPut?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.ch``: The ``TRIGger:B:LOGIc:STATE:INPut:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBLogicStateInputChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBLogicStateInputChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBLogicStateInputChannel]:
        """Return the ``TRIGger:B:LOGIc:STATE:INPut:CH<x>`` command.

        **Description:**
            - This command sets or queries the slope for the channel specified by x when the logic
              class is set to State. This command is equivalent to selecting Logic State from the
              Trig menu, choosing the desired channel input, and then the slope (NEG or POS) from
              the When Clock is drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:STATE:INPut:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:STATE:INPut:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:STATE:INPut:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:STATE:INPut:CH<x> {FALL|RISe}
            - TRIGger:B:LOGIc:STATE:INPut:CH<x>?

        **Info:**
            - ``FALL`` specifies the falling edge and the input slope is NEG.
            - ``RISe`` specifies the rising edge and the input slope is POS.
        """
        return self._ch


class TriggerBLogicStateClockSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:STATE:CLOck:SOUrce`` command.

    **Description:**
        - This command sets or queries the clock source for the A or B logic trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:STATE:CLOck:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:STATE:CLOck:SOUrce?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:STATE:CLOck:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:STATE:CLOck:SOUrce {CH4|CQ}
        - TRIGger:B:LOGIc:STATE:CLOck:SOUrce?

    **Info:**
        - ``CH4`` specifies the analog channel as clock source.
        - ``CQ`` specifies the channel/qualifier as clock source.
    """


class TriggerBLogicStateClock(SCPICmdRead):
    """The ``TRIGger:B:LOGIc:STATE:CLOck`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:STATE:CLOck?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:STATE:CLOck?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.source``: The ``TRIGger:B:LOGIc:STATE:CLOck:SOUrce`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._source = TriggerBLogicStateClockSource(device, f"{self._cmd_syntax}:SOUrce")

    @property
    def source(self) -> TriggerBLogicStateClockSource:
        """Return the ``TRIGger:B:LOGIc:STATE:CLOck:SOUrce`` command.

        **Description:**
            - This command sets or queries the clock source for the A or B logic trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:STATE:CLOck:SOUrce?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:STATE:CLOck:SOUrce?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:STATE:CLOck:SOUrce value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:STATE:CLOck:SOUrce {CH4|CQ}
            - TRIGger:B:LOGIc:STATE:CLOck:SOUrce?

        **Info:**
            - ``CH4`` specifies the analog channel as clock source.
            - ``CQ`` specifies the channel/qualifier as clock source.
        """
        return self._source


class TriggerBLogicState(SCPICmdRead):
    """The ``TRIGger:B:LOGIc:STATE`` command.

    **Description:**
        - This query-only command returns the data input and trigger criteria for the logic trigger.
          This command is equivalent to selecting Logic State from the Trig menu and then viewing
          the current logic state settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:STATE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:STATE?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:STATE?

    Properties:
        - ``.clock``: The ``TRIGger:B:LOGIc:STATE:CLOck`` command tree.
        - ``.input``: The ``TRIGger:B:LOGIc:STATE:INPut`` command tree.
        - ``.when``: The ``TRIGger:B:LOGIc:STATE:WHEn`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._clock = TriggerBLogicStateClock(device, f"{self._cmd_syntax}:CLOck")
        self._input = TriggerBLogicStateInput(device, f"{self._cmd_syntax}:INPut")
        self._when = TriggerBLogicStateWhen(device, f"{self._cmd_syntax}:WHEn")

    @property
    def clock(self) -> TriggerBLogicStateClock:
        """Return the ``TRIGger:B:LOGIc:STATE:CLOck`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:STATE:CLOck?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:STATE:CLOck?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.source``: The ``TRIGger:B:LOGIc:STATE:CLOck:SOUrce`` command.
        """
        return self._clock

    @property
    def input(self) -> TriggerBLogicStateInput:
        """Return the ``TRIGger:B:LOGIc:STATE:INPut`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:STATE:INPut?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:STATE:INPut?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:LOGIc:STATE:INPut:CH<x>`` command.
        """
        return self._input

    @property
    def when(self) -> TriggerBLogicStateWhen:
        """Return the ``TRIGger:B:LOGIc:STATE:WHEn`` command.

        **Description:**
            - This command sets or queries the condition for generating an A or B logic state
              trigger. This command is equivalent to selecting Logic State from the Trig menu and
              choosing the desired condition from the Trigger When Pattern drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:STATE:WHEn?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:STATE:WHEn?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:STATE:WHEn value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:STATE:WHEn {TRUe|FALSe}
            - TRIGger:B:LOGIc:STATE:WHEn?

        **Info:**
            - ``TRUe`` specifies that the trigger occurs when the clock transition on channel 4
              occurs and the pattern of channels 1-3 are at the desired logic input states.
            - ``FALSe`` specifies that the trigger occurs when the desired clock transition on
              channel 4 occurs and the desired logic input states on channels 1-3 are not found.
        """
        return self._when


class TriggerBLogicSetholdSettime(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:SETTime`` command.

    **Description:**
        - This command sets or queries the setup time for setup and hold violation triggering. This
          command is equivalent to selecting Setup/Hold Setup from the Trig menu and then setting
          the desired Setup Time.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:SETTime?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:SETTime?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:SETTime value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:SETTime <NR3>
        - TRIGger:B:LOGIc:SETHold:SETTime?

    **Info:**
        - ``<NR3>`` specifies the setup time for setup and hold violation triggering.
    """


class TriggerBLogicSetholdQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:QUAlify`` command.

    **Description:**
        - This command sets or queries the Setup/Hold Trigger qualification. This is equivalent to
          selecting Setup/Hold Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
          Trigger If Setup/Hold drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:QUAlify?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:B:LOGIc:SETHold:QUAlify?

    **Info:**
        - ``OCCurs`` specifies a trigger if any detectable event occurs.
        - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
          patterns and thresholds set by the.
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerBLogicSetholdHoldtime(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:HOLDTime`` command.

    **Description:**
        - This command sets or queries the hold time for setup and hold violation triggering. This
          command is equivalent to selecting Setup/Hold Setup from the Trig menu and then setting
          the desired Hold Time.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:HOLDTime?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:HOLDTime?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:HOLDTime value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:HOLDTime <NR3>
        - TRIGger:B:LOGIc:SETHold:HOLDTime?

    **Info:**
        - ``<NR3>`` specifies the hold time setting in seconds. Positive values for hold time occur
          after the clock edge. Negative values occur before the clock edge.
    """


class TriggerBLogicSetholdDataThresholdChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x>`` command.

    **Description:**
        - This command sets or queries the data voltage threshold for setup and hold trigger. This
          command is equivalent to selecting A or B Event Trigger Setup from the Trig menu and then
          setting the desired Data Level. The value of x can range from 1 through 4.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x> {ECL|TTL|<NR3>}
        - TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x>?

    **Info:**
        - ``ECL`` specifies the preset ECL high level.
        - ``TTL`` specifies the preset TTL high level.
        - ``<NR3>`` is the setup and hold data level in V.
    """


class TriggerBLogicSetholdDataThreshold(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:DATa:THReshold`` command.

    **Description:**
        - This command sets or queries the data voltage threshold for setup and hold trigger. This
          command is equivalent to selecting Setup/Hold Setup from the Trig menu and then setting
          the desired Data Level.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:DATa:THReshold?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:DATa:THReshold?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:DATa:THReshold value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:DATa:THReshold {ECL|TTL|<NR3>}
        - TRIGger:B:LOGIc:SETHold:DATa:THReshold?

    **Info:**
        - ``ECL`` specifies the preset ECL high level.
        - ``TTL`` specifies the preset TTL high level.
        - ``<NR3>`` is the setup and hold data level in V.

    Properties:
        - ``.ch``: The ``TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBLogicSetholdDataThresholdChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBLogicSetholdDataThresholdChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBLogicSetholdDataThresholdChannel]:
        """Return the ``TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x>`` command.

        **Description:**
            - This command sets or queries the data voltage threshold for setup and hold trigger.
              This command is equivalent to selecting A or B Event Trigger Setup from the Trig menu
              and then setting the desired Data Level. The value of x can range from 1 through 4.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x>?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x> {ECL|TTL|<NR3>}
            - TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x>?

        **Info:**
            - ``ECL`` specifies the preset ECL high level.
            - ``TTL`` specifies the preset TTL high level.
            - ``<NR3>`` is the setup and hold data level in V.
        """
        return self._ch


class TriggerBLogicSetholdDataSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:DATa:SOUrce`` command.

    **Description:**
        - This command sets or queries the data source for the setup and hold trigger. This command
          is equivalent to selecting Setup/Hold Setup from the Trig menu and choosing the desired
          channel from the Data Source drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:DATa:SOUrce?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:DATa:SOUrce?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:DATa:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:DATa:SOUrce CH<x>
        - TRIGger:B:LOGIc:SETHold:DATa:SOUrce?

    **Info:**
        - ``CH<x>`` specifies the input channel, which ranges from 1 through 4.
    """


class TriggerBLogicSetholdDataLevel(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:DATa:LEVel`` command.

    **Description:**
        - This command sets or queries the data voltage level for setup and hold trigger. This
          command is equivalent to selecting Setup/Hold Setup from the Trig menu and then setting
          the desired Data Level.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:DATa:LEVel?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:DATa:LEVel?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:DATa:LEVel value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:DATa:LEVel {ECL|TTL|<NR3>}
        - TRIGger:B:LOGIc:SETHold:DATa:LEVel?

    **Info:**
        - ``ECL`` specifies the preset ECL high level.
        - ``TTL`` specifies the preset TTL high level.
        - ``<NR3>`` specifies is the setup and hold data level in V.
    """


class TriggerBLogicSetholdData(SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:DATa`` command.

    **Description:**
        - This query-only command returns the voltage threshold and data source for the setup and
          hold trigger. This command is equivalent to selecting Setup/Hold Setup from the Trig menu
          and then viewing the current data setups.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:DATa?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:DATa?

    Properties:
        - ``.level``: The ``TRIGger:B:LOGIc:SETHold:DATa:LEVel`` command.
        - ``.source``: The ``TRIGger:B:LOGIc:SETHold:DATa:SOUrce`` command.
        - ``.threshold``: The ``TRIGger:B:LOGIc:SETHold:DATa:THReshold`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._level = TriggerBLogicSetholdDataLevel(device, f"{self._cmd_syntax}:LEVel")
        self._source = TriggerBLogicSetholdDataSource(device, f"{self._cmd_syntax}:SOUrce")
        self._threshold = TriggerBLogicSetholdDataThreshold(device, f"{self._cmd_syntax}:THReshold")

    @property
    def level(self) -> TriggerBLogicSetholdDataLevel:
        """Return the ``TRIGger:B:LOGIc:SETHold:DATa:LEVel`` command.

        **Description:**
            - This command sets or queries the data voltage level for setup and hold trigger. This
              command is equivalent to selecting Setup/Hold Setup from the Trig menu and then
              setting the desired Data Level.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:DATa:LEVel?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:DATa:LEVel?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:DATa:LEVel value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:DATa:LEVel {ECL|TTL|<NR3>}
            - TRIGger:B:LOGIc:SETHold:DATa:LEVel?

        **Info:**
            - ``ECL`` specifies the preset ECL high level.
            - ``TTL`` specifies the preset TTL high level.
            - ``<NR3>`` specifies is the setup and hold data level in V.
        """
        return self._level

    @property
    def source(self) -> TriggerBLogicSetholdDataSource:
        """Return the ``TRIGger:B:LOGIc:SETHold:DATa:SOUrce`` command.

        **Description:**
            - This command sets or queries the data source for the setup and hold trigger. This
              command is equivalent to selecting Setup/Hold Setup from the Trig menu and choosing
              the desired channel from the Data Source drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:DATa:SOUrce?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:DATa:SOUrce?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:DATa:SOUrce value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:DATa:SOUrce CH<x>
            - TRIGger:B:LOGIc:SETHold:DATa:SOUrce?

        **Info:**
            - ``CH<x>`` specifies the input channel, which ranges from 1 through 4.
        """
        return self._source

    @property
    def threshold(self) -> TriggerBLogicSetholdDataThreshold:
        """Return the ``TRIGger:B:LOGIc:SETHold:DATa:THReshold`` command.

        **Description:**
            - This command sets or queries the data voltage threshold for setup and hold trigger.
              This command is equivalent to selecting Setup/Hold Setup from the Trig menu and then
              setting the desired Data Level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:B:LOGIc:SETHold:DATa:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:DATa:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:DATa:THReshold value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:DATa:THReshold {ECL|TTL|<NR3>}
            - TRIGger:B:LOGIc:SETHold:DATa:THReshold?

        **Info:**
            - ``ECL`` specifies the preset ECL high level.
            - ``TTL`` specifies the preset TTL high level.
            - ``<NR3>`` is the setup and hold data level in V.

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:LOGIc:SETHold:DATa:THReshold:CH<x>`` command.
        """
        return self._threshold


class TriggerBLogicSetholdClockThresholdChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x>`` command.

    **Description:**
        - This command sets or queries the clock voltage threshold for setup and hold trigger. This
          command is equivalent to selecting Setup/Hold Setup from the Trig menu and then setting
          the desired Clock Level. The value of x can range from 1 through 4.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x>?`` query and raise an AssertionError if
          the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x> {ECL|TTL|<NR3>}
        - TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x>?

    **Info:**
        - ``ECL`` specifies a preset ECL high level.
        - ``TTL`` specifies a preset TTL high level.
        - ``<NR3>`` is the clock level in volts.
    """


class TriggerBLogicSetholdClockThreshold(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold`` command.

    **Description:**
        - This command sets or queries the clock voltage threshold for the setup and hold trigger.
          This command is equivalent to selecting Setup/Hold Setup from the Trig menu and setting
          the desired Clock Level.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:CLOCk:THReshold {ECL|TTL|<NR3>}
        - TRIGger:B:LOGIc:SETHold:CLOCk:THReshold?

    **Info:**
        - ``ECL`` specifies a preset ECL high level.
        - ``TTL`` specifies a preset TTL high level.
        - ``<NR3>`` is the clock level in volts.

    Properties:
        - ``.ch``: The ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[
            int, TriggerBLogicSetholdClockThresholdChannel
        ] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBLogicSetholdClockThresholdChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBLogicSetholdClockThresholdChannel]:
        """Return the ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x>`` command.

        **Description:**
            - This command sets or queries the clock voltage threshold for setup and hold trigger.
              This command is equivalent to selecting Setup/Hold Setup from the Trig menu and then
              setting the desired Clock Level. The value of x can range from 1 through 4.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x>?`` query and raise an AssertionError
              if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x> {ECL|TTL|<NR3>}
            - TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x>?

        **Info:**
            - ``ECL`` specifies a preset ECL high level.
            - ``TTL`` specifies a preset TTL high level.
            - ``<NR3>`` is the clock level in volts.
        """
        return self._ch


class TriggerBLogicSetholdClockSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce`` command.

    **Description:**
        - This command sets or queries the clock source for the A or B logic trigger setup and hold
          input. This is equivalent to selecting Setup/Hold Setup from the Trig menu and choosing
          the desired channel from the Clock Source drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce CH<x>
        - TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce?

    **Info:**
        - ``CH<x>`` specifies the input channel, which ranges from 1 through 4 for four-channel
          instruments or 1 through 2 for two channel instruments.
    """


class TriggerBLogicSetholdClockLevel(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:CLOCk:LEVel`` command.

    **Description:**
        - This command sets or queries the clock voltage level for the setup and hold trigger. This
          command is equivalent to selecting Setup/Hold Setup from the Trig menu and setting the
          desired Clock Level.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:CLOCk:LEVel?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:CLOCk:LEVel?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:CLOCk:LEVel value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:CLOCk:LEVel {ECL|TTL|<NR3>}
        - TRIGger:B:LOGIc:SETHold:CLOCk:LEVel?

    **Info:**
        - ``ECL`` specifies a preset ECL high level.
        - ``TTL`` specifies a preset TTL high level.
        - ``NR3`` is the setup and hold data level in V.
    """


class TriggerBLogicSetholdClockEdge(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:CLOCk:EDGE`` command.

    **Description:**
        - This command sets or queries the clock edge polarity for setup and hold triggering. This
          is equivalent to selecting Setup/Hold Setup from the Trig menu and then choosing the
          desired Clock Edge.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:CLOCk:EDGE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:CLOCk:EDGE?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:SETHold:CLOCk:EDGE value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:CLOCk:EDGE {FALL|RISe}
        - TRIGger:B:LOGIc:SETHold:CLOCk:EDGE?

    **Info:**
        - ``FALL`` specifies polarity as the clock falling edge.
        - ``RISe`` specifies polarity as the clock rising edge.
    """


class TriggerBLogicSetholdClock(SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold:CLOCk`` command.

    **Description:**
        - This query-only command returns the clock edge polarity, voltage threshold and source
          input for setup and hold triggering. This command is equivalent to selecting Setup/Hold
          Setup from the Trig menu and then viewing the current clock setups.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:CLOCk?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:CLOCk?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold:CLOCk?

    Properties:
        - ``.edge``: The ``TRIGger:B:LOGIc:SETHold:CLOCk:EDGE`` command.
        - ``.level``: The ``TRIGger:B:LOGIc:SETHold:CLOCk:LEVel`` command.
        - ``.source``: The ``TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce`` command.
        - ``.threshold``: The ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._edge = TriggerBLogicSetholdClockEdge(device, f"{self._cmd_syntax}:EDGE")
        self._level = TriggerBLogicSetholdClockLevel(device, f"{self._cmd_syntax}:LEVel")
        self._source = TriggerBLogicSetholdClockSource(device, f"{self._cmd_syntax}:SOUrce")
        self._threshold = TriggerBLogicSetholdClockThreshold(
            device, f"{self._cmd_syntax}:THReshold"
        )

    @property
    def edge(self) -> TriggerBLogicSetholdClockEdge:
        """Return the ``TRIGger:B:LOGIc:SETHold:CLOCk:EDGE`` command.

        **Description:**
            - This command sets or queries the clock edge polarity for setup and hold triggering.
              This is equivalent to selecting Setup/Hold Setup from the Trig menu and then choosing
              the desired Clock Edge.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:CLOCk:EDGE?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:CLOCk:EDGE?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:CLOCk:EDGE value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:CLOCk:EDGE {FALL|RISe}
            - TRIGger:B:LOGIc:SETHold:CLOCk:EDGE?

        **Info:**
            - ``FALL`` specifies polarity as the clock falling edge.
            - ``RISe`` specifies polarity as the clock rising edge.
        """
        return self._edge

    @property
    def level(self) -> TriggerBLogicSetholdClockLevel:
        """Return the ``TRIGger:B:LOGIc:SETHold:CLOCk:LEVel`` command.

        **Description:**
            - This command sets or queries the clock voltage level for the setup and hold trigger.
              This command is equivalent to selecting Setup/Hold Setup from the Trig menu and
              setting the desired Clock Level.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:CLOCk:LEVel?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:CLOCk:LEVel?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:CLOCk:LEVel value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:CLOCk:LEVel {ECL|TTL|<NR3>}
            - TRIGger:B:LOGIc:SETHold:CLOCk:LEVel?

        **Info:**
            - ``ECL`` specifies a preset ECL high level.
            - ``TTL`` specifies a preset TTL high level.
            - ``NR3`` is the setup and hold data level in V.
        """
        return self._level

    @property
    def source(self) -> TriggerBLogicSetholdClockSource:
        """Return the ``TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce`` command.

        **Description:**
            - This command sets or queries the clock source for the A or B logic trigger setup and
              hold input. This is equivalent to selecting Setup/Hold Setup from the Trig menu and
              choosing the desired channel from the Clock Source drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce CH<x>
            - TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce?

        **Info:**
            - ``CH<x>`` specifies the input channel, which ranges from 1 through 4 for four-channel
              instruments or 1 through 2 for two channel instruments.
        """
        return self._source

    @property
    def threshold(self) -> TriggerBLogicSetholdClockThreshold:
        """Return the ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold`` command.

        **Description:**
            - This command sets or queries the clock voltage threshold for the setup and hold
              trigger. This command is equivalent to selecting Setup/Hold Setup from the Trig menu
              and setting the desired Clock Level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:CLOCk:THReshold {ECL|TTL|<NR3>}
            - TRIGger:B:LOGIc:SETHold:CLOCk:THReshold?

        **Info:**
            - ``ECL`` specifies a preset ECL high level.
            - ``TTL`` specifies a preset TTL high level.
            - ``<NR3>`` is the clock level in volts.

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold:CH<x>`` command.
        """
        return self._threshold


class TriggerBLogicSethold(SCPICmdRead):
    """The ``TRIGger:B:LOGIc:SETHold`` command.

    **Description:**
        - This query-only command returns the clock edge polarity, voltage threshold and source
          input, data voltage threshold and source, and both setup and hold times for setup and hold
          violation triggering. This command is equivalent to selecting Setup/Hold Setup from the
          Trig menu and then viewing the current setups.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:SETHold?

    Properties:
        - ``.clock``: The ``TRIGger:B:LOGIc:SETHold:CLOCk`` command.
        - ``.data``: The ``TRIGger:B:LOGIc:SETHold:DATa`` command.
        - ``.holdtime``: The ``TRIGger:B:LOGIc:SETHold:HOLDTime`` command.
        - ``.qualify``: The ``TRIGger:B:LOGIc:SETHold:QUAlify`` command.
        - ``.settime``: The ``TRIGger:B:LOGIc:SETHold:SETTime`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._clock = TriggerBLogicSetholdClock(device, f"{self._cmd_syntax}:CLOCk")
        self._data = TriggerBLogicSetholdData(device, f"{self._cmd_syntax}:DATa")
        self._holdtime = TriggerBLogicSetholdHoldtime(device, f"{self._cmd_syntax}:HOLDTime")
        self._qualify = TriggerBLogicSetholdQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._settime = TriggerBLogicSetholdSettime(device, f"{self._cmd_syntax}:SETTime")

    @property
    def clock(self) -> TriggerBLogicSetholdClock:
        """Return the ``TRIGger:B:LOGIc:SETHold:CLOCk`` command.

        **Description:**
            - This query-only command returns the clock edge polarity, voltage threshold and source
              input for setup and hold triggering. This command is equivalent to selecting
              Setup/Hold Setup from the Trig menu and then viewing the current clock setups.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:CLOCk?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:CLOCk?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:CLOCk?

        Sub-properties:
            - ``.edge``: The ``TRIGger:B:LOGIc:SETHold:CLOCk:EDGE`` command.
            - ``.level``: The ``TRIGger:B:LOGIc:SETHold:CLOCk:LEVel`` command.
            - ``.source``: The ``TRIGger:B:LOGIc:SETHold:CLOCk:SOUrce`` command.
            - ``.threshold``: The ``TRIGger:B:LOGIc:SETHold:CLOCk:THReshold`` command.
        """
        return self._clock

    @property
    def data(self) -> TriggerBLogicSetholdData:
        """Return the ``TRIGger:B:LOGIc:SETHold:DATa`` command.

        **Description:**
            - This query-only command returns the voltage threshold and data source for the setup
              and hold trigger. This command is equivalent to selecting Setup/Hold Setup from the
              Trig menu and then viewing the current data setups.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:DATa?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:DATa?

        Sub-properties:
            - ``.level``: The ``TRIGger:B:LOGIc:SETHold:DATa:LEVel`` command.
            - ``.source``: The ``TRIGger:B:LOGIc:SETHold:DATa:SOUrce`` command.
            - ``.threshold``: The ``TRIGger:B:LOGIc:SETHold:DATa:THReshold`` command.
        """
        return self._data

    @property
    def holdtime(self) -> TriggerBLogicSetholdHoldtime:
        """Return the ``TRIGger:B:LOGIc:SETHold:HOLDTime`` command.

        **Description:**
            - This command sets or queries the hold time for setup and hold violation triggering.
              This command is equivalent to selecting Setup/Hold Setup from the Trig menu and then
              setting the desired Hold Time.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:HOLDTime?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:HOLDTime?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:HOLDTime value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:HOLDTime <NR3>
            - TRIGger:B:LOGIc:SETHold:HOLDTime?

        **Info:**
            - ``<NR3>`` specifies the hold time setting in seconds. Positive values for hold time
              occur after the clock edge. Negative values occur before the clock edge.
        """
        return self._holdtime

    @property
    def qualify(self) -> TriggerBLogicSetholdQualify:
        """Return the ``TRIGger:B:LOGIc:SETHold:QUAlify`` command.

        **Description:**
            - This command sets or queries the Setup/Hold Trigger qualification. This is equivalent
              to selecting Setup/Hold Setup from the Trig menu and selecting Occurs, Logic, or Bus
              in the Trigger If Setup/Hold drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:QUAlify?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:B:LOGIc:SETHold:QUAlify?

        **Info:**
            - ``OCCurs`` specifies a trigger if any detectable event occurs.
            - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
              patterns and thresholds set by the.
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def settime(self) -> TriggerBLogicSetholdSettime:
        """Return the ``TRIGger:B:LOGIc:SETHold:SETTime`` command.

        **Description:**
            - This command sets or queries the setup time for setup and hold violation triggering.
              This command is equivalent to selecting Setup/Hold Setup from the Trig menu and then
              setting the desired Setup Time.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold:SETTime?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold:SETTime?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:SETHold:SETTime value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold:SETTime <NR3>
            - TRIGger:B:LOGIc:SETHold:SETTime?

        **Info:**
            - ``<NR3>`` specifies the setup time for setup and hold violation triggering.
        """
        return self._settime


class TriggerBLogicPatternWhenMorelimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:PATtern:WHEn:MORELimit`` command.

    **Description:**
        - This command sets or queries the minimum time that the selected pattern can be true and
          still generate an A or B logic pattern trigger. This command is equivalent to selecting A
          or B Event (Main) Trigger Setup from the Trig menu, selecting Pattern as the Trigger Type,
          selecting More Than for the Pattern in the Trigger When settings, and entering a minimum
          value for Time.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:PATtern:WHEn:MORELimit?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:LOGIc:PATtern:WHEn:MORELimit?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:PATtern:WHEn:MORELimit value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:PATtern:WHEn:MORELimit <NR3>
        - TRIGger:B:LOGIc:PATtern:WHEn:MORELimit?

    **Info:**
        - ``<NR3>`` specifies the amount of time to hold the pattern true.
    """


class TriggerBLogicPatternWhenLesslimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit`` command.

    **Description:**
        - This command sets or queries the maximum time that the selected pattern can be true and
          still generate an A or B logic pattern trigger. This command is equivalent to selecting
          the A or B Event (Main) Trigger Setup from the Trig menu, selecting Pattern as the Trigger
          Type, selecting Less Than for the Pattern in the Trigger When settings, and entering a
          maximum value for Time.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit <NR3>
        - TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit?

    **Info:**
        - ``<NR3>`` specifies the amount of time to hold the pattern true.
    """


class TriggerBLogicPatternWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:PATtern:WHEn`` command.

    **Description:**
        - This command sets or queries the condition for generating an A or B logic pattern trigger
          with respect to the defined input pattern. This command is equivalent to selecting A or B
          Event (Main) Trigger Setup from the Trig menu, selecting Pattern for Trigger Type, and
          choosing a trigger condition from the Pattern drop-down list, which is located in the
          Trigger When group box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:PATtern:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:PATtern:WHEn?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:PATtern:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:PATtern:WHEn {TRUe|FALSe|LESSThan|MOREThan}
        - TRIGger:B:LOGIc:PATtern:WHEn?

    **Info:**
        - ``TRUe`` sets the instrument to trigger when the pattern becomes true.
        - ``FALSe`` sets the instrument to trigger when the pattern becomes false.
        - ``LESSThan`` sets the instrument to trigger if the specific pattern is true less than the
          time set by the.
        - ``MOREThan`` argument sets the instrument to trigger if the specific pattern is true
          longer than the specified time set by the.

    Properties:
        - ``.lesslimit``: The ``TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit`` command.
        - ``.morelimit``: The ``TRIGger:B:LOGIc:PATtern:WHEn:MORELimit`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._lesslimit = TriggerBLogicPatternWhenLesslimit(device, f"{self._cmd_syntax}:LESSLimit")
        self._morelimit = TriggerBLogicPatternWhenMorelimit(device, f"{self._cmd_syntax}:MORELimit")

    @property
    def lesslimit(self) -> TriggerBLogicPatternWhenLesslimit:
        """Return the ``TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit`` command.

        **Description:**
            - This command sets or queries the maximum time that the selected pattern can be true
              and still generate an A or B logic pattern trigger. This command is equivalent to
              selecting the A or B Event (Main) Trigger Setup from the Trig menu, selecting Pattern
              as the Trigger Type, selecting Less Than for the Pattern in the Trigger When settings,
              and entering a maximum value for Time.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit <NR3>
            - TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit?

        **Info:**
            - ``<NR3>`` specifies the amount of time to hold the pattern true.
        """
        return self._lesslimit

    @property
    def morelimit(self) -> TriggerBLogicPatternWhenMorelimit:
        """Return the ``TRIGger:B:LOGIc:PATtern:WHEn:MORELimit`` command.

        **Description:**
            - This command sets or queries the minimum time that the selected pattern can be true
              and still generate an A or B logic pattern trigger. This command is equivalent to
              selecting A or B Event (Main) Trigger Setup from the Trig menu, selecting Pattern as
              the Trigger Type, selecting More Than for the Pattern in the Trigger When settings,
              and entering a minimum value for Time.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:B:LOGIc:PATtern:WHEn:MORELimit?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:PATtern:WHEn:MORELimit?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:PATtern:WHEn:MORELimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:PATtern:WHEn:MORELimit <NR3>
            - TRIGger:B:LOGIc:PATtern:WHEn:MORELimit?

        **Info:**
            - ``<NR3>`` specifies the amount of time to hold the pattern true.
        """
        return self._morelimit


class TriggerBLogicPatternInputChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:PATtern:INPut:CH<x>`` command.

    **Description:**
        - This command sets or queries the A or B logic trigger input for the specified channel.
          This command specifies the logic value used when the pattern trigger detects the threshold
          level. This command is equivalent to selecting Logic Pattern from the Trig menu and then
          choosing the desired logical input from the channel drop-down list, which is located in
          the Input Threshold group box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:PATtern:INPut:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:PATtern:INPut:CH<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:B:LOGIc:PATtern:INPut:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:PATtern:INPut:CH<x> {HIGH|LOW|X}
        - TRIGger:B:LOGIc:PATtern:INPut:CH<x>?

    **Info:**
        - ``HIGH`` specifies the logic high.
        - ``LOW`` specifies the logic low.
        - ``X`` specifies a 'don't care' state.
    """


class TriggerBLogicPatternInput(SCPICmdRead):
    """The ``TRIGger:B:LOGIc:PATtern:INPut`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:PATtern:INPut?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:PATtern:INPut?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.ch``: The ``TRIGger:B:LOGIc:PATtern:INPut:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBLogicPatternInputChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBLogicPatternInputChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBLogicPatternInputChannel]:
        """Return the ``TRIGger:B:LOGIc:PATtern:INPut:CH<x>`` command.

        **Description:**
            - This command sets or queries the A or B logic trigger input for the specified channel.
              This command specifies the logic value used when the pattern trigger detects the
              threshold level. This command is equivalent to selecting Logic Pattern from the Trig
              menu and then choosing the desired logical input from the channel drop-down list,
              which is located in the Input Threshold group box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:PATtern:INPut:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:B:LOGIc:PATtern:INPut:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:PATtern:INPut:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:PATtern:INPut:CH<x> {HIGH|LOW|X}
            - TRIGger:B:LOGIc:PATtern:INPut:CH<x>?

        **Info:**
            - ``HIGH`` specifies the logic high.
            - ``LOW`` specifies the logic low.
            - ``X`` specifies a 'don't care' state.
        """
        return self._ch


class TriggerBLogicPattern(SCPICmdRead):
    """The ``TRIGger:B:LOGIc:PATtern`` command.

    **Description:**
        - This query-only command returns the conditions used for generating an A logic pattern
          trigger, with respect to the defined input pattern, and identifies the maximum and minimum
          time that the selected pattern can be true and still generate the trigger. This command is
          equivalent to selecting Logic Pattern from the Trig menu and then viewing the current
          setups.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:PATtern?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:PATtern?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:PATtern?

    Properties:
        - ``.input``: The ``TRIGger:B:LOGIc:PATtern:INPut`` command tree.
        - ``.when``: The ``TRIGger:B:LOGIc:PATtern:WHEn`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._input = TriggerBLogicPatternInput(device, f"{self._cmd_syntax}:INPut")
        self._when = TriggerBLogicPatternWhen(device, f"{self._cmd_syntax}:WHEn")

    @property
    def input(self) -> TriggerBLogicPatternInput:
        """Return the ``TRIGger:B:LOGIc:PATtern:INPut`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:PATtern:INPut?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:PATtern:INPut?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:LOGIc:PATtern:INPut:CH<x>`` command.
        """
        return self._input

    @property
    def when(self) -> TriggerBLogicPatternWhen:
        """Return the ``TRIGger:B:LOGIc:PATtern:WHEn`` command.

        **Description:**
            - This command sets or queries the condition for generating an A or B logic pattern
              trigger with respect to the defined input pattern. This command is equivalent to
              selecting A or B Event (Main) Trigger Setup from the Trig menu, selecting Pattern for
              Trigger Type, and choosing a trigger condition from the Pattern drop-down list, which
              is located in the Trigger When group box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:PATtern:WHEn?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:PATtern:WHEn?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:PATtern:WHEn value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:PATtern:WHEn {TRUe|FALSe|LESSThan|MOREThan}
            - TRIGger:B:LOGIc:PATtern:WHEn?

        **Info:**
            - ``TRUe`` sets the instrument to trigger when the pattern becomes true.
            - ``FALSe`` sets the instrument to trigger when the pattern becomes false.
            - ``LESSThan`` sets the instrument to trigger if the specific pattern is true less than
              the time set by the.
            - ``MOREThan`` argument sets the instrument to trigger if the specific pattern is true
              longer than the specified time set by the.

        Sub-properties:
            - ``.lesslimit``: The ``TRIGger:B:LOGIc:PATtern:WHEn:LESSLimit`` command.
            - ``.morelimit``: The ``TRIGger:B:LOGIc:PATtern:WHEn:MORELimit`` command.
        """
        return self._when


class TriggerBLogicInputFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:INPut:FORMat`` command.

    **Description:**
        - This command sets or queries the A or B logic trigger pattern format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:INPut:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:INPut:FORMat?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:INPut:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:INPut:FORMat {HEXadecimal|BINary}
        - TRIGger:B:LOGIc:INPut:FORMat?

    **Info:**
        - ``HEXadecimal`` specifies hexadecimal pattern format for A or B logic trigger.
        - ``BINary`` specifies binary pattern format for A or B logic trigger.
    """


class TriggerBLogicInputChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:INPut:CH<x>`` command.

    **Description:**
        - This command sets or queries the A or B logical trigger input for the channel specified by
          x. The value of x ranges from 1 through 3. Note that CH4 cannot be set or queried with
          this command. For details about setting this channel, see . This command is equivalent to
          selecting Event Trigger Setup from the Trig menu and then choosing the desired logical
          input from the Ch<x> drop-down list, which is located in the Input Threshold group box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:INPut:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:INPut:CH<x>?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:INPut:CH<x> value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:INPut:CH<x> {HIGH|LOW|X}
        - TRIGger:B:LOGIc:INPut:CH<x>?

    **Info:**
        - ``HIGH`` specifies the logic high.
        - ``LOW`` specifies the logic low.
        - ``X`` specifies a 'don't care' state.
    """


class TriggerBLogicInputAll(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:INPut:ALL`` command.

    **Description:**
        - This command sets or queries the A or B logic trigger input condition for all the
          channels. The command is available when the Trigger Type is set to Pattern/State.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:INPut:ALL?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:INPut:ALL?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:INPut:ALL value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:INPut:ALL <QString>
        - TRIGger:B:LOGIc:INPut:ALL?

    **Info:**
        - ``<QString>`` specifies the bit pattern for all the channels.
    """

    _WRAP_ARG_WITH_QUOTES = True


class TriggerBLogicInput(SCPICmdRead):
    """The ``TRIGger:B:LOGIc:INPut`` command.

    **Description:**
        - This query-only command returns the logic trigger input expected for Channel 1, 2, and 3.
          Channel 4 is set or queried with the command . This command is equivalent to selecting
          Event Trigger Setup and viewing or setting the Input Threshold for the channels.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:INPut?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:INPut?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:INPut?

    Properties:
        - ``.all``: The ``TRIGger:B:LOGIc:INPut:ALL`` command.
        - ``.ch``: The ``TRIGger:B:LOGIc:INPut:CH<x>`` command.
        - ``.format``: The ``TRIGger:B:LOGIc:INPut:FORMat`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._all = TriggerBLogicInputAll(device, f"{self._cmd_syntax}:ALL")
        self._ch: Dict[int, TriggerBLogicInputChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBLogicInputChannel(device, f"{self._cmd_syntax}:CH{x}")
        )
        self._format = TriggerBLogicInputFormat(device, f"{self._cmd_syntax}:FORMat")

    @property
    def all(self) -> TriggerBLogicInputAll:
        """Return the ``TRIGger:B:LOGIc:INPut:ALL`` command.

        **Description:**
            - This command sets or queries the A or B logic trigger input condition for all the
              channels. The command is available when the Trigger Type is set to Pattern/State.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:INPut:ALL?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:INPut:ALL?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:INPut:ALL value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:INPut:ALL <QString>
            - TRIGger:B:LOGIc:INPut:ALL?

        **Info:**
            - ``<QString>`` specifies the bit pattern for all the channels.
        """
        return self._all

    @property
    def ch(self) -> Dict[int, TriggerBLogicInputChannel]:
        """Return the ``TRIGger:B:LOGIc:INPut:CH<x>`` command.

        **Description:**
            - This command sets or queries the A or B logical trigger input for the channel
              specified by x. The value of x ranges from 1 through 3. Note that CH4 cannot be set or
              queried with this command. For details about setting this channel, see . This command
              is equivalent to selecting Event Trigger Setup from the Trig menu and then choosing
              the desired logical input from the Ch<x> drop-down list, which is located in the Input
              Threshold group box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:INPut:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:INPut:CH<x>?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:INPut:CH<x> value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:INPut:CH<x> {HIGH|LOW|X}
            - TRIGger:B:LOGIc:INPut:CH<x>?

        **Info:**
            - ``HIGH`` specifies the logic high.
            - ``LOW`` specifies the logic low.
            - ``X`` specifies a 'don't care' state.
        """
        return self._ch

    @property
    def format(self) -> TriggerBLogicInputFormat:
        """Return the ``TRIGger:B:LOGIc:INPut:FORMat`` command.

        **Description:**
            - This command sets or queries the A or B logic trigger pattern format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:INPut:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:INPut:FORMat?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:LOGIc:INPut:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:INPut:FORMat {HEXadecimal|BINary}
            - TRIGger:B:LOGIc:INPut:FORMat?

        **Info:**
            - ``HEXadecimal`` specifies hexadecimal pattern format for A or B logic trigger.
            - ``BINary`` specifies binary pattern format for A or B logic trigger.
        """
        return self._format


class TriggerBLogicFunction(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:FUNCtion`` command.

    **Description:**
        - This command sets or queries the logical combination of the input channels for logic
          triggers. This command is equivalent to selecting Logic for the Trigger Type, and setting
          or viewing the Define Logic.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:FUNCtion?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:FUNCtion?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:FUNCtion value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:FUNCtion {AND|NANd|NOR|OR}
        - TRIGger:B:LOGIc:FUNCtion?

    **Info:**
        - ``AND`` specifies to trigger if all conditions are true.
        - ``NANd`` specifies to trigger if any of the conditions are false.
        - ``NOR`` specifies to trigger if all conditions are false.
        - ``OR`` specifies to trigger if any of the conditions are true.
    """


class TriggerBLogicClass(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LOGIc:CLAss`` command.

    **Description:**
        - This command sets or queries the class of the Logic Trigger. Used with the command, this
          command is equivalent to selecting Logic Pattern, Logic State, or Setup/Hold Setup from
          the Trig menu.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:CLAss?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:CLAss?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:CLAss value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc:CLAss {PATtern|STATE|SETHold}
        - TRIGger:B:LOGIc:CLAss?

    **Info:**
        - ``PATtern`` sets the instrument to trigger when the specified logical combinations of
          Channels 1, 2, 3, and 4 are met.
        - ``STATE`` sets the instrument to trigger when the specified conditions of Channels 1, 2,
          and 3 are met after the Channel 4 (clock) condition is met.
        - ``SETHold`` sets the instrument to trigger on setup and hold violations between a data
          source and a clock source. Use one channel input as the clock signal and a second channel
          input as the data input. The clocking and data levels are used to determine if a clock or
          data transition has occurred.
    """


class TriggerBLogic(SCPICmdRead):
    """The ``TRIGger:B:LOGIc`` command.

    **Description:**
        - This query-only command returns all of the logic trigger parameters.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LOGIc?

    Properties:
        - ``.class``: The ``TRIGger:B:LOGIc:CLAss`` command.
        - ``.function``: The ``TRIGger:B:LOGIc:FUNCtion`` command.
        - ``.input``: The ``TRIGger:B:LOGIc:INPut`` command.
        - ``.pattern``: The ``TRIGger:B:LOGIc:PATtern`` command.
        - ``.sethold``: The ``TRIGger:B:LOGIc:SETHold`` command.
        - ``.state``: The ``TRIGger:B:LOGIc:STATE`` command.
        - ``.threshold``: The ``TRIGger:B:LOGIc:THReshold`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._class = TriggerBLogicClass(device, f"{self._cmd_syntax}:CLAss")
        self._function = TriggerBLogicFunction(device, f"{self._cmd_syntax}:FUNCtion")
        self._input = TriggerBLogicInput(device, f"{self._cmd_syntax}:INPut")
        self._pattern = TriggerBLogicPattern(device, f"{self._cmd_syntax}:PATtern")
        self._sethold = TriggerBLogicSethold(device, f"{self._cmd_syntax}:SETHold")
        self._state = TriggerBLogicState(device, f"{self._cmd_syntax}:STATE")
        self._threshold = TriggerBLogicThreshold(device, f"{self._cmd_syntax}:THReshold")

    @property
    def class_(self) -> TriggerBLogicClass:
        """Return the ``TRIGger:B:LOGIc:CLAss`` command.

        **Description:**
            - This command sets or queries the class of the Logic Trigger. Used with the command,
              this command is equivalent to selecting Logic Pattern, Logic State, or Setup/Hold
              Setup from the Trig menu.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:CLAss?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:CLAss?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:CLAss value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:CLAss {PATtern|STATE|SETHold}
            - TRIGger:B:LOGIc:CLAss?

        **Info:**
            - ``PATtern`` sets the instrument to trigger when the specified logical combinations of
              Channels 1, 2, 3, and 4 are met.
            - ``STATE`` sets the instrument to trigger when the specified conditions of Channels 1,
              2, and 3 are met after the Channel 4 (clock) condition is met.
            - ``SETHold`` sets the instrument to trigger on setup and hold violations between a data
              source and a clock source. Use one channel input as the clock signal and a second
              channel input as the data input. The clocking and data levels are used to determine if
              a clock or data transition has occurred.
        """
        return self._class

    @property
    def function(self) -> TriggerBLogicFunction:
        """Return the ``TRIGger:B:LOGIc:FUNCtion`` command.

        **Description:**
            - This command sets or queries the logical combination of the input channels for logic
              triggers. This command is equivalent to selecting Logic for the Trigger Type, and
              setting or viewing the Define Logic.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:FUNCtion?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:FUNCtion?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:LOGIc:FUNCtion value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:FUNCtion {AND|NANd|NOR|OR}
            - TRIGger:B:LOGIc:FUNCtion?

        **Info:**
            - ``AND`` specifies to trigger if all conditions are true.
            - ``NANd`` specifies to trigger if any of the conditions are false.
            - ``NOR`` specifies to trigger if all conditions are false.
            - ``OR`` specifies to trigger if any of the conditions are true.
        """
        return self._function

    @property
    def input(self) -> TriggerBLogicInput:
        """Return the ``TRIGger:B:LOGIc:INPut`` command.

        **Description:**
            - This query-only command returns the logic trigger input expected for Channel 1, 2, and
              3. Channel 4 is set or queried with the command . This command is equivalent to
              selecting Event Trigger Setup and viewing or setting the Input Threshold for the
              channels.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:INPut?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:INPut?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:INPut?

        Sub-properties:
            - ``.all``: The ``TRIGger:B:LOGIc:INPut:ALL`` command.
            - ``.ch``: The ``TRIGger:B:LOGIc:INPut:CH<x>`` command.
            - ``.format``: The ``TRIGger:B:LOGIc:INPut:FORMat`` command.
        """
        return self._input

    @property
    def pattern(self) -> TriggerBLogicPattern:
        """Return the ``TRIGger:B:LOGIc:PATtern`` command.

        **Description:**
            - This query-only command returns the conditions used for generating an A logic pattern
              trigger, with respect to the defined input pattern, and identifies the maximum and
              minimum time that the selected pattern can be true and still generate the trigger.
              This command is equivalent to selecting Logic Pattern from the Trig menu and then
              viewing the current setups.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:PATtern?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:PATtern?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:PATtern?

        Sub-properties:
            - ``.input``: The ``TRIGger:B:LOGIc:PATtern:INPut`` command tree.
            - ``.when``: The ``TRIGger:B:LOGIc:PATtern:WHEn`` command.
        """
        return self._pattern

    @property
    def sethold(self) -> TriggerBLogicSethold:
        """Return the ``TRIGger:B:LOGIc:SETHold`` command.

        **Description:**
            - This query-only command returns the clock edge polarity, voltage threshold and source
              input, data voltage threshold and source, and both setup and hold times for setup and
              hold violation triggering. This command is equivalent to selecting Setup/Hold Setup
              from the Trig menu and then viewing the current setups.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:SETHold?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:SETHold?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:SETHold?

        Sub-properties:
            - ``.clock``: The ``TRIGger:B:LOGIc:SETHold:CLOCk`` command.
            - ``.data``: The ``TRIGger:B:LOGIc:SETHold:DATa`` command.
            - ``.holdtime``: The ``TRIGger:B:LOGIc:SETHold:HOLDTime`` command.
            - ``.qualify``: The ``TRIGger:B:LOGIc:SETHold:QUAlify`` command.
            - ``.settime``: The ``TRIGger:B:LOGIc:SETHold:SETTime`` command.
        """
        return self._sethold

    @property
    def state(self) -> TriggerBLogicState:
        """Return the ``TRIGger:B:LOGIc:STATE`` command.

        **Description:**
            - This query-only command returns the data input and trigger criteria for the logic
              trigger. This command is equivalent to selecting Logic State from the Trig menu and
              then viewing the current logic state settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:STATE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:STATE?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:STATE?

        Sub-properties:
            - ``.clock``: The ``TRIGger:B:LOGIc:STATE:CLOck`` command tree.
            - ``.input``: The ``TRIGger:B:LOGIc:STATE:INPut`` command tree.
            - ``.when``: The ``TRIGger:B:LOGIc:STATE:WHEn`` command.
        """
        return self._state

    @property
    def threshold(self) -> TriggerBLogicThreshold:
        """Return the ``TRIGger:B:LOGIc:THReshold`` command.

        **Description:**
            - This query-only command returns the threshold voltage for all channels in a logic
              trigger. This command query is equivalent to selecting Event Trigger Setup from the
              Trig menu, choosing a logic trigger type, such as State or Pattern, and viewing the
              current Input Threshold voltage settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc:THReshold?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc:THReshold?

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:LOGIc:THReshold:CH<x>`` command.
        """
        return self._threshold


class TriggerBLevelChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LEVel:CH<x>`` command.

    **Description:**
        - This command sets or queries the CH<x> trigger level for
          ``TRIGGER:LVLSRCPREFERENCE SRCDEPENDENT`` mode. The CH<x> range is 1 to 4.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LEVel:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LEVel:CH<x>?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:LEVel:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LEVel:CH<x> {ECL|TTL|<NR3>}
        - TRIGger:B:LEVel:CH<x>?

    **Info:**
        - ``ECL`` specifies the ECL high level.
        - ``TTL`` specifies the TTL high level.
        - ``<NR3>`` specifies the trigger level in user units (usually volts).
    """


class TriggerBLevel(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:LEVel`` command.

    **Description:**
        - This command sets or queries the level for the trigger. This command is equivalent to
          selecting Holdoff from the Trig menu and then viewing or setting the trigger Level or
          selecting B Event (Delayed) Trigger Setup from the Trig menu and setting the B Trig Level
          voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:LEVel?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:LEVel?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:LEVel value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:LEVel {ECL|TTL|<NR3>}
        - TRIGger:B:LEVel?

    **Info:**
        - ``ECL`` specifies the ECL high level.
        - ``TTL`` specifies the TTL high level.
        - ``<NR3>`` specifies the trigger level in user units (usually volts).

    Properties:
        - ``.ch``: The ``TRIGger:B:LEVel:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBLevelChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBLevelChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBLevelChannel]:
        """Return the ``TRIGger:B:LEVel:CH<x>`` command.

        **Description:**
            - This command sets or queries the CH<x> trigger level for
              ``TRIGGER:LVLSRCPREFERENCE SRCDEPENDENT`` mode. The CH<x> range is 1 to 4.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LEVel:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LEVel:CH<x>?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:LEVel:CH<x> value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LEVel:CH<x> {ECL|TTL|<NR3>}
            - TRIGger:B:LEVel:CH<x>?

        **Info:**
            - ``ECL`` specifies the ECL high level.
            - ``TTL`` specifies the TTL high level.
            - ``<NR3>`` specifies the trigger level in user units (usually volts).
        """
        return self._ch


class TriggerBEventsCount(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:EVENTS:COUNt`` command.

    **Description:**
        - This command sets or queries the number of events that must occur before the B trigger.
          The B trigger event count applies only if ``TRIGger:B:BY`` is set to EVENTS.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:EVENTS:COUNt?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:EVENTS:COUNt?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:EVENTS:COUNt value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:EVENTS:COUNt <NR1>
        - TRIGger:B:EVENTS:COUNt?

    **Info:**
        - ``<NR1>`` is the number of B trigger events, which can range from 1 to 65,471.
    """


class TriggerBEvents(SCPICmdRead):
    """The ``TRIGger:B:EVENTS`` command.

    **Description:**
        - Returns the current B trigger events parameter.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:EVENTS?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:EVENTS?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:EVENTS?

    Properties:
        - ``.count``: The ``TRIGger:B:EVENTS:COUNt`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._count = TriggerBEventsCount(device, f"{self._cmd_syntax}:COUNt")

    @property
    def count(self) -> TriggerBEventsCount:
        """Return the ``TRIGger:B:EVENTS:COUNt`` command.

        **Description:**
            - This command sets or queries the number of events that must occur before the B
              trigger. The B trigger event count applies only if ``TRIGger:B:BY`` is set to EVENTS.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:EVENTS:COUNt?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:EVENTS:COUNt?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:EVENTS:COUNt value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:EVENTS:COUNt <NR1>
            - TRIGger:B:EVENTS:COUNt?

        **Info:**
            - ``<NR1>`` is the number of B trigger events, which can range from 1 to 65,471.
        """
        return self._count


class TriggerBEdgeSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:EDGE:SOUrce`` command.

    **Description:**
        - This command sets or queries the source for the edge trigger. This command is equivalent
          to selecting Event Trigger Setup from the Trig menu and then choosing from the Source
          drop-down list. When an UltraSync stack is in use, the mapped channels are used to both
          acquire waveform data and to trigger the oscilloscope. In the special case of an UltraSync
          stack master, additional channels are available for triggering. These are the unmapped
          channels. For an ATI UltraSync Sstack master, CH2, MCH1, and MCH3 can be used for
          triggering. For a 4-Channel UltraSync stack master, CH1, MCH2, MCH3, and MCH4 are
          available for triggering. The vertical min/max amplitude for these signals must be setup.
          See for more details.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:EDGE:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE:SOUrce?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:EDGE:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:EDGE:SOUrce {AUXiliary|CH<x>|MCH<x>|LINE|D<x>}
        - TRIGger:B:EDGE:SOUrce?

    **Info:**
        - ``AUXiliary`` specifies an external trigger using the Auxiliary Trigger Input. x can be 1,
          2, 3, or 4.
        - ``CH<x>`` specifies one input channel as the edge trigger source.
        - ``MCH<x>`` specifies an unmapped channel on an UltraSync stack master. For more details
          see.
        - ``LINE`` specifies AC line voltage, and is for A Trigger only.
        - ``D<x>`` specifies a digital input as the edge trigger source. x can be 0 through 15.
    """


class TriggerBEdgeSlopeChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:EDGE:SLOpe:CH<x>`` command.

    **Description:**
        - This command sets or queries the slope for the edge trigger for the specified channel.
          This command is equivalent to selecting A Event or B Event Trigger Setup from the Trig
          menu and then choosing the desired Slope.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:EDGE:SLOpe:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE:SLOpe:CH<x>?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:EDGE:SLOpe:CH<x> value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:EDGE:SLOpe:CH<x> {RISe|FALL|EITher}
        - TRIGger:B:EDGE:SLOpe:CH<x>?

    **Info:**
        - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
        - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
        - ``EITher`` specifies to trigger on either the rising or falling edge of a signal. EITHER
          is only available on the DPO7000C and DPO/DSA/MSO70000C/D/DX Series instruments.
    """


class TriggerBEdgeSlopeAux(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:EDGE:SLOpe:AUX`` command.

    **Description:**
        - This command sets or queries the slope for the edge trigger for the AUX In input. This
          command is equivalent to selecting A Event or B Event Trigger Setup from the Trig menu and
          then choosing the desired Slope.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:EDGE:SLOpe:AUX?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE:SLOpe:AUX?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:EDGE:SLOpe:AUX value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:EDGE:SLOpe:AUX {RISe|FALL|EITHER}
        - TRIGger:B:EDGE:SLOpe:AUX?

    **Info:**
        - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
        - ``EITHER`` specifies to trigger on either the rising or falling edge of a signal. EITHER
          is only available on the DPO7000C and DPO/DSA/MSO70000C/D/DX Series instruments.
    """


class TriggerBEdgeSlope(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:EDGE:SLOpe`` command.

    **Description:**
        - This command sets or queries the slope for the edge trigger. This command is equivalent to
          selecting Edge from the Trigger Type drop-down in the Trigger setup context menu, and then
          choosing the desired Slope. This command is also equivalent to pressing the front-panel
          Slope button.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:EDGE:SLOpe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE:SLOpe?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:EDGE:SLOpe value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:EDGE:SLOpe {RISe|FALL|EITher}
        - TRIGger:B:EDGE:SLOpe?

    **Info:**
        - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
        - ``FALL`` specifies to trigger on the falling or negative edge of a signal.

    Properties:
        - ``.aux``: The ``TRIGger:B:EDGE:SLOpe:AUX`` command.
        - ``.ch``: The ``TRIGger:B:EDGE:SLOpe:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._aux = TriggerBEdgeSlopeAux(device, f"{self._cmd_syntax}:AUX")
        self._ch: Dict[int, TriggerBEdgeSlopeChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBEdgeSlopeChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def aux(self) -> TriggerBEdgeSlopeAux:
        """Return the ``TRIGger:B:EDGE:SLOpe:AUX`` command.

        **Description:**
            - This command sets or queries the slope for the edge trigger for the AUX In input. This
              command is equivalent to selecting A Event or B Event Trigger Setup from the Trig menu
              and then choosing the desired Slope.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:EDGE:SLOpe:AUX?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE:SLOpe:AUX?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:EDGE:SLOpe:AUX value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:EDGE:SLOpe:AUX {RISe|FALL|EITHER}
            - TRIGger:B:EDGE:SLOpe:AUX?

        **Info:**
            - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
            - ``EITHER`` specifies to trigger on either the rising or falling edge of a signal.
              EITHER is only available on the DPO7000C and DPO/DSA/MSO70000C/D/DX Series
              instruments.
        """
        return self._aux

    @property
    def ch(self) -> Dict[int, TriggerBEdgeSlopeChannel]:
        """Return the ``TRIGger:B:EDGE:SLOpe:CH<x>`` command.

        **Description:**
            - This command sets or queries the slope for the edge trigger for the specified channel.
              This command is equivalent to selecting A Event or B Event Trigger Setup from the Trig
              menu and then choosing the desired Slope.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:EDGE:SLOpe:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE:SLOpe:CH<x>?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:EDGE:SLOpe:CH<x> value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:EDGE:SLOpe:CH<x> {RISe|FALL|EITher}
            - TRIGger:B:EDGE:SLOpe:CH<x>?

        **Info:**
            - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
            - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
            - ``EITher`` specifies to trigger on either the rising or falling edge of a signal.
              EITHER is only available on the DPO7000C and DPO/DSA/MSO70000C/D/DX Series
              instruments.
        """
        return self._ch


class TriggerBEdgeCouplingChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:EDGE:COUPling:CH<x>`` command.

    **Description:**
        - This command sets or queries the type of coupling for the A or B trigger for the specified
          channel. This command is equivalent to selecting A or B Trigger Setup from the Trig menu
          and choosing the setting from the Coupling drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:EDGE:COUPling:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE:COUPling:CH<x>?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:EDGE:COUPling:CH<x> value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:EDGE:COUPling:CH<x> {AC|DC|HFRej|LFRej|NOISErej}
        - TRIGger:B:EDGE:COUPling:CH<x>?

    **Info:**
        - ``AC`` selects AC trigger coupling.
        - ``DC`` selects DC trigger coupling.
        - ``HFRej`` selects high frequency low sensitivity.
        - ``LFRej`` selects low frequency low sensitivity.
        - ``NOISErej`` selects DC low sensitivity.
    """


class TriggerBEdgeCoupling(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:EDGE:COUPling`` command.

    **Description:**
        - This command sets or queries the type of coupling for the edge trigger. This command is
          equivalent to selecting Event Trigger Setup from the Trig menu, selecting Edge Trigger,
          and choosing from the Coupling drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:EDGE:COUPling?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE:COUPling?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:EDGE:COUPling value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:EDGE:COUPling {AC|DC|HFRej|LFRej|NOISErej|ATRIGger}
        - TRIGger:B:EDGE:COUPling?

    **Info:**
        - ``AC`` selects AC trigger coupling, which passes the input signals above 60 Hz to the
          trigger circuitry.
        - ``DC`` selects DC trigger coupling, which passes all input signals to the trigger
          circuitry.
        - ``HFRej`` coupling attenuates signals above 50 kHz before passing the signals to the
          trigger circuitry.
        - ``LFRej`` coupling attenuates signals below 80 kHz before passing the signals to the
          trigger circuitry.
        - ``NOISErej`` coupling provides stable triggering by increasing the trigger hysteresis.
          Increased hysteresis reduces the trigger sensitivity to noise but can require greater
          trigger signal amplitude.
        - ``ATRIGger`` this B trigger command sets the B trigger coupling to match the setting on
          the A trigger.

    Properties:
        - ``.ch``: The ``TRIGger:B:EDGE:COUPling:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerBEdgeCouplingChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerBEdgeCouplingChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerBEdgeCouplingChannel]:
        """Return the ``TRIGger:B:EDGE:COUPling:CH<x>`` command.

        **Description:**
            - This command sets or queries the type of coupling for the A or B trigger for the
              specified channel. This command is equivalent to selecting A or B Trigger Setup from
              the Trig menu and choosing the setting from the Coupling drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:EDGE:COUPling:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE:COUPling:CH<x>?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:B:EDGE:COUPling:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:EDGE:COUPling:CH<x> {AC|DC|HFRej|LFRej|NOISErej}
            - TRIGger:B:EDGE:COUPling:CH<x>?

        **Info:**
            - ``AC`` selects AC trigger coupling.
            - ``DC`` selects DC trigger coupling.
            - ``HFRej`` selects high frequency low sensitivity.
            - ``LFRej`` selects low frequency low sensitivity.
            - ``NOISErej`` selects DC low sensitivity.
        """
        return self._ch


class TriggerBEdge(SCPICmdRead):
    """The ``TRIGger:B:EDGE`` command.

    **Description:**
        - This query-only command returns the trigger source, coupling, and slope for the specified
          edge trigger. This command is equivalent to selecting Edge Setup from the Trig menu and
          viewing the current setups, or selecting B Event (Delayed) Trigger Setup from the Trig
          menu and viewing the current Source, Slope, and Coupling settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:EDGE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:B:EDGE?

    Properties:
        - ``.coupling``: The ``TRIGger:B:EDGE:COUPling`` command.
        - ``.slope``: The ``TRIGger:B:EDGE:SLOpe`` command.
        - ``.source``: The ``TRIGger:B:EDGE:SOUrce`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._coupling = TriggerBEdgeCoupling(device, f"{self._cmd_syntax}:COUPling")
        self._slope = TriggerBEdgeSlope(device, f"{self._cmd_syntax}:SLOpe")
        self._source = TriggerBEdgeSource(device, f"{self._cmd_syntax}:SOUrce")

    @property
    def coupling(self) -> TriggerBEdgeCoupling:
        """Return the ``TRIGger:B:EDGE:COUPling`` command.

        **Description:**
            - This command sets or queries the type of coupling for the edge trigger. This command
              is equivalent to selecting Event Trigger Setup from the Trig menu, selecting Edge
              Trigger, and choosing from the Coupling drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:EDGE:COUPling?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE:COUPling?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:EDGE:COUPling value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:EDGE:COUPling {AC|DC|HFRej|LFRej|NOISErej|ATRIGger}
            - TRIGger:B:EDGE:COUPling?

        **Info:**
            - ``AC`` selects AC trigger coupling, which passes the input signals above 60 Hz to the
              trigger circuitry.
            - ``DC`` selects DC trigger coupling, which passes all input signals to the trigger
              circuitry.
            - ``HFRej`` coupling attenuates signals above 50 kHz before passing the signals to the
              trigger circuitry.
            - ``LFRej`` coupling attenuates signals below 80 kHz before passing the signals to the
              trigger circuitry.
            - ``NOISErej`` coupling provides stable triggering by increasing the trigger hysteresis.
              Increased hysteresis reduces the trigger sensitivity to noise but can require greater
              trigger signal amplitude.
            - ``ATRIGger`` this B trigger command sets the B trigger coupling to match the setting
              on the A trigger.

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:EDGE:COUPling:CH<x>`` command.
        """
        return self._coupling

    @property
    def slope(self) -> TriggerBEdgeSlope:
        """Return the ``TRIGger:B:EDGE:SLOpe`` command.

        **Description:**
            - This command sets or queries the slope for the edge trigger. This command is
              equivalent to selecting Edge from the Trigger Type drop-down in the Trigger setup
              context menu, and then choosing the desired Slope. This command is also equivalent to
              pressing the front-panel Slope button.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:EDGE:SLOpe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE:SLOpe?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:EDGE:SLOpe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:EDGE:SLOpe {RISe|FALL|EITher}
            - TRIGger:B:EDGE:SLOpe?

        **Info:**
            - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
            - ``FALL`` specifies to trigger on the falling or negative edge of a signal.

        Sub-properties:
            - ``.aux``: The ``TRIGger:B:EDGE:SLOpe:AUX`` command.
            - ``.ch``: The ``TRIGger:B:EDGE:SLOpe:CH<x>`` command.
        """
        return self._slope

    @property
    def source(self) -> TriggerBEdgeSource:
        """Return the ``TRIGger:B:EDGE:SOUrce`` command.

        **Description:**
            - This command sets or queries the source for the edge trigger. This command is
              equivalent to selecting Event Trigger Setup from the Trig menu and then choosing from
              the Source drop-down list. When an UltraSync stack is in use, the mapped channels are
              used to both acquire waveform data and to trigger the oscilloscope. In the special
              case of an UltraSync stack master, additional channels are available for triggering.
              These are the unmapped channels. For an ATI UltraSync Sstack master, CH2, MCH1, and
              MCH3 can be used for triggering. For a 4-Channel UltraSync stack master, CH1, MCH2,
              MCH3, and MCH4 are available for triggering. The vertical min/max amplitude for these
              signals must be setup. See for more details.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:EDGE:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE:SOUrce?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:EDGE:SOUrce value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:EDGE:SOUrce {AUXiliary|CH<x>|MCH<x>|LINE|D<x>}
            - TRIGger:B:EDGE:SOUrce?

        **Info:**
            - ``AUXiliary`` specifies an external trigger using the Auxiliary Trigger Input. x can
              be 1, 2, 3, or 4.
            - ``CH<x>`` specifies one input channel as the edge trigger source.
            - ``MCH<x>`` specifies an unmapped channel on an UltraSync stack master. For more
              details see.
            - ``LINE`` specifies AC line voltage, and is for A Trigger only.
            - ``D<x>`` specifies a digital input as the edge trigger source. x can be 0 through 15.
        """
        return self._source


class TriggerBBy(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B:BY`` command.

    **Description:**
        - This command selects or returns one of three methods for sequencing an A-Event followed by
          a B-Event to trigger the oscilloscope. Equivalent methods can be found on the A →B
          Sequence Tab of the Trigger menu. In this context, the A-Event can be Edge, any Pulse, or
          any Logic Trigger type. The Pulse types are Glitch, Width, Runt, Timeout, Transition,
          Window, or Frequency/Period trigger types. Similarly, the B-Events can be Edge, any Pulse,
          or any Logic Trigger Type. Reset Events and Logic-Qualification can be used in combination
          with the first two ``TRIGger:B:BY`` methods. This gives several thousand ways to trigger
          the oscilloscope using hardware alone. When combined with Enhanced and Visual Trigger
          software, there are essentially an infinite number of ways to capture signals on the
          oscilloscope. The first method, EVENTS or Delay By Events, causes the oscilloscope to
          trigger when a specified number of B-Events occurs after the A-Event has occurred. That
          is, after the A-Event occurs, the oscilloscope waits until the nth B-Event to trigger the
          oscilloscope. You set the value for N. After the scope triggers on the nth B-Event, it
          goes back to waiting for another A-Event to occur. The second method, TIME or Delay By
          Time, causes the oscilloscope to trigger when a B-Event occurs at least a specified amount
          of time after the A-Event occurs. That is, the oscilloscope waits for the A-Event to
          occur, then waits the specified amount of time, and then waits for the B-Event to trigger
          the oscilloscope. You set the specified time. After the oscilloscope triggers on the
          B-Event, it goes back to waiting for another A-Event to occur. The third method, ARMAtrigB
          or Arm-On-A-Event, Trigger On-B-Event, is conceptually different, and has additional
          restrictions. Here, the oscilloscope waits for the A-Event to occur (once), before arming
          the oscilloscope to trigger on one or more B-Events. Once armed, the oscilloscope does not
          return to looking for an A-Event. Historically, the oscilloscope is armed by pressing the
          RUN or SINGLE SEQUENCE button (physical or on user interface). These methods of arming the
          oscilloscope are just fine in most situations. However, they are asynchronous and
          unrelated to the signals monitored by the trigger system. The ARMAtrigB method arms the
          oscilloscope for triggering based on real-time events occurring in the signals under test.
          That is, reception of an A-Event arms the oscilloscope for triggering on one or more
          B-Events. There is a minimum time required by the hardware between the A- and B-Events of
          about 10 ns. The key point is that the oscilloscope is armed by the A-Event occurring in
          the signals under test. The ARMAtrigB method does not allow the use of Logic Trigger Types
          (Pattern, State, or SetupHold) for either the A- or B-Events. It further does not allow
          Logic-Qualification or Reset Events. It also coerces the Trigger Mode to Normal (not
          Auto), and Holdoff by Time. These restrictions insure that the oscilloscope will not miss
          the first B-Event after the A-Event. You can use the ARM on A trig on B method on a stand
          alone oscilloscope, or on a TimeSync or UltraSync stack of oscilloscopes. It can be used
          in Single Step or Continuous Acquisitions. It can be used with FastFrame or Normal
          Acquisitions. When a stack of oscilloscopes is used, the acquired channels are mapped one
          channel from each oscilloscope in the stack. To make the most use of these acquired
          channels, the Master oscilloscope unmapped channels are available for triggering. The
          unmapped channels on the master oscilloscope are designated as MCh1, MCh2, MCh3, or MCh4
          in the user interface and the programmable interface. These channels are available for
          triggering when a stack of oscilloscopes is used. They are only on the Stack Master. On an
          ATI scope, Ch2, MCh1 and MCh3 are available for triggering. On a 4-channel oscilloscope,
          Ch1, MCh2, MCh3, and MCh4 are available for triggering. See for more details. The first
          application to make use of ARMAtrigB was a coherent optical recirculating loop test
          system. When a switch closes to inject the optical signal into the loop, a signal is sent
          to arm the oscilloscope (the A-Event). A timer is then started that emits a signal to
          trigger the oscilloscope (the B-Event). This arrangement allows the oscilloscope to
          capture the waveforms after the signal transist the recirculating loop one or many times
          in order to determine the quality of the optical signal after transiting many 100 km of
          fiber. Other applications can make similar use of this feature. For example, a pulse-width
          modulated motor can be monitored to arm the oscilloscope when the pulse width (or
          frequency) reaches a certain range.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:B:BY?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:B:BY?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:B:BY value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B:BY {EVENTS|TIMe|ARMAtrigb}
        - TRIGger:B:BY?

    **Info:**
        - ``EVENTS`` sets the B trigger to take place following a set number of trigger events after
          the A trigger occurs. The number of events is specified by ``TRIGger:B:EVENTS:COUNt``.
        - ``TIMe`` sets the B trigger to occur a set time after the A trigger event. The time period
          is specified by ``TRIGger:B:TIMe``.
        - ``ARMAtrigb`` arms the scope for triggering when the A-Event occurs (once) to trigger on
          one or more B-Events. See.
    """


#  pylint: disable=too-many-instance-attributes
class TriggerB(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:B`` command.

    **Description:**
        - This command sets the B trigger level to 50% of minimum and maximum. The query form of
          this command returns the B trigger parameters. This command is similar to selecting B
          Event (Delayed) Trigger Setup from the Trig menu and then viewing the current setups.

    **Usage:**
        - Using the ``.write(value)`` method will send the ``TRIGger:B value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:B SETLevel

    **Info:**
        - ``SETLevel`` sets the B trigger level to 50% of MIN and MAX.

    Properties:
        - ``.by``: The ``TRIGger:B:BY`` command.
        - ``.events``: The ``TRIGger:B:EVENTS`` command.
        - ``.pulse``: The ``TRIGger:B:PULse`` command tree.
        - ``.reset``: The ``TRIGger:B:RESET`` command tree.
        - ``.scan``: The ``TRIGger:B:SCAN`` command tree.
        - ``.state``: The ``TRIGger:B:STATE`` command.
        - ``.time``: The ``TRIGger:B:TIMe`` command.
        - ``.edge``: The ``TRIGger:B:EDGE`` command.
        - ``.level``: The ``TRIGger:B:LEVel`` command.
        - ``.logic``: The ``TRIGger:B:LOGIc`` command.
        - ``.lowerthreshold``: The ``TRIGger:B:LOWerthreshold`` command tree.
        - ``.ready``: The ``TRIGger:B:READY`` command.
        - ``.type``: The ``TRIGger:B:TYPe`` command.
        - ``.upperthreshold``: The ``TRIGger:B:UPPerthreshold`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._by = TriggerBBy(device, f"{self._cmd_syntax}:BY")
        self._events = TriggerBEvents(device, f"{self._cmd_syntax}:EVENTS")
        self._reset = TriggerBReset(device, f"{self._cmd_syntax}:RESET")
        self._scan = TriggerBScan(device, f"{self._cmd_syntax}:SCAN")
        self._state = TriggerBState(device, f"{self._cmd_syntax}:STATE")
        self._time = TriggerBTime(device, f"{self._cmd_syntax}:TIMe")
        self._edge = TriggerBEdge(device, f"{self._cmd_syntax}:EDGE")
        self._level = TriggerBLevel(device, f"{self._cmd_syntax}:LEVel")
        self._logic = TriggerBLogic(device, f"{self._cmd_syntax}:LOGIc")
        self._lowerthreshold = TriggerBLowerthreshold(device, f"{self._cmd_syntax}:LOWerthreshold")
        self._pulse = TriggerBPulse(device, f"{self._cmd_syntax}:PULse")
        self._ready = TriggerBReady(device, f"{self._cmd_syntax}:READY")
        self._type = TriggerBType(device, f"{self._cmd_syntax}:TYPe")
        self._upperthreshold = TriggerBUpperthreshold(device, f"{self._cmd_syntax}:UPPerthreshold")

    @property
    def by(self) -> TriggerBBy:
        """Return the ``TRIGger:B:BY`` command.

        **Description:**
            - This command selects or returns one of three methods for sequencing an A-Event
              followed by a B-Event to trigger the oscilloscope. Equivalent methods can be found on
              the A →B Sequence Tab of the Trigger menu. In this context, the A-Event can be Edge,
              any Pulse, or any Logic Trigger type. The Pulse types are Glitch, Width, Runt,
              Timeout, Transition, Window, or Frequency/Period trigger types. Similarly, the
              B-Events can be Edge, any Pulse, or any Logic Trigger Type. Reset Events and
              Logic-Qualification can be used in combination with the first two ``TRIGger:B:BY``
              methods. This gives several thousand ways to trigger the oscilloscope using hardware
              alone. When combined with Enhanced and Visual Trigger software, there are essentially
              an infinite number of ways to capture signals on the oscilloscope. The first method,
              EVENTS or Delay By Events, causes the oscilloscope to trigger when a specified number
              of B-Events occurs after the A-Event has occurred. That is, after the A-Event occurs,
              the oscilloscope waits until the nth B-Event to trigger the oscilloscope. You set the
              value for N. After the scope triggers on the nth B-Event, it goes back to waiting for
              another A-Event to occur. The second method, TIME or Delay By Time, causes the
              oscilloscope to trigger when a B-Event occurs at least a specified amount of time
              after the A-Event occurs. That is, the oscilloscope waits for the A-Event to occur,
              then waits the specified amount of time, and then waits for the B-Event to trigger the
              oscilloscope. You set the specified time. After the oscilloscope triggers on the
              B-Event, it goes back to waiting for another A-Event to occur. The third method,
              ARMAtrigB or Arm-On-A-Event, Trigger On-B-Event, is conceptually different, and has
              additional restrictions. Here, the oscilloscope waits for the A-Event to occur (once),
              before arming the oscilloscope to trigger on one or more B-Events. Once armed, the
              oscilloscope does not return to looking for an A-Event. Historically, the oscilloscope
              is armed by pressing the RUN or SINGLE SEQUENCE button (physical or on user
              interface). These methods of arming the oscilloscope are just fine in most situations.
              However, they are asynchronous and unrelated to the signals monitored by the trigger
              system. The ARMAtrigB method arms the oscilloscope for triggering based on real-time
              events occurring in the signals under test. That is, reception of an A-Event arms the
              oscilloscope for triggering on one or more B-Events. There is a minimum time required
              by the hardware between the A- and B-Events of about 10 ns. The key point is that the
              oscilloscope is armed by the A-Event occurring in the signals under test. The
              ARMAtrigB method does not allow the use of Logic Trigger Types (Pattern, State, or
              SetupHold) for either the A- or B-Events. It further does not allow
              Logic-Qualification or Reset Events. It also coerces the Trigger Mode to Normal (not
              Auto), and Holdoff by Time. These restrictions insure that the oscilloscope will not
              miss the first B-Event after the A-Event. You can use the ARM on A trig on B method on
              a stand alone oscilloscope, or on a TimeSync or UltraSync stack of oscilloscopes. It
              can be used in Single Step or Continuous Acquisitions. It can be used with FastFrame
              or Normal Acquisitions. When a stack of oscilloscopes is used, the acquired channels
              are mapped one channel from each oscilloscope in the stack. To make the most use of
              these acquired channels, the Master oscilloscope unmapped channels are available for
              triggering. The unmapped channels on the master oscilloscope are designated as MCh1,
              MCh2, MCh3, or MCh4 in the user interface and the programmable interface. These
              channels are available for triggering when a stack of oscilloscopes is used. They are
              only on the Stack Master. On an ATI scope, Ch2, MCh1 and MCh3 are available for
              triggering. On a 4-channel oscilloscope, Ch1, MCh2, MCh3, and MCh4 are available for
              triggering. See for more details. The first application to make use of ARMAtrigB was a
              coherent optical recirculating loop test system. When a switch closes to inject the
              optical signal into the loop, a signal is sent to arm the oscilloscope (the A-Event).
              A timer is then started that emits a signal to trigger the oscilloscope (the B-Event).
              This arrangement allows the oscilloscope to capture the waveforms after the signal
              transist the recirculating loop one or many times in order to determine the quality of
              the optical signal after transiting many 100 km of fiber. Other applications can make
              similar use of this feature. For example, a pulse-width modulated motor can be
              monitored to arm the oscilloscope when the pulse width (or frequency) reaches a
              certain range.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:BY?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:BY?`` query and raise an
              AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:BY value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:BY {EVENTS|TIMe|ARMAtrigb}
            - TRIGger:B:BY?

        **Info:**
            - ``EVENTS`` sets the B trigger to take place following a set number of trigger events
              after the A trigger occurs. The number of events is specified by
              ``TRIGger:B:EVENTS:COUNt``.
            - ``TIMe`` sets the B trigger to occur a set time after the A trigger event. The time
              period is specified by ``TRIGger:B:TIMe``.
            - ``ARMAtrigb`` arms the scope for triggering when the A-Event occurs (once) to trigger
              on one or more B-Events. See.
        """
        return self._by

    @property
    def events(self) -> TriggerBEvents:
        """Return the ``TRIGger:B:EVENTS`` command.

        **Description:**
            - Returns the current B trigger events parameter.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:EVENTS?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:EVENTS?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:EVENTS?

        Sub-properties:
            - ``.count``: The ``TRIGger:B:EVENTS:COUNt`` command.
        """
        return self._events

    @property
    def reset(self) -> TriggerBReset:
        """Return the ``TRIGger:B:RESET`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:RESET?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:RESET?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.acceptcount``: The ``TRIGger:B:RESET:ACCEPTCOUNT`` command.
            - ``.accepttimeout``: The ``TRIGger:B:RESET:ACCEPTTIMEout`` command.
            - ``.ratio``: The ``TRIGger:B:RESET:RATIO`` command.
            - ``.ratioenable``: The ``TRIGger:B:RESET:RATIOENable`` command.
            - ``.rejectcount``: The ``TRIGger:B:RESET:REJECTCOUNT`` command.
            - ``.rejecttimeout``: The ``TRIGger:B:RESET:REJECTTIMEout`` command.
            - ``.source``: The ``TRIGger:B:RESET:SOUrce`` command.
            - ``.state``: The ``TRIGger:B:RESET:STATE`` command.
            - ``.threshold``: The ``TRIGger:B:RESET:THReshold`` command.
            - ``.timeout``: The ``TRIGger:B:RESET:TIMEOut`` command.
            - ``.totalcount``: The ``TRIGger:B:RESET:TOTALCOUNT`` command.
            - ``.transition``: The ``TRIGger:B:RESET:TRANsition`` command.
            - ``.type``: The ``TRIGger:B:RESET:TYPe`` command.
        """
        return self._reset

    @property
    def scan(self) -> TriggerBScan:
        """Return the ``TRIGger:B:SCAN`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:SCAN?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:SCAN?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.advanceafter``: The ``TRIGger:B:SCAN:ADVANCEafter`` command.
            - ``.enable``: The ``TRIGger:B:SCAN:ENAble`` command.
            - ``.endevent``: The ``TRIGger:B:SCAN:ENDevent`` command.
            - ``.mode``: The ``TRIGger:B:SCAN:MODE`` command.
            - ``.startevent``: The ``TRIGger:B:SCAN:STARTevent`` command.
        """
        return self._scan

    @property
    def state(self) -> TriggerBState:
        """Return the ``TRIGger:B:STATE`` command.

        **Description:**
            - This command sets or queries the state of B trigger activity. If the B trigger state
              is on, the B trigger is part of the triggering sequence. If the B trigger state is
              off, then only the A trigger causes the trigger event.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:STATE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:STATE?`` query and raise
              an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:STATE value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:STATE {ON|OFF|<NR1>}
            - TRIGger:B:STATE?

        **Info:**
            - ``ON`` indicates that the B trigger is active and causes trigger events with the A
              trigger.
            - ``OFF`` indicates that only the A trigger causes trigger events.
            - ``<NR1>`` is an integer number. 0 turns off the B trigger; any other value activates
              the B trigger.
        """
        return self._state

    @property
    def time(self) -> TriggerBTime:
        """Return the ``TRIGger:B:TIMe`` command.

        **Description:**
            - This command sets or queries B trigger delay time, in seconds. The B Trigger time
              applies only if ``TRIGger:B:BY`` is set to TIMe.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:TIMe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:TIMe?`` query and raise
              an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:TIMe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:TIMe <NR3>
            - TRIGger:B:TIMe?

        **Info:**
            - ``<NR3>`` is the B trigger delay time in seconds.
        """
        return self._time

    @property
    def edge(self) -> TriggerBEdge:
        """Return the ``TRIGger:B:EDGE`` command.

        **Description:**
            - This query-only command returns the trigger source, coupling, and slope for the
              specified edge trigger. This command is equivalent to selecting Edge Setup from the
              Trig menu and viewing the current setups, or selecting B Event (Delayed) Trigger Setup
              from the Trig menu and viewing the current Source, Slope, and Coupling settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:EDGE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:EDGE?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:EDGE?

        Sub-properties:
            - ``.coupling``: The ``TRIGger:B:EDGE:COUPling`` command.
            - ``.slope``: The ``TRIGger:B:EDGE:SLOpe`` command.
            - ``.source``: The ``TRIGger:B:EDGE:SOUrce`` command.
        """
        return self._edge

    @property
    def level(self) -> TriggerBLevel:
        """Return the ``TRIGger:B:LEVel`` command.

        **Description:**
            - This command sets or queries the level for the trigger. This command is equivalent to
              selecting Holdoff from the Trig menu and then viewing or setting the trigger Level or
              selecting B Event (Delayed) Trigger Setup from the Trig menu and setting the B Trig
              Level voltage.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LEVel?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LEVel?`` query and raise
              an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:LEVel value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LEVel {ECL|TTL|<NR3>}
            - TRIGger:B:LEVel?

        **Info:**
            - ``ECL`` specifies the ECL high level.
            - ``TTL`` specifies the TTL high level.
            - ``<NR3>`` specifies the trigger level in user units (usually volts).

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:LEVel:CH<x>`` command.
        """
        return self._level

    @property
    def logic(self) -> TriggerBLogic:
        """Return the ``TRIGger:B:LOGIc`` command.

        **Description:**
            - This query-only command returns all of the logic trigger parameters.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOGIc?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOGIc?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:LOGIc?

        Sub-properties:
            - ``.class``: The ``TRIGger:B:LOGIc:CLAss`` command.
            - ``.function``: The ``TRIGger:B:LOGIc:FUNCtion`` command.
            - ``.input``: The ``TRIGger:B:LOGIc:INPut`` command.
            - ``.pattern``: The ``TRIGger:B:LOGIc:PATtern`` command.
            - ``.sethold``: The ``TRIGger:B:LOGIc:SETHold`` command.
            - ``.state``: The ``TRIGger:B:LOGIc:STATE`` command.
            - ``.threshold``: The ``TRIGger:B:LOGIc:THReshold`` command.
        """
        return self._logic

    @property
    def lowerthreshold(self) -> TriggerBLowerthreshold:
        """Return the ``TRIGger:B:LOWerthreshold`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:LOWerthreshold?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:LOWerthreshold?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:LOWerthreshold:CH<x>`` command.
        """
        return self._lowerthreshold

    @property
    def pulse(self) -> TriggerBPulse:
        """Return the ``TRIGger:B:PULse`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:PULse?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:PULse?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.period``: The ``TRIGger:B:PULse:PERiod`` command.
            - ``.window``: The ``TRIGger:B:PULse:WINdow`` command tree.
            - ``.class``: The ``TRIGger:B:PULse:CLAss`` command.
            - ``.glitch``: The ``TRIGger:B:PULse:GLItch`` command.
            - ``.runt``: The ``TRIGger:B:PULse:RUNT`` command.
            - ``.source``: The ``TRIGger:B:PULse:SOUrce`` command.
            - ``.timeout``: The ``TRIGger:B:PULse:TIMEOut`` command.
            - ``.transition``: The ``TRIGger:B:PULse:TRANsition`` command.
            - ``.width``: The ``TRIGger:B:PULse:WIDth`` command.
        """
        return self._pulse

    @property
    def ready(self) -> TriggerBReady:
        """Return the ``TRIGger:B:READY`` command.

        **Description:**
            - This command queries the trigger ready state and provides the immediate state from the
              trigger system. It is a more synchronous means of determining when the oscilloscope is
              ready to trigger. The ``TRIGGER:STATE`` reflects a less-frequently updated status of
              the trigger LEDs on the instrument front panel.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:READY?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:READY?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:B:READY?
        """
        return self._ready

    @property
    def type(self) -> TriggerBType:
        """Return the ``TRIGger:B:TYPe`` command.

        **Description:**
            - This command sets or queries the type of A or B trigger. Logic and Pulse triggers
              contain classes. Logic triggers consist of State and Pattern classes; Pulse triggers
              consist of Glitch, Runt, Width, Transition, Timeout, and Window classes. Once you have
              set the trigger type, you might also need to identify the associated trigger class.
              For details on selecting Logic and Pulse trigger classes, see and respectively. This
              command is similar to selecting Event Trigger Setup from the Trig menu and then
              selecting the desired Trigger Type. Some trigger types are not available on some
              instruments.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:TYPe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:TYPe?`` query and raise
              an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:B:TYPe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B:TYPe {EDGE|LOGIc|PULse|VIDeo| I2C|CAN|SPI|COMMunication|SERIAL|RS232}}
            - TRIGger:B:TYPe?

        **Info:**
            - ``EDGE`` is a normal trigger. A trigger event occurs when a signal passes through a
              specified voltage level in a specified direction and is controlled by the
              ``TRIGger:A:EDGE`` commands.
            - ``LOGIc`` specifies that a trigger occurs when specified conditions are met and is
              controlled by the ``TRIGger:A:LOGIc`` commands.
            - ``PULse`` specifies that a trigger occurs when a specified pulse is found and is
              controlled by the ``TRIGger:A:PULse`` commands.
            - ``VIDeo`` specifies that the trigger occurs when a video signal is found. Requires an
              instrument with video hardware.
            - ``I2C`` specifies that a trigger occurs when an Inter-IC Control signal is found.
            - ``CAN`` specifies that a trigger occurs when a Controller Area Network frame signal is
              found.
            - ``SPI`` specifies that a trigger occurs when a Serial Peripheral Interface signal is
              found.
            - ``COMMunication`` (Option MTM) specifies that a trigger occurs when a communications
              signal is found. Supports AMI, HDB3, B3ZS, B6ZS, B8ZS, CMI, MLT3, Manchester, and NRZ
              encoded communications signals. COMMunication is available only if Option MTM is
              installed.
            - ``SERIAL`` specifies that a trigger occurs when NRZ-encoded data is found, providing a
              32-bit serial word. This argument is available with instruments with Option PTM.
            - ``RS232`` takes a signal on a data source and allows you to trigger on data within the
              RS232 bitstream. The data is only one byte wide.
        """
        return self._type

    @property
    def upperthreshold(self) -> TriggerBUpperthreshold:
        """Return the ``TRIGger:B:UPPerthreshold`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:B:UPPerthreshold?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:B:UPPerthreshold?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.ch``: The ``TRIGger:B:UPPerthreshold:CH<x>`` command.
        """
        return self._upperthreshold


class TriggerAuxlevel(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:AUXLevel`` command.

    **Description:**
        - For those instruments that have an Auxiliary Input (such as an MSO58LP), this command sets
          or queries the Auxiliary Input voltage level to use for an edge trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:AUXLevel?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:AUXLevel?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:AUXLevel value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:AUXLevel {<NR3>|ECL|TTL}
        - TRIGger:AUXLevel?

    **Info:**
        - ``<NR3>`` is trigger level in Volts.
        - ``ECL`` sets trigger level to -1.3 Volts.
        - ``TTL`` sets trigger level to 1.4 Volts.
    """


class TriggerAVideoStandard(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:VIDeo:STANdard`` command.

    **Description:**
        - This command sets or queries the video standard.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:STANdard?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:STANdard?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:STANdard value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:VIDeo:STANdard {BILevelcustom|TRILevelcustom|NTSc|PAL| SECAM|HD480P60|HD576P50|HD875I60|HD720P30|HD720P50| HD720P60|HD1080I50|HD1080I60|HD1080P24| HD1080P25|HD1080P30|HD1080P50|HD1080P60| HD1080SF24}
        - TRIGger:A:VIDeo:STANdard?

    **Info:**
        - ``BILevelcustom`` argument sets the instrument to use custom video parameters that you set
          with the ``TRIGGER:A:VIDEO:CUSTOM:SYNCINTERVAL`` command.
        - ``TRILevelcustom`` argument sets the instrument to use custom video horizontal scan rate
          parameters that you set with the ``TRIGGER:A:VIDEO:CUSTOM:LINEPERIOD`` command.
        - ``NTSc`` argument sets the instrument to trigger on video signals that meet the NTSC
          525/60/``2:1`` standard (a line rate of 525 lines per frame and a field rate of 60 Hz).
        - ``PAL`` argument sets the instrument to trigger on video signals that meet the NTSC
          625/50/``2:1`` standard (a line rate of 625 lines per frame and a field rate of 50 Hz).
        - ``SECAM`` argument sets the instrument to trigger on video signals that meet the SECAM
          standard.
        - ``HD480P60`` argument sets the instrument to trigger on the HDTV 480/60 progressive
          format.
        - ``HD576P50`` argument sets the instrument to trigger on the HDTV 576/50 progressive
          format.
        - ``HD875I60`` argument sets the instrument to trigger on the HDTV 875/60 format.
        - ``HD720P30`` argument sets the instrument to trigger on the HDTV 720/30 progressive
          format.
        - ``HD720P50`` argument sets the instrument to trigger on the HDTV 720/50 progressive
          format.
        - ``HD720P60`` argument sets the instrument to trigger on the HDTV 720/60 progressive
          format.
        - ``HD1080I50`` argument sets the instrument to trigger on HDTV 1080/50 interlaced format.
        - ``HD1080I60`` argument sets the instrument to trigger on HDTV 1080/60 interlaced format.
        - ``HD1080P24`` argument sets the instrument to trigger on HDTV 1080/24 progressive format.
        - ``HD1080P25`` argument sets the instrument to trigger on HDTV 1080/25 progressive format.
        - ``HD1080P30`` argument sets the instrument to trigger on HDTV 1080/30 progressive format.
        - ``HD1080P50`` argument sets the instrument to trigger on HDTV 1080/50 progressive format.
        - ``HD1080P60`` argument sets the instrument to trigger on HDTV 1080/60 progressive format.
        - ``HD1080SF24`` argument sets the instrument to trigger on HDTV 1080/24 segmented frame
          format.
    """  # noqa: E501


class TriggerAVideoSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:VIDeo:SOUrce`` command.

    **Description:**
        - This command sets or queries the source for the A video trigger. This command is
          equivalent to selecting Video Setup from the Trig menu and selecting a channel from the
          Source drop-down menu.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:SOUrce?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:VIDeo:SOUrce CH<x>
        - TRIGger:A:VIDeo:SOUrce?

    **Info:**
        - ``CH<x>`` argument specifies one of the input channels of the instrument as the A video
          trigger. The value of x ranges from 1 through 4.
    """


class TriggerAVideoScan(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:VIDeo:SCAN`` command.

    **Description:**
        - This command sets or queries the video trigger horizontal line scan rate. This command is
          for compatibility with earlier instruments.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:SCAN?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:SCAN?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:SCAN value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:VIDeo:SCAN {RATE<x>}
        - TRIGger:A:VIDeo:SCAN?

    **Info:**
        - ``RATE1`` argument sets the range of the video line scan rate to 15 kHz through 20 kHz.
          This is the standard broadcast rate.
        - ``RATE2`` argument sets the range of the video line scan rate to 20 kHz through 25 kHz.
        - ``RATE3`` argument sets the range of the video line scan rate to 25 kHz through 35 kHz.
        - ``RATE4`` argument sets the range of the video line scan rate to 35 kHz through 50 kHz.
        - ``RATE5`` argument sets the range of the video line scan rate to 50 kHz through 65 kHz.
    """


class TriggerAVideoPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:VIDeo:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity of the A video trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:POLarity?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:POLarity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:VIDeo:POLarity {INVERTed|NORMal}
        - TRIGger:A:VIDeo:POLarity?

    **Info:**
        - ``INVERTed`` argument sets the instrument to trigger on a positive video sync pulse.
        - ``NORMal`` argument sets the instrument to trigger on a negative video sync pulse.
    """


class TriggerAVideoLine(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:VIDeo:LINE`` command.

    **Description:**
        - This command lets you set the specific video line number to be used for triggering on a
          video signal. You must also use the command to specify NUMERic as the video field to use.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:LINE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:LINE?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:LINE value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:VIDeo:LINE <NR1>
        - TRIGger:A:VIDeo:LINE?

    **Info:**
        - ``<NR1>`` argument is an integer that sets the video line number on which the oscilloscope
          triggers. The following table lists the valid choices, depending on the active video
          standard.
    """


class TriggerAVideoHoldoffField(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:VIDeo:HOLdoff:FIELD`` command.

    **Description:**
        - This command sets or queries the video trigger holdoff in terms of video fields.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:HOLdoff:FIELD?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:HOLdoff:FIELD?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:HOLdoff:FIELD value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:VIDeo:HOLdoff:FIELD <NR3>
        - TRIGger:A:VIDeo:HOLdoff:FIELD?

    **Info:**
        - ``<NR3>`` argument is a real number from 0.0 to 8.5 in increments of 0.5. The argument
          sets the number of fields that the instrument waits before rearming the video trigger.
    """


class TriggerAVideoHoldoff(SCPICmdRead):
    """The ``TRIGger:A:VIDeo:HOLdoff`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:HOLdoff?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:HOLdoff?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.field``: The ``TRIGger:A:VIDeo:HOLdoff:FIELD`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._field = TriggerAVideoHoldoffField(device, f"{self._cmd_syntax}:FIELD")

    @property
    def field(self) -> TriggerAVideoHoldoffField:
        """Return the ``TRIGger:A:VIDeo:HOLdoff:FIELD`` command.

        **Description:**
            - This command sets or queries the video trigger holdoff in terms of video fields.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:HOLdoff:FIELD?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:HOLdoff:FIELD?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:VIDeo:HOLdoff:FIELD value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:VIDeo:HOLdoff:FIELD <NR3>
            - TRIGger:A:VIDeo:HOLdoff:FIELD?

        **Info:**
            - ``<NR3>`` argument is a real number from 0.0 to 8.5 in increments of 0.5. The argument
              sets the number of fields that the instrument waits before rearming the video trigger.
        """
        return self._field


class TriggerAVideoField(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:VIDeo:FIELD`` command.

    **Description:**
        - This command sets or queries the video field or line that the trigger detects.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:FIELD?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:FIELD?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:FIELD value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:VIDeo:FIELD {ODD|EVEN|FIELD<x>|ALLFields|ALLLines|NUMERic}
        - TRIGger:A:VIDeo:FIELD?

    **Info:**
        - ``ODD`` argument sets the instrument to trigger on interlaced video odd fields.
        - ``EVEN`` argument sets the instrument to trigger on interlaced video even fields.
        - ``FIELD1`` argument sets the instrument to trigger on interlaced video odd fields (same as
          ODD).
        - ``FIELD2`` argument sets the instrument to trigger on interlaced video even fields (same
          as EVEN).
        - ``ALLFields`` argument sets the instrument to trigger on all fields.
        - ``ALLLines`` argument sets the instrument to trigger on all video lines.
        - ``NUMERic`` argument sets the instrument to trigger on the video signal line specified by
          the ``TRIGger:A:VIDeo:LINE`` command.
    """


class TriggerAVideoCustomSyncinterval(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:VIDeo:CUSTom:SYNCInterval`` command.

    **Description:**
        - This command sets the sync interval for the standard under test to use for triggering on
          video signals. This is only required for BiLevel Custom. To use this command, you must
          also set the video standard to BILevelcustom (using ``TRIGGER:A:VIDEO:STANDARD``).

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:CUSTom:SYNCInterval?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:CUSTom:SYNCInterval?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:VIDeo:CUSTom:SYNCInterval value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:VIDeo:CUSTom:SYNCInterval <NR3>
        - TRIGger:A:VIDeo:CUSTom:SYNCInterval?

    **Info:**
        - ``<NR3>`` is the sync interval.
    """


class TriggerAVideoCustomLineperiod(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:VIDeo:CUSTom:LINEPeriod`` command.

    **Description:**
        - This command sets the line period for the standard under test. To use this command, you
          must also set the video standard to BILevelcustom or TRILevelcustom (using
          ``TRIGGER:A:VIDEO:STANDARD``).

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:CUSTom:LINEPeriod?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:CUSTom:LINEPeriod?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:VIDeo:CUSTom:LINEPeriod value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:VIDeo:CUSTom:LINEPeriod <NR3>
        - TRIGger:A:VIDeo:CUSTom:LINEPeriod?

    **Info:**
        - ``<NR3>`` is the custom video line period.
    """


class TriggerAVideoCustomFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:VIDeo:CUSTom:FORMat`` command.

    **Description:**
        - This command sets or queries the video trigger format. Use this command only when the
          video format is set to custom.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:CUSTom:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:CUSTom:FORMat?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:CUSTom:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:VIDeo:CUSTom:FORMat {INTERLAced|PROGressive}
        - TRIGger:A:VIDeo:CUSTom:FORMat?

    **Info:**
        - ``INTERLAced`` argument sets the format for interlaced video lines.
        - ``PROGressive`` argument sets the format for progressive video lines.
    """


class TriggerAVideoCustom(SCPICmdRead):
    """The ``TRIGger:A:VIDeo:CUSTom`` command.

    **Description:**
        - This query-only command returns the A trigger custom video parameters.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:CUSTom?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:CUSTom?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:VIDeo:CUSTom?

    Properties:
        - ``.format``: The ``TRIGger:A:VIDeo:CUSTom:FORMat`` command.
        - ``.lineperiod``: The ``TRIGger:A:VIDeo:CUSTom:LINEPeriod`` command.
        - ``.syncinterval``: The ``TRIGger:A:VIDeo:CUSTom:SYNCInterval`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerAVideoCustomFormat(device, f"{self._cmd_syntax}:FORMat")
        self._lineperiod = TriggerAVideoCustomLineperiod(device, f"{self._cmd_syntax}:LINEPeriod")
        self._syncinterval = TriggerAVideoCustomSyncinterval(
            device, f"{self._cmd_syntax}:SYNCInterval"
        )

    @property
    def format(self) -> TriggerAVideoCustomFormat:
        """Return the ``TRIGger:A:VIDeo:CUSTom:FORMat`` command.

        **Description:**
            - This command sets or queries the video trigger format. Use this command only when the
              video format is set to custom.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:CUSTom:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:CUSTom:FORMat?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:VIDeo:CUSTom:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:VIDeo:CUSTom:FORMat {INTERLAced|PROGressive}
            - TRIGger:A:VIDeo:CUSTom:FORMat?

        **Info:**
            - ``INTERLAced`` argument sets the format for interlaced video lines.
            - ``PROGressive`` argument sets the format for progressive video lines.
        """
        return self._format

    @property
    def lineperiod(self) -> TriggerAVideoCustomLineperiod:
        """Return the ``TRIGger:A:VIDeo:CUSTom:LINEPeriod`` command.

        **Description:**
            - This command sets the line period for the standard under test. To use this command,
              you must also set the video standard to BILevelcustom or TRILevelcustom (using
              ``TRIGGER:A:VIDEO:STANDARD``).

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:CUSTom:LINEPeriod?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:VIDeo:CUSTom:LINEPeriod?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:VIDeo:CUSTom:LINEPeriod value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:VIDeo:CUSTom:LINEPeriod <NR3>
            - TRIGger:A:VIDeo:CUSTom:LINEPeriod?

        **Info:**
            - ``<NR3>`` is the custom video line period.
        """
        return self._lineperiod

    @property
    def syncinterval(self) -> TriggerAVideoCustomSyncinterval:
        """Return the ``TRIGger:A:VIDeo:CUSTom:SYNCInterval`` command.

        **Description:**
            - This command sets the sync interval for the standard under test to use for triggering
              on video signals. This is only required for BiLevel Custom. To use this command, you
              must also set the video standard to BILevelcustom (using
              ``TRIGGER:A:VIDEO:STANDARD``).

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:CUSTom:SYNCInterval?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:VIDeo:CUSTom:SYNCInterval?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:VIDeo:CUSTom:SYNCInterval value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:VIDeo:CUSTom:SYNCInterval <NR3>
            - TRIGger:A:VIDeo:CUSTom:SYNCInterval?

        **Info:**
            - ``<NR3>`` is the sync interval.
        """
        return self._syncinterval


#  pylint: disable=too-many-instance-attributes
class TriggerAVideo(SCPICmdRead):
    """The ``TRIGger:A:VIDeo`` command.

    **Description:**
        - Returns the A trigger video parameters.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:VIDeo?

    Properties:
        - ``.custom``: The ``TRIGger:A:VIDeo:CUSTom`` command.
        - ``.field``: The ``TRIGger:A:VIDeo:FIELD`` command.
        - ``.holdoff``: The ``TRIGger:A:VIDeo:HOLdoff`` command tree.
        - ``.line``: The ``TRIGger:A:VIDeo:LINE`` command.
        - ``.polarity``: The ``TRIGger:A:VIDeo:POLarity`` command.
        - ``.scan``: The ``TRIGger:A:VIDeo:SCAN`` command.
        - ``.source``: The ``TRIGger:A:VIDeo:SOUrce`` command.
        - ``.standard``: The ``TRIGger:A:VIDeo:STANdard`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._custom = TriggerAVideoCustom(device, f"{self._cmd_syntax}:CUSTom")
        self._field = TriggerAVideoField(device, f"{self._cmd_syntax}:FIELD")
        self._holdoff = TriggerAVideoHoldoff(device, f"{self._cmd_syntax}:HOLdoff")
        self._line = TriggerAVideoLine(device, f"{self._cmd_syntax}:LINE")
        self._polarity = TriggerAVideoPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._scan = TriggerAVideoScan(device, f"{self._cmd_syntax}:SCAN")
        self._source = TriggerAVideoSource(device, f"{self._cmd_syntax}:SOUrce")
        self._standard = TriggerAVideoStandard(device, f"{self._cmd_syntax}:STANdard")

    @property
    def custom(self) -> TriggerAVideoCustom:
        """Return the ``TRIGger:A:VIDeo:CUSTom`` command.

        **Description:**
            - This query-only command returns the A trigger custom video parameters.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:CUSTom?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:CUSTom?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:VIDeo:CUSTom?

        Sub-properties:
            - ``.format``: The ``TRIGger:A:VIDeo:CUSTom:FORMat`` command.
            - ``.lineperiod``: The ``TRIGger:A:VIDeo:CUSTom:LINEPeriod`` command.
            - ``.syncinterval``: The ``TRIGger:A:VIDeo:CUSTom:SYNCInterval`` command.
        """
        return self._custom

    @property
    def field(self) -> TriggerAVideoField:
        """Return the ``TRIGger:A:VIDeo:FIELD`` command.

        **Description:**
            - This command sets or queries the video field or line that the trigger detects.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:FIELD?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:FIELD?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:FIELD value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:VIDeo:FIELD {ODD|EVEN|FIELD<x>|ALLFields|ALLLines|NUMERic}
            - TRIGger:A:VIDeo:FIELD?

        **Info:**
            - ``ODD`` argument sets the instrument to trigger on interlaced video odd fields.
            - ``EVEN`` argument sets the instrument to trigger on interlaced video even fields.
            - ``FIELD1`` argument sets the instrument to trigger on interlaced video odd fields
              (same as ODD).
            - ``FIELD2`` argument sets the instrument to trigger on interlaced video even fields
              (same as EVEN).
            - ``ALLFields`` argument sets the instrument to trigger on all fields.
            - ``ALLLines`` argument sets the instrument to trigger on all video lines.
            - ``NUMERic`` argument sets the instrument to trigger on the video signal line specified
              by the ``TRIGger:A:VIDeo:LINE`` command.
        """
        return self._field

    @property
    def holdoff(self) -> TriggerAVideoHoldoff:
        """Return the ``TRIGger:A:VIDeo:HOLdoff`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:HOLdoff?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:HOLdoff?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.field``: The ``TRIGger:A:VIDeo:HOLdoff:FIELD`` command.
        """
        return self._holdoff

    @property
    def line(self) -> TriggerAVideoLine:
        """Return the ``TRIGger:A:VIDeo:LINE`` command.

        **Description:**
            - This command lets you set the specific video line number to be used for triggering on
              a video signal. You must also use the command to specify NUMERic as the video field to
              use.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:LINE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:LINE?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:LINE value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:VIDeo:LINE <NR1>
            - TRIGger:A:VIDeo:LINE?

        **Info:**
            - ``<NR1>`` argument is an integer that sets the video line number on which the
              oscilloscope triggers. The following table lists the valid choices, depending on the
              active video standard.
        """
        return self._line

    @property
    def polarity(self) -> TriggerAVideoPolarity:
        """Return the ``TRIGger:A:VIDeo:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity of the A video trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:POLarity?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:POLarity?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:POLarity value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:VIDeo:POLarity {INVERTed|NORMal}
            - TRIGger:A:VIDeo:POLarity?

        **Info:**
            - ``INVERTed`` argument sets the instrument to trigger on a positive video sync pulse.
            - ``NORMal`` argument sets the instrument to trigger on a negative video sync pulse.
        """
        return self._polarity

    @property
    def scan(self) -> TriggerAVideoScan:
        """Return the ``TRIGger:A:VIDeo:SCAN`` command.

        **Description:**
            - This command sets or queries the video trigger horizontal line scan rate. This command
              is for compatibility with earlier instruments.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:SCAN?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:SCAN?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:SCAN value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:VIDeo:SCAN {RATE<x>}
            - TRIGger:A:VIDeo:SCAN?

        **Info:**
            - ``RATE1`` argument sets the range of the video line scan rate to 15 kHz through 20
              kHz. This is the standard broadcast rate.
            - ``RATE2`` argument sets the range of the video line scan rate to 20 kHz through 25
              kHz.
            - ``RATE3`` argument sets the range of the video line scan rate to 25 kHz through 35
              kHz.
            - ``RATE4`` argument sets the range of the video line scan rate to 35 kHz through 50
              kHz.
            - ``RATE5`` argument sets the range of the video line scan rate to 50 kHz through 65
              kHz.
        """
        return self._scan

    @property
    def source(self) -> TriggerAVideoSource:
        """Return the ``TRIGger:A:VIDeo:SOUrce`` command.

        **Description:**
            - This command sets or queries the source for the A video trigger. This command is
              equivalent to selecting Video Setup from the Trig menu and selecting a channel from
              the Source drop-down menu.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:SOUrce?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:SOUrce value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:VIDeo:SOUrce CH<x>
            - TRIGger:A:VIDeo:SOUrce?

        **Info:**
            - ``CH<x>`` argument specifies one of the input channels of the instrument as the A
              video trigger. The value of x ranges from 1 through 4.
        """
        return self._source

    @property
    def standard(self) -> TriggerAVideoStandard:
        """Return the ``TRIGger:A:VIDeo:STANdard`` command.

        **Description:**
            - This command sets or queries the video standard.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo:STANdard?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo:STANdard?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:VIDeo:STANdard value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:VIDeo:STANdard {BILevelcustom|TRILevelcustom|NTSc|PAL| SECAM|HD480P60|HD576P50|HD875I60|HD720P30|HD720P50| HD720P60|HD1080I50|HD1080I60|HD1080P24| HD1080P25|HD1080P30|HD1080P50|HD1080P60| HD1080SF24}
            - TRIGger:A:VIDeo:STANdard?

        **Info:**
            - ``BILevelcustom`` argument sets the instrument to use custom video parameters that you
              set with the ``TRIGGER:A:VIDEO:CUSTOM:SYNCINTERVAL`` command.
            - ``TRILevelcustom`` argument sets the instrument to use custom video horizontal scan
              rate parameters that you set with the ``TRIGGER:A:VIDEO:CUSTOM:LINEPERIOD`` command.
            - ``NTSc`` argument sets the instrument to trigger on video signals that meet the NTSC
              525/60/``2:1`` standard (a line rate of 525 lines per frame and a field rate of 60
              Hz).
            - ``PAL`` argument sets the instrument to trigger on video signals that meet the NTSC
              625/50/``2:1`` standard (a line rate of 625 lines per frame and a field rate of 50
              Hz).
            - ``SECAM`` argument sets the instrument to trigger on video signals that meet the SECAM
              standard.
            - ``HD480P60`` argument sets the instrument to trigger on the HDTV 480/60 progressive
              format.
            - ``HD576P50`` argument sets the instrument to trigger on the HDTV 576/50 progressive
              format.
            - ``HD875I60`` argument sets the instrument to trigger on the HDTV 875/60 format.
            - ``HD720P30`` argument sets the instrument to trigger on the HDTV 720/30 progressive
              format.
            - ``HD720P50`` argument sets the instrument to trigger on the HDTV 720/50 progressive
              format.
            - ``HD720P60`` argument sets the instrument to trigger on the HDTV 720/60 progressive
              format.
            - ``HD1080I50`` argument sets the instrument to trigger on HDTV 1080/50 interlaced
              format.
            - ``HD1080I60`` argument sets the instrument to trigger on HDTV 1080/60 interlaced
              format.
            - ``HD1080P24`` argument sets the instrument to trigger on HDTV 1080/24 progressive
              format.
            - ``HD1080P25`` argument sets the instrument to trigger on HDTV 1080/25 progressive
              format.
            - ``HD1080P30`` argument sets the instrument to trigger on HDTV 1080/30 progressive
              format.
            - ``HD1080P50`` argument sets the instrument to trigger on HDTV 1080/50 progressive
              format.
            - ``HD1080P60`` argument sets the instrument to trigger on HDTV 1080/60 progressive
              format.
            - ``HD1080SF24`` argument sets the instrument to trigger on HDTV 1080/24 segmented frame
              format.
        """  # noqa: E501
        return self._standard


class TriggerAUpperthresholdChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:UPPerthreshold:CH<x>`` command.

    **Description:**
        - This command sets or queries the CH<x> upper trigger level for
          ``TRIGger:LVLSrcpreference SRCDependent``. The CH<x> range is 1 to 4.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:UPPerthreshold:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:UPPerthreshold:CH<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:UPPerthreshold:CH<x> value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:UPPerthreshold:CH<x> {ECL|TTL|<NR3>}
        - TRIGger:A:UPPerthreshold:CH<x>?

    **Info:**
        - ``ECL`` specifies the ECL high level.
        - ``TTL`` specifies the TTL high level.
        - ``<NR3>`` specifies the trigger level in user units (usually volts).
    """


class TriggerAUpperthreshold(SCPICmdRead):
    """The ``TRIGger:A:UPPerthreshold`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:UPPerthreshold?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:UPPerthreshold?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.ch``: The ``TRIGger:A:UPPerthreshold:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerAUpperthresholdChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerAUpperthresholdChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerAUpperthresholdChannel]:
        """Return the ``TRIGger:A:UPPerthreshold:CH<x>`` command.

        **Description:**
            - This command sets or queries the CH<x> upper trigger level for
              ``TRIGger:LVLSrcpreference SRCDependent``. The CH<x> range is 1 to 4.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:UPPerthreshold:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:UPPerthreshold:CH<x>?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:UPPerthreshold:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:UPPerthreshold:CH<x> {ECL|TTL|<NR3>}
            - TRIGger:A:UPPerthreshold:CH<x>?

        **Info:**
            - ``ECL`` specifies the ECL high level.
            - ``TTL`` specifies the TTL high level.
            - ``<NR3>`` specifies the trigger level in user units (usually volts).
        """
        return self._ch


class TriggerAType(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:TYPe`` command.

    **Description:**
        - This command sets or queries the type of A or B trigger. Logic and Pulse triggers contain
          classes. Logic triggers consist of State and Pattern classes; Pulse triggers consist of
          Glitch, Runt, Width, Transition, Timeout, and Window classes. Once you have set the
          trigger type, you might also need to identify the associated trigger class. For details on
          selecting Logic and Pulse trigger classes, see and respectively. This command is similar
          to selecting Event Trigger Setup from the Trig menu and then selecting the desired Trigger
          Type. Some trigger types are not available on some instruments.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:TYPe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:TYPe?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:TYPe value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:TYPe {EDGE|LOGIc|PULse|VIDeo| I2C|CAN|SPI|COMMunication|SERIAL|RS232}}
        - TRIGger:A:TYPe?

    **Info:**
        - ``EDGE`` is a normal trigger. A trigger event occurs when a signal passes through a
          specified voltage level in a specified direction and is controlled by the
          ``TRIGger:A:EDGE`` commands.
        - ``LOGIc`` specifies that a trigger occurs when specified conditions are met and is
          controlled by the ``TRIGger:A:LOGIc`` commands.
        - ``PULse`` specifies that a trigger occurs when a specified pulse is found and is
          controlled by the ``TRIGger:A:PULse`` commands.
        - ``VIDeo`` specifies that the trigger occurs when a video signal is found. Requires an
          instrument with video hardware.
        - ``I2C`` specifies that a trigger occurs when an Inter-IC Control signal is found.
        - ``CAN`` specifies that a trigger occurs when a Controller Area Network frame signal is
          found.
        - ``SPI`` specifies that a trigger occurs when a Serial Peripheral Interface signal is
          found.
        - ``COMMunication`` (Option MTM) specifies that a trigger occurs when a communications
          signal is found. Supports AMI, HDB3, B3ZS, B6ZS, B8ZS, CMI, MLT3, Manchester, and NRZ
          encoded communications signals. COMMunication is available only if Option MTM is
          installed.
        - ``SERIAL`` specifies that a trigger occurs when NRZ-encoded data is found, providing a
          32-bit serial word. This argument is available with instruments with Option PTM.
        - ``RS232`` takes a signal on a data source and allows you to trigger on data within the
          RS232 bitstream. The data is only one byte wide.
    """


class TriggerASpiSsSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:SS:SOUrce`` command.

    **Description:**
        - This command sets or queries the SPI trigger Slave Select (SS) source.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SS:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SS:SOUrce?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:SS:SOUrce value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:SS:SOUrce CH<x>
        - TRIGger:A:SPI:SS:SOUrce?

    **Info:**
        - ``CH<x>`` specifies the source for the SPI SS signal. x can be 1, 2, 3, or 4.
    """


class TriggerASpiSsLevel(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:SS:LEVel`` command.

    **Description:**
        - This command sets or queries the threshold for the SPI trigger Slave Select (SS) signal.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SS:LEVel?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SS:LEVel?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:SS:LEVel value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:SS:LEVel <NR3>
        - TRIGger:A:SPI:SS:LEVel?

    **Info:**
        - ``<NR3>`` specifies the threshold for the SPI trigger SS line. The threshold range is
          ±5.0.
    """


class TriggerASpiSsActive(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:SS:ACTIVE`` command.

    **Description:**
        - This command sets or queries the SPI trigger Slave Select (SS) polarity.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SS:ACTIVE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SS:ACTIVE?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:SS:ACTIVE value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:SS:ACTIVE {HIGH|LOW}
        - TRIGger:A:SPI:SS:ACTIVE?

    **Info:**
        - ``HIGH`` specifies HIGH for SS polarity.
        - ``LOW`` specifies LOW for SS polarity.
    """


class TriggerASpiSs(SCPICmdRead):
    """The ``TRIGger:A:SPI:SS`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SS?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SS?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.active``: The ``TRIGger:A:SPI:SS:ACTIVE`` command.
        - ``.level``: The ``TRIGger:A:SPI:SS:LEVel`` command.
        - ``.source``: The ``TRIGger:A:SPI:SS:SOUrce`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._active = TriggerASpiSsActive(device, f"{self._cmd_syntax}:ACTIVE")
        self._level = TriggerASpiSsLevel(device, f"{self._cmd_syntax}:LEVel")
        self._source = TriggerASpiSsSource(device, f"{self._cmd_syntax}:SOUrce")

    @property
    def active(self) -> TriggerASpiSsActive:
        """Return the ``TRIGger:A:SPI:SS:ACTIVE`` command.

        **Description:**
            - This command sets or queries the SPI trigger Slave Select (SS) polarity.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SS:ACTIVE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SS:ACTIVE?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:SS:ACTIVE value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:SS:ACTIVE {HIGH|LOW}
            - TRIGger:A:SPI:SS:ACTIVE?

        **Info:**
            - ``HIGH`` specifies HIGH for SS polarity.
            - ``LOW`` specifies LOW for SS polarity.
        """
        return self._active

    @property
    def level(self) -> TriggerASpiSsLevel:
        """Return the ``TRIGger:A:SPI:SS:LEVel`` command.

        **Description:**
            - This command sets or queries the threshold for the SPI trigger Slave Select (SS)
              signal.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SS:LEVel?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SS:LEVel?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:SS:LEVel value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:SS:LEVel <NR3>
            - TRIGger:A:SPI:SS:LEVel?

        **Info:**
            - ``<NR3>`` specifies the threshold for the SPI trigger SS line. The threshold range is
              ±5.0.
        """
        return self._level

    @property
    def source(self) -> TriggerASpiSsSource:
        """Return the ``TRIGger:A:SPI:SS:SOUrce`` command.

        **Description:**
            - This command sets or queries the SPI trigger Slave Select (SS) source.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SS:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SS:SOUrce?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:SS:SOUrce value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:SS:SOUrce CH<x>
            - TRIGger:A:SPI:SS:SOUrce?

        **Info:**
            - ``CH<x>`` specifies the source for the SPI SS signal. x can be 1, 2, 3, or 4.
        """
        return self._source


class TriggerASpiSclkSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:SCLK:SOUrce`` command.

    **Description:**
        - This command sets or queries the SPI SCLK source.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SCLK:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SCLK:SOUrce?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:SCLK:SOUrce value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:SCLK:SOUrce CH<x>
        - TRIGger:A:SPI:SCLK:SOUrce?

    **Info:**
        - ``CH<x>`` specifies the SPI SCLK source. x can be 1, 2, 3, or 4.
    """


class TriggerASpiSclkLevel(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:SCLK:LEVel`` command.

    **Description:**
        - This command sets or queries the threshold for the SPI trigger SCLK.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SCLK:LEVel?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SCLK:LEVel?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:SCLK:LEVel value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:SCLK:LEVel <NR3>
        - TRIGger:A:SPI:SCLK:LEVel?

    **Info:**
        - ``<NR3>`` specifies the SPI trigger SCLK threshold.
    """


class TriggerASpiSclkActive(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:SCLK:ACTIVE`` command.

    **Description:**
        - This command sets or queries the SPI SCLK polarity.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SCLK:ACTIVE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SCLK:ACTIVE?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:SCLK:ACTIVE value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:SCLK:ACTIVE {RISe|FALL}
        - TRIGger:A:SPI:SCLK:ACTIVE?

    **Info:**
        - ``RISe`` specifies rising clock polarity.
        - ``FALL`` specifies falling clock polarity.
    """


class TriggerASpiSclk(SCPICmdRead):
    """The ``TRIGger:A:SPI:SCLK`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SCLK?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SCLK?`` query and raise
          an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.active``: The ``TRIGger:A:SPI:SCLK:ACTIVE`` command.
        - ``.level``: The ``TRIGger:A:SPI:SCLK:LEVel`` command.
        - ``.source``: The ``TRIGger:A:SPI:SCLK:SOUrce`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._active = TriggerASpiSclkActive(device, f"{self._cmd_syntax}:ACTIVE")
        self._level = TriggerASpiSclkLevel(device, f"{self._cmd_syntax}:LEVel")
        self._source = TriggerASpiSclkSource(device, f"{self._cmd_syntax}:SOUrce")

    @property
    def active(self) -> TriggerASpiSclkActive:
        """Return the ``TRIGger:A:SPI:SCLK:ACTIVE`` command.

        **Description:**
            - This command sets or queries the SPI SCLK polarity.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SCLK:ACTIVE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SCLK:ACTIVE?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:SCLK:ACTIVE value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:SCLK:ACTIVE {RISe|FALL}
            - TRIGger:A:SPI:SCLK:ACTIVE?

        **Info:**
            - ``RISe`` specifies rising clock polarity.
            - ``FALL`` specifies falling clock polarity.
        """
        return self._active

    @property
    def level(self) -> TriggerASpiSclkLevel:
        """Return the ``TRIGger:A:SPI:SCLK:LEVel`` command.

        **Description:**
            - This command sets or queries the threshold for the SPI trigger SCLK.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SCLK:LEVel?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SCLK:LEVel?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:SCLK:LEVel value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:SCLK:LEVel <NR3>
            - TRIGger:A:SPI:SCLK:LEVel?

        **Info:**
            - ``<NR3>`` specifies the SPI trigger SCLK threshold.
        """
        return self._level

    @property
    def source(self) -> TriggerASpiSclkSource:
        """Return the ``TRIGger:A:SPI:SCLK:SOUrce`` command.

        **Description:**
            - This command sets or queries the SPI SCLK source.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SCLK:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SCLK:SOUrce?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:SCLK:SOUrce value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:SCLK:SOUrce CH<x>
            - TRIGger:A:SPI:SCLK:SOUrce?

        **Info:**
            - ``CH<x>`` specifies the SPI SCLK source. x can be 1, 2, 3, or 4.
        """
        return self._source


class TriggerASpiFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:FORMat`` command.

    **Description:**
        - This command sets or queries the SPI trigger data format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:FORMat?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:FORMat {BINary|HEX}
        - TRIGger:A:SPI:FORMat?

    **Info:**
        - ``BINary`` specifies a binary data format.
        - ``HEX`` specifies a hexadecimal data format.
    """


class TriggerASpiDataStart(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:DATa:STARt`` command.

    **Description:**
        - This command sets or queries the nth data byte on the data source after the signal on the
          enable slave source switches to the polarity specified by the Slave Select Polarity. The
          instrument triggers if the pattern Matches beginning at this point.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:STARt?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:STARt?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:DATa:STARt value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:DATa:STARt <NR3>
        - TRIGger:A:SPI:DATa:STARt?

    **Info:**
        - ``<NR3>`` specifies the SPI start byte data. The data can range from 0 to 216-1.
    """


class TriggerASpiDataMosiValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:DATa:MOSI:VALue`` command.

    **Description:**
        - This command sets or queries the binary data string used for the SPI trigger if the
          trigger condition is set to MOSI or MISOMOSI.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MOSI:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI:VALue?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:DATa:MOSI:VALue <QString>
        - TRIGger:A:SPI:DATa:MOSI:VALue?

    **Info:**
        - ``<QString>`` specifies the binary data string for the SPI data. You can specify up to 32
          bits.
    """

    _WRAP_ARG_WITH_QUOTES = True


class TriggerASpiDataMosiSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:DATa:MOSI:SOUrce`` command.

    **Description:**
        - This command sets or queries the MOSI data source for the SPI trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MOSI:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI:SOUrce?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI:SOUrce value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:DATa:MOSI:SOUrce CH<x>
        - TRIGger:A:SPI:DATa:MOSI:SOUrce?

    **Info:**
        - ``CH<x>`` specifies the source for the SPI trigger MOSI data source. x can be 1, 2, 3, or
          4.
    """


class TriggerASpiDataMosiLevel(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:DATa:MOSI:LEVel`` command.

    **Description:**
        - This command sets or queries the threshold for the SPI MOSI data source.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MOSI:LEVel?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI:LEVel?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI:LEVel value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:DATa:MOSI:LEVel <NR3>
        - TRIGger:A:SPI:DATa:MOSI:LEVel?

    **Info:**
        - ``<NR3>`` specifies the threshold for the SPI trigger MOSI data source. The range is ±5.0.
    """


class TriggerASpiDataMosiActive(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:DATa:MOSI:ACTIVE`` command.

    **Description:**
        - This command sets or queries the SPI MOSI polarity.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MOSI:ACTIVE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI:ACTIVE?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI:ACTIVE value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:DATa:MOSI:ACTIVE {HIGH|LOW}
        - TRIGger:A:SPI:DATa:MOSI:ACTIVE?

    **Info:**
        - ``HIGH`` specifies HIGH polarity.
        - ``LOW`` specifies LOW polarity.
    """


class TriggerASpiDataMosi(SCPICmdRead):
    """The ``TRIGger:A:SPI:DATa:MOSI`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MOSI?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.active``: The ``TRIGger:A:SPI:DATa:MOSI:ACTIVE`` command.
        - ``.level``: The ``TRIGger:A:SPI:DATa:MOSI:LEVel`` command.
        - ``.source``: The ``TRIGger:A:SPI:DATa:MOSI:SOUrce`` command.
        - ``.value``: The ``TRIGger:A:SPI:DATa:MOSI:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._active = TriggerASpiDataMosiActive(device, f"{self._cmd_syntax}:ACTIVE")
        self._level = TriggerASpiDataMosiLevel(device, f"{self._cmd_syntax}:LEVel")
        self._source = TriggerASpiDataMosiSource(device, f"{self._cmd_syntax}:SOUrce")
        self._value = TriggerASpiDataMosiValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def active(self) -> TriggerASpiDataMosiActive:
        """Return the ``TRIGger:A:SPI:DATa:MOSI:ACTIVE`` command.

        **Description:**
            - This command sets or queries the SPI MOSI polarity.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MOSI:ACTIVE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI:ACTIVE?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SPI:DATa:MOSI:ACTIVE value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:DATa:MOSI:ACTIVE {HIGH|LOW}
            - TRIGger:A:SPI:DATa:MOSI:ACTIVE?

        **Info:**
            - ``HIGH`` specifies HIGH polarity.
            - ``LOW`` specifies LOW polarity.
        """
        return self._active

    @property
    def level(self) -> TriggerASpiDataMosiLevel:
        """Return the ``TRIGger:A:SPI:DATa:MOSI:LEVel`` command.

        **Description:**
            - This command sets or queries the threshold for the SPI MOSI data source.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MOSI:LEVel?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI:LEVel?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SPI:DATa:MOSI:LEVel value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:DATa:MOSI:LEVel <NR3>
            - TRIGger:A:SPI:DATa:MOSI:LEVel?

        **Info:**
            - ``<NR3>`` specifies the threshold for the SPI trigger MOSI data source. The range is
              ±5.0.
        """
        return self._level

    @property
    def source(self) -> TriggerASpiDataMosiSource:
        """Return the ``TRIGger:A:SPI:DATa:MOSI:SOUrce`` command.

        **Description:**
            - This command sets or queries the MOSI data source for the SPI trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MOSI:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI:SOUrce?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SPI:DATa:MOSI:SOUrce value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:DATa:MOSI:SOUrce CH<x>
            - TRIGger:A:SPI:DATa:MOSI:SOUrce?

        **Info:**
            - ``CH<x>`` specifies the source for the SPI trigger MOSI data source. x can be 1, 2, 3,
              or 4.
        """
        return self._source

    @property
    def value(self) -> TriggerASpiDataMosiValue:
        """Return the ``TRIGger:A:SPI:DATa:MOSI:VALue`` command.

        **Description:**
            - This command sets or queries the binary data string used for the SPI trigger if the
              trigger condition is set to MOSI or MISOMOSI.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MOSI:VALue?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SPI:DATa:MOSI:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:DATa:MOSI:VALue <QString>
            - TRIGger:A:SPI:DATa:MOSI:VALue?

        **Info:**
            - ``<QString>`` specifies the binary data string for the SPI data. You can specify up to
              32 bits.
        """
        return self._value


class TriggerASpiDataMisoValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:DATa:MISO:VALue`` command.

    **Description:**
        - This command sets or queries the binary data string used for the SPI trigger if the
          trigger condition is set to MISO or MISOMOSI.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MISO:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO:VALue?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:DATa:MISO:VALue <QString>
        - TRIGger:A:SPI:DATa:MISO:VALue?

    **Info:**
        - ``<QString>`` specifies the binary data string for the SPI data. You can specify up to 32
          bits.
    """

    _WRAP_ARG_WITH_QUOTES = True


class TriggerASpiDataMisoSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:DATa:MISO:SOUrce`` command.

    **Description:**
        - This command sets or queries the MISO data source for the SPI trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MISO:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO:SOUrce?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO:SOUrce value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:DATa:MISO:SOUrce CH<x>
        - TRIGger:A:SPI:DATa:MISO:SOUrce?

    **Info:**
        - ``CH<x>`` specifies the source for the SPI trigger MISO data source. x can be 1, 2, 3, or
          4.
    """


class TriggerASpiDataMisoLevel(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:DATa:MISO:LEVel`` command.

    **Description:**
        - This command sets or queries the threshold for the SPI MISO data source.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MISO:LEVel?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO:LEVel?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO:LEVel value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:DATa:MISO:LEVel <NR3>
        - TRIGger:A:SPI:DATa:MISO:LEVel?

    **Info:**
        - ``<NR3>`` specifies the threshold for the SPI trigger MISO data source. The range is ±5.0.
    """


class TriggerASpiDataMisoActive(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:DATa:MISO:ACTIVE`` command.

    **Description:**
        - This command sets or queries the SPI MISO polarity.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MISO:ACTIVE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO:ACTIVE?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO:ACTIVE value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:DATa:MISO:ACTIVE {HIGH|LOW}
        - TRIGger:A:SPI:DATa:MISO:ACTIVE?

    **Info:**
        - ``HIGH`` specifies HIGH polarity.
        - ``LOW`` specifies LOW polarity.
    """


class TriggerASpiDataMiso(SCPICmdRead):
    """The ``TRIGger:A:SPI:DATa:MISO`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MISO?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.active``: The ``TRIGger:A:SPI:DATa:MISO:ACTIVE`` command.
        - ``.level``: The ``TRIGger:A:SPI:DATa:MISO:LEVel`` command.
        - ``.source``: The ``TRIGger:A:SPI:DATa:MISO:SOUrce`` command.
        - ``.value``: The ``TRIGger:A:SPI:DATa:MISO:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._active = TriggerASpiDataMisoActive(device, f"{self._cmd_syntax}:ACTIVE")
        self._level = TriggerASpiDataMisoLevel(device, f"{self._cmd_syntax}:LEVel")
        self._source = TriggerASpiDataMisoSource(device, f"{self._cmd_syntax}:SOUrce")
        self._value = TriggerASpiDataMisoValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def active(self) -> TriggerASpiDataMisoActive:
        """Return the ``TRIGger:A:SPI:DATa:MISO:ACTIVE`` command.

        **Description:**
            - This command sets or queries the SPI MISO polarity.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MISO:ACTIVE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO:ACTIVE?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SPI:DATa:MISO:ACTIVE value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:DATa:MISO:ACTIVE {HIGH|LOW}
            - TRIGger:A:SPI:DATa:MISO:ACTIVE?

        **Info:**
            - ``HIGH`` specifies HIGH polarity.
            - ``LOW`` specifies LOW polarity.
        """
        return self._active

    @property
    def level(self) -> TriggerASpiDataMisoLevel:
        """Return the ``TRIGger:A:SPI:DATa:MISO:LEVel`` command.

        **Description:**
            - This command sets or queries the threshold for the SPI MISO data source.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MISO:LEVel?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO:LEVel?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SPI:DATa:MISO:LEVel value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:DATa:MISO:LEVel <NR3>
            - TRIGger:A:SPI:DATa:MISO:LEVel?

        **Info:**
            - ``<NR3>`` specifies the threshold for the SPI trigger MISO data source. The range is
              ±5.0.
        """
        return self._level

    @property
    def source(self) -> TriggerASpiDataMisoSource:
        """Return the ``TRIGger:A:SPI:DATa:MISO:SOUrce`` command.

        **Description:**
            - This command sets or queries the MISO data source for the SPI trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MISO:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO:SOUrce?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SPI:DATa:MISO:SOUrce value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:DATa:MISO:SOUrce CH<x>
            - TRIGger:A:SPI:DATa:MISO:SOUrce?

        **Info:**
            - ``CH<x>`` specifies the source for the SPI trigger MISO data source. x can be 1, 2, 3,
              or 4.
        """
        return self._source

    @property
    def value(self) -> TriggerASpiDataMisoValue:
        """Return the ``TRIGger:A:SPI:DATa:MISO:VALue`` command.

        **Description:**
            - This command sets or queries the binary data string used for the SPI trigger if the
              trigger condition is set to MISO or MISOMOSI.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MISO:VALue?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SPI:DATa:MISO:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:DATa:MISO:VALue <QString>
            - TRIGger:A:SPI:DATa:MISO:VALue?

        **Info:**
            - ``<QString>`` specifies the binary data string for the SPI data. You can specify up to
              32 bits.
        """
        return self._value


class TriggerASpiDataFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:DATa:FORMat`` command.

    **Description:**
        - This command sets or queries the SPI trigger data format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:FORMat?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:DATa:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:DATa:FORMat {BINary|HEX}
        - TRIGger:A:SPI:DATa:FORMat?

    **Info:**
        - ``BINARY`` specifies a binary data format.
        - ``HEX`` specifies a hexadecimal data format.
    """


class TriggerASpiData(SCPICmdRead):
    """The ``TRIGger:A:SPI:DATa`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa?`` query and raise
          an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:SPI:DATa:FORMat`` command.
        - ``.miso``: The ``TRIGger:A:SPI:DATa:MISO`` command tree.
        - ``.mosi``: The ``TRIGger:A:SPI:DATa:MOSI`` command tree.
        - ``.start``: The ``TRIGger:A:SPI:DATa:STARt`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerASpiDataFormat(device, f"{self._cmd_syntax}:FORMat")
        self._miso = TriggerASpiDataMiso(device, f"{self._cmd_syntax}:MISO")
        self._mosi = TriggerASpiDataMosi(device, f"{self._cmd_syntax}:MOSI")
        self._start = TriggerASpiDataStart(device, f"{self._cmd_syntax}:STARt")

    @property
    def format(self) -> TriggerASpiDataFormat:
        """Return the ``TRIGger:A:SPI:DATa:FORMat`` command.

        **Description:**
            - This command sets or queries the SPI trigger data format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:FORMat?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:DATa:FORMat value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:DATa:FORMat {BINary|HEX}
            - TRIGger:A:SPI:DATa:FORMat?

        **Info:**
            - ``BINARY`` specifies a binary data format.
            - ``HEX`` specifies a hexadecimal data format.
        """
        return self._format

    @property
    def miso(self) -> TriggerASpiDataMiso:
        """Return the ``TRIGger:A:SPI:DATa:MISO`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MISO?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MISO?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.active``: The ``TRIGger:A:SPI:DATa:MISO:ACTIVE`` command.
            - ``.level``: The ``TRIGger:A:SPI:DATa:MISO:LEVel`` command.
            - ``.source``: The ``TRIGger:A:SPI:DATa:MISO:SOUrce`` command.
            - ``.value``: The ``TRIGger:A:SPI:DATa:MISO:VALue`` command.
        """
        return self._miso

    @property
    def mosi(self) -> TriggerASpiDataMosi:
        """Return the ``TRIGger:A:SPI:DATa:MOSI`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:MOSI?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:MOSI?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.active``: The ``TRIGger:A:SPI:DATa:MOSI:ACTIVE`` command.
            - ``.level``: The ``TRIGger:A:SPI:DATa:MOSI:LEVel`` command.
            - ``.source``: The ``TRIGger:A:SPI:DATa:MOSI:SOUrce`` command.
            - ``.value``: The ``TRIGger:A:SPI:DATa:MOSI:VALue`` command.
        """
        return self._mosi

    @property
    def start(self) -> TriggerASpiDataStart:
        """Return the ``TRIGger:A:SPI:DATa:STARt`` command.

        **Description:**
            - This command sets or queries the nth data byte on the data source after the signal on
              the enable slave source switches to the polarity specified by the Slave Select
              Polarity. The instrument triggers if the pattern Matches beginning at this point.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa:STARt?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa:STARt?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:DATa:STARt value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:DATa:STARt <NR3>
            - TRIGger:A:SPI:DATa:STARt?

        **Info:**
            - ``<NR3>`` specifies the SPI start byte data. The data can range from 0 to 216-1.
        """
        return self._start


class TriggerASpiCondition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SPI:CONDition`` command.

    **Description:**
        - This command sets or queries the trigger condition for SPI triggering.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI:CONDition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:CONDition?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:CONDition value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SPI:CONDition {MISO|MOSI|MISOMOSI}
        - TRIGger:A:SPI:CONDition?

    **Info:**
        - ``MISO`` specifies the MISO condition for SPI triggering.
        - ``MOSI`` specifies the MISI condition for SPI triggering.
        - ``MISOMOSI`` specifies either the MISO or MISI condition for SPI triggering.
    """


class TriggerASpi(SCPICmdRead):
    """The ``TRIGger:A:SPI`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SPI?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.condition``: The ``TRIGger:A:SPI:CONDition`` command.
        - ``.data``: The ``TRIGger:A:SPI:DATa`` command tree.
        - ``.format``: The ``TRIGger:A:SPI:FORMat`` command.
        - ``.sclk``: The ``TRIGger:A:SPI:SCLK`` command tree.
        - ``.ss``: The ``TRIGger:A:SPI:SS`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._condition = TriggerASpiCondition(device, f"{self._cmd_syntax}:CONDition")
        self._data = TriggerASpiData(device, f"{self._cmd_syntax}:DATa")
        self._format = TriggerASpiFormat(device, f"{self._cmd_syntax}:FORMat")
        self._sclk = TriggerASpiSclk(device, f"{self._cmd_syntax}:SCLK")
        self._ss = TriggerASpiSs(device, f"{self._cmd_syntax}:SS")

    @property
    def condition(self) -> TriggerASpiCondition:
        """Return the ``TRIGger:A:SPI:CONDition`` command.

        **Description:**
            - This command sets or queries the trigger condition for SPI triggering.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:CONDition?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:CONDition?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:CONDition value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:CONDition {MISO|MOSI|MISOMOSI}
            - TRIGger:A:SPI:CONDition?

        **Info:**
            - ``MISO`` specifies the MISO condition for SPI triggering.
            - ``MOSI`` specifies the MISI condition for SPI triggering.
            - ``MISOMOSI`` specifies either the MISO or MISI condition for SPI triggering.
        """
        return self._condition

    @property
    def data(self) -> TriggerASpiData:
        """Return the ``TRIGger:A:SPI:DATa`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:DATa?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:SPI:DATa:FORMat`` command.
            - ``.miso``: The ``TRIGger:A:SPI:DATa:MISO`` command tree.
            - ``.mosi``: The ``TRIGger:A:SPI:DATa:MOSI`` command tree.
            - ``.start``: The ``TRIGger:A:SPI:DATa:STARt`` command.
        """
        return self._data

    @property
    def format(self) -> TriggerASpiFormat:
        """Return the ``TRIGger:A:SPI:FORMat`` command.

        **Description:**
            - This command sets or queries the SPI trigger data format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:FORMat?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SPI:FORMat value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SPI:FORMat {BINary|HEX}
            - TRIGger:A:SPI:FORMat?

        **Info:**
            - ``BINary`` specifies a binary data format.
            - ``HEX`` specifies a hexadecimal data format.
        """
        return self._format

    @property
    def sclk(self) -> TriggerASpiSclk:
        """Return the ``TRIGger:A:SPI:SCLK`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SCLK?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SCLK?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.active``: The ``TRIGger:A:SPI:SCLK:ACTIVE`` command.
            - ``.level``: The ``TRIGger:A:SPI:SCLK:LEVel`` command.
            - ``.source``: The ``TRIGger:A:SPI:SCLK:SOUrce`` command.
        """
        return self._sclk

    @property
    def ss(self) -> TriggerASpiSs:
        """Return the ``TRIGger:A:SPI:SS`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI:SS?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI:SS?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.active``: The ``TRIGger:A:SPI:SS:ACTIVE`` command.
            - ``.level``: The ``TRIGger:A:SPI:SS:LEVel`` command.
            - ``.source``: The ``TRIGger:A:SPI:SS:SOUrce`` command.
        """
        return self._ss


class TriggerASerialTriggeron(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SERIAL:TRIGgeron`` command.

    **Description:**
        - This command sets or queries the trigger on a designated arbitrary bit pattern or lock on
          a repeating pattern of known length.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:TRIGgeron?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:TRIGgeron?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:TRIGgeron value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:TRIGgeron {PATtern|LOck}
        - TRIGger:A:SERIAL:TRIGgeron?

    **Info:**
        - ``PATtern`` specifies the trigger on a designated arbitrary bit pattern.
        - ``LOck`` specifies the trigger locks a repeating pattern of known length.
    """


class TriggerASerialStandard(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SERIAL:STANdard`` command.

    **Description:**
        - This command sets or queries the standard that identifies the code and bit rate.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:STANdard?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:STANdard?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:STANdard value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:STANdard {FC133|FC266|FC531|FC1063|D<x>|VIDEO270|VIDEO360|OC1|OC3| OC12|ENET1250|FW1394BS400B|FW1394BS800B|CUSTom|ENET100FX| RIO_500M|RIO_750M|RIO_1G|RIO_SERIAL_1G|VSROC192|ENETXAUI| SAS3_?|PCIExpress|INFINIBAND|RIO_SERIAL_2G|RIO_SERIAL_3G| FC2125|RIO_2G|FW1394BS1600B|SAS1_5|ENETXAUI|ENETXAUI2| FC2125|FC4250|FW1394BS1600B|INFINIBAND|PCIExpress|PCIExpress2| RIO_2G|RIO_500M|RIO_750M|RIO_SERIAL_1G|RIO_SERIAL_2_5G| RIO_SERIAL_3G|SAS6_0|SATA1_5|SATA3_0|SATA6_0}
        - TRIGger:A:SERIAL:STANdard?

    **Info:**
        - ``FC133`` : NRZ, 132.8 Mb/s.
        - ``FC266`` : NRZ, 265.6 Mb/s.
        - ``FC531`` : NRZ, 531.2 Mb/s.
        - ``FC1063`` : NRZ, 1.063 Gb/s.
        - ``OC1`` : NRZ, 51.84 Mb/s.
        - ``OC3`` : NRZ, 155.5 Mb/s.
        - ``OC12`` : NRZ, 622.1 Mb/s.
        - ``ENET1250`` : NRZ, 3.125 Gb/s.
        - ``ENETXAUI`` : NRZ, 1.25 Gb/s.
        - ``ENETXAUI2`` : NRZ, 6.25 Gb/s.
        - ``FW1394BS400B`` : NRZ, 491.5 Mb/s.
        - ``FW1394BS1600B`` : NRZ, 1.966 Gb/s.
        - ``FW1394BS800B`` : NRZ, 983.0 Mb/s.
        - ``CUSTom`` : NRZ, 155.5 Mb/s.
        - ``ENET100FX`` : MLT3, 100 Mb/s.
        - ``RIO_500M`` : NRZ, 500 Mb/s, triggers ``RIO_DRV500``, ``RIO_EDRV500M``, and
          ``RIO_RCV500``, 500Mb/s.
        - ``RIO_750M`` : NRZ, 750 Mb/s, triggers ``RIO_DRV750``, ``RIO_EDRV750M``, and
          ``RIO_RCV750``, 750Mb/s.
        - ``RIO_1G`` : NRZ, 1.0 Gb/s, triggers ``RIO_1G``.
        - ``RIO_SERIAL_1G`` : NRZ, 1.25 Gb/s, triggers ``RIO_Serial_1G``.
        - ``RIO_2G`` : NRZ, 2.0 Gb/s.
        - ``RIO_SERIAL_2_5G`` : NRZ, 2.5 Gb/s, triggers ``RIO_Serial_1G``.
        - ``RIO_SERIAL_3G`` : NRZ, 3.0 Gb/s, triggers ``RIO_Serial_1G``.
        - ``VSROC192`` : NRZ, 1.2441 Gb/s, triggers VSR OC192/STM64.
        - ``FC2125`` : NRZ, 2.125 Gb/s.
        - ``FC4250`` : NRZ, 4.25 Gb/s.
        - ``INFINIBAND`` : NRZ, 2.5 Gb/s.
        - ``PCIExpress`` : NRZ, 2.5 Gb/s.
        - ``PCIExpress2`` : NRZ, 5.0 Gb/s.
        - ``SAS6_0`` : NRZ, ``SAS6_0``.
        - ``SATA1_5`` : NRZ, 1.5 Gb/s.
        - ``SATA3_0`` : NRZ, 3.0 Gb/s.
        - ``SATA6_0`` : NRZ, 6.0 Gb/s.
    """  # noqa: E501


class TriggerASerialSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SERIAL:SOUrce`` command.

    **Description:**
        - This command sets or queries the serial data source channel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:SOUrce?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:SOUrce value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:SOUrce {CH<x>}
        - TRIGger:A:SERIAL:SOUrce?

    **Info:**
        - ``CH<x>`` specifies one of the input channels. x has a minimum of 1 and a maximum of 4.
    """


class TriggerASerialLockoffset(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SERIAL:LOCKOffset`` command.

    **Description:**
        - This command sets or queries the current bit offset into the pattern lock trigger bit
          pattern.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:LOCKOffset?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:LOCKOffset?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:LOCKOffset value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:LOCKOffset <NR1>
        - TRIGger:A:SERIAL:LOCKOffset?

    **Info:**
        - ``<NR1>`` specifies the bit offset. The valid values are 1 to 2147483646.
    """


class TriggerASerialLocklen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SERIAL:LOCKLen`` command.

    **Description:**
        - This command sets or queries the length in bits of the repeating bit pattern for pattern
          lock trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:LOCKLen?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:LOCKLen?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:LOCKLen value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:LOCKLen <NR1>
        - TRIGger:A:SERIAL:LOCKLen?

    **Info:**
        - ``<NR1>`` specifies the length in bits. The valid values are 1 to 2147483647.
    """


class TriggerASerialErrordetectorFileName(SCPICmdWrite):
    """The ``TRIGger:A:SERIAL:ERRORdetector:FILE:NAME`` command.

    **Description:**
        - This command sets the setup file for the selected signal standard and pattern.

    **Usage:**
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:SERIAL:ERRORdetector:FILE:NAME value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:ERRORdetector:FILE:NAME <LBPT|LFTP|MFTP|HFTP|CJTP|NONE>

    **Info:**
        - ``'fileName'`` is the setup file name.
    """


class TriggerASerialErrordetectorFile(SCPICmdRead):
    """The ``TRIGger:A:SERIAL:ERRORdetector:FILE`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:ERRORdetector:FILE?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:ERRORdetector:FILE?``
          query and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.name``: The ``TRIGger:A:SERIAL:ERRORdetector:FILE:NAME`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._name = TriggerASerialErrordetectorFileName(device, f"{self._cmd_syntax}:NAME")

    @property
    def name(self) -> TriggerASerialErrordetectorFileName:
        """Return the ``TRIGger:A:SERIAL:ERRORdetector:FILE:NAME`` command.

        **Description:**
            - This command sets the setup file for the selected signal standard and pattern.

        **Usage:**
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SERIAL:ERRORdetector:FILE:NAME value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:ERRORdetector:FILE:NAME <LBPT|LFTP|MFTP|HFTP|CJTP|NONE>

        **Info:**
            - ``'fileName'`` is the setup file name.
        """
        return self._name


class TriggerASerialErrordetector(SCPICmdRead):
    """The ``TRIGger:A:SERIAL:ERRORdetector`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:ERRORdetector?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:ERRORdetector?``
          query and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.file``: The ``TRIGger:A:SERIAL:ERRORdetector:FILE`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._file = TriggerASerialErrordetectorFile(device, f"{self._cmd_syntax}:FILE")

    @property
    def file(self) -> TriggerASerialErrordetectorFile:
        """Return the ``TRIGger:A:SERIAL:ERRORdetector:FILE`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:ERRORdetector:FILE?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:SERIAL:ERRORdetector:FILE?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.name``: The ``TRIGger:A:SERIAL:ERRORdetector:FILE:NAME`` command.
        """
        return self._file


class TriggerASerialDataPatternS8b10b(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SERIAL:DATa:PATtern:S8B10B`` command.

    **Description:**
        - This command sets or queries the data pattern to allow up to 64-bit serial patterns.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:DATa:PATtern:S8B10B?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:SERIAL:DATa:PATtern:S8B10B?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:SERIAL:DATa:PATtern:S8B10B value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:DATa:PATtern:S8B10B <QString>
        - TRIGger:A:SERIAL:DATa:PATtern:S8B10B?

    **Info:**
        - ``<QString>`` specifies the serial pattern to trigger on. The default value is
          '0011111010', such that there are up to 64 characters total.
    """

    _WRAP_ARG_WITH_QUOTES = True


class TriggerASerialDataPatternNrz(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SERIAL:DATa:PATtern:NRZ`` command.

    **Description:**
        - This command sets or queries the data pattern to allow up to 64-bit serial patterns.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:DATa:PATtern:NRZ?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:DATa:PATtern:NRZ?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:SERIAL:DATa:PATtern:NRZ value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:DATa:PATtern:NRZ <QString>
        - TRIGger:A:SERIAL:DATa:PATtern:NRZ?

    **Info:**
        - ``<QString>`` specifies the serial pattern to trigger on. The default value is '01', such
          that there are up to 64 characters total.
    """

    _WRAP_ARG_WITH_QUOTES = True


class TriggerASerialDataPattern(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SERIAL:DATa:PATtern`` command.

    **Description:**
        - This command sets or queries the data pattern to allow up to 64-bit serial patterns.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:DATa:PATtern?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:DATa:PATtern?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:DATa:PATtern value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:DATa:PATtern <QString>
        - TRIGger:A:SERIAL:DATa:PATtern?

    **Info:**
        - ``<QString>`` specifies the serial pattern to trigger on. The default value is '01', such
          that there are up to 64 characters total.

    Properties:
        - ``.nrz``: The ``TRIGger:A:SERIAL:DATa:PATtern:NRZ`` command.
        - ``.s8b10b``: The ``TRIGger:A:SERIAL:DATa:PATtern:S8B10B`` command.
    """

    _WRAP_ARG_WITH_QUOTES = True

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._nrz = TriggerASerialDataPatternNrz(device, f"{self._cmd_syntax}:NRZ")
        self._s8b10b = TriggerASerialDataPatternS8b10b(device, f"{self._cmd_syntax}:S8B10B")

    @property
    def nrz(self) -> TriggerASerialDataPatternNrz:
        """Return the ``TRIGger:A:SERIAL:DATa:PATtern:NRZ`` command.

        **Description:**
            - This command sets or queries the data pattern to allow up to 64-bit serial patterns.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:DATa:PATtern:NRZ?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:SERIAL:DATa:PATtern:NRZ?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SERIAL:DATa:PATtern:NRZ value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:DATa:PATtern:NRZ <QString>
            - TRIGger:A:SERIAL:DATa:PATtern:NRZ?

        **Info:**
            - ``<QString>`` specifies the serial pattern to trigger on. The default value is '01',
              such that there are up to 64 characters total.
        """
        return self._nrz

    @property
    def s8b10b(self) -> TriggerASerialDataPatternS8b10b:
        """Return the ``TRIGger:A:SERIAL:DATa:PATtern:S8B10B`` command.

        **Description:**
            - This command sets or queries the data pattern to allow up to 64-bit serial patterns.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:DATa:PATtern:S8B10B?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:SERIAL:DATa:PATtern:S8B10B?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SERIAL:DATa:PATtern:S8B10B value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:DATa:PATtern:S8B10B <QString>
            - TRIGger:A:SERIAL:DATa:PATtern:S8B10B?

        **Info:**
            - ``<QString>`` specifies the serial pattern to trigger on. The default value is
              '0011111010', such that there are up to 64 characters total.
        """
        return self._s8b10b


class TriggerASerialDataFormat(SCPICmdWrite, SCPICmdRead):
    r"""The ``TRIGger:A:SERIAL:DATa:FORMat`` command.

    **Description:**
        - This command sets or queries how the Pattern string is formatted.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:DATa:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:DATa:FORMat?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:DATa:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:DATa:FORMat {BINary|HEX}
        - TRIGger:A:SERIAL:DATa:FORMat?

    **Info:**
        - ``BINary`` pattern symbols are: {'SPACE'\|0\|1\|X} 'SPACE' is white space and can be
          included to make the 32-bit pattern easier to read when setting the pattern.
        - ``HEX`` pattern symbols are used only with NRZ. They are: {'
          '\|0\|1\|2\|3\|4\|5\|6\|7\|8\|9\|AB\|C\|DE\|F\|X\|?} Hex 'X' represents the bit pattern
          'XXXX'. Hex '?' represents any other binary bit pattern which doesn't have a hex
          representation, such as '00X1'.
    """


class TriggerASerialData(SCPICmdRead):
    """The ``TRIGger:A:SERIAL:DATa`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:DATa?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:SERIAL:DATa:FORMat`` command.
        - ``.pattern``: The ``TRIGger:A:SERIAL:DATa:PATtern`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerASerialDataFormat(device, f"{self._cmd_syntax}:FORMat")
        self._pattern = TriggerASerialDataPattern(device, f"{self._cmd_syntax}:PATtern")

    @property
    def format(self) -> TriggerASerialDataFormat:
        r"""Return the ``TRIGger:A:SERIAL:DATa:FORMat`` command.

        **Description:**
            - This command sets or queries how the Pattern string is formatted.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:DATa:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:DATa:FORMat?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SERIAL:DATa:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:DATa:FORMat {BINary|HEX}
            - TRIGger:A:SERIAL:DATa:FORMat?

        **Info:**
            - ``BINary`` pattern symbols are: {'SPACE'\|0\|1\|X} 'SPACE' is white space and can be
              included to make the 32-bit pattern easier to read when setting the pattern.
            - ``HEX`` pattern symbols are used only with NRZ. They are: {'
              '\|0\|1\|2\|3\|4\|5\|6\|7\|8\|9\|AB\|C\|DE\|F\|X\|?} Hex 'X' represents the bit
              pattern 'XXXX'. Hex '?' represents any other binary bit pattern which doesn't have a
              hex representation, such as '00X1'.
        """
        return self._format

    @property
    def pattern(self) -> TriggerASerialDataPattern:
        """Return the ``TRIGger:A:SERIAL:DATa:PATtern`` command.

        **Description:**
            - This command sets or queries the data pattern to allow up to 64-bit serial patterns.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:DATa:PATtern?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:DATa:PATtern?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SERIAL:DATa:PATtern value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:DATa:PATtern <QString>
            - TRIGger:A:SERIAL:DATa:PATtern?

        **Info:**
            - ``<QString>`` specifies the serial pattern to trigger on. The default value is '01',
              such that there are up to 64 characters total.

        Sub-properties:
            - ``.nrz``: The ``TRIGger:A:SERIAL:DATa:PATtern:NRZ`` command.
            - ``.s8b10b``: The ``TRIGger:A:SERIAL:DATa:PATtern:S8B10B`` command.
        """
        return self._pattern


class TriggerASerialCode(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SERIAL:CODe`` command.

    **Description:**
        - This command sets or queries the signal code.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:CODe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:CODe?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:CODe value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:CODe {NRZ|S8B10B}
        - TRIGger:A:SERIAL:CODe?

    **Info:**
        - ``NRZ`` sets the code to NRZ.
        - ``S8B10B`` sets the code to S8B0B.
    """


class TriggerASerialClockSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SERIAL:CLOCk:SOUrce`` command.

    **Description:**
        - This command sets or queries the serial data source channel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:CLOCk:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:CLOCk:SOUrce?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:CLOCk:SOUrce value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:CLOCk:SOUrce {CH<x>|RECOVered}
        - TRIGger:A:SERIAL:CLOCk:SOUrce?

    **Info:**
        - ``CH<x>`` specifies one of the input channels. x can be 1, 2, 3, or 4.
        - ``RECOVered`` specifies clock polarity and level are extracted from the serial data stream
          and other clock parameters are ignored.
    """


class TriggerASerialClockPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SERIAL:CLOCk:POLarity`` command.

    **Description:**
        - This command sets or queries the serial clock polarity.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:CLOCk:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:CLOCk:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:CLOCk:POLarity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:CLOCk:POLarity {RISe|FALL}
        - TRIGger:A:SERIAL:CLOCk:POLarity?

    **Info:**
        - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
        - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
    """


class TriggerASerialClockLevel(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SERIAL:CLOCk:LEVel`` command.

    **Description:**
        - This command sets or queries the serial trigger clock level.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:CLOCk:LEVel?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:CLOCk:LEVel?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:CLOCk:LEVel value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:CLOCk:LEVel <NR3>
        - TRIGger:A:SERIAL:CLOCk:LEVel?

    **Info:**
        - ``<NR3>`` is a value in the range of 9.9E37 and is expressed in volts.
    """


class TriggerASerialClock(SCPICmdRead):
    """The ``TRIGger:A:SERIAL:CLOCk`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:CLOCk?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:CLOCk?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.level``: The ``TRIGger:A:SERIAL:CLOCk:LEVel`` command.
        - ``.polarity``: The ``TRIGger:A:SERIAL:CLOCk:POLarity`` command.
        - ``.source``: The ``TRIGger:A:SERIAL:CLOCk:SOUrce`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._level = TriggerASerialClockLevel(device, f"{self._cmd_syntax}:LEVel")
        self._polarity = TriggerASerialClockPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._source = TriggerASerialClockSource(device, f"{self._cmd_syntax}:SOUrce")

    @property
    def level(self) -> TriggerASerialClockLevel:
        """Return the ``TRIGger:A:SERIAL:CLOCk:LEVel`` command.

        **Description:**
            - This command sets or queries the serial trigger clock level.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:CLOCk:LEVel?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:CLOCk:LEVel?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SERIAL:CLOCk:LEVel value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:CLOCk:LEVel <NR3>
            - TRIGger:A:SERIAL:CLOCk:LEVel?

        **Info:**
            - ``<NR3>`` is a value in the range of 9.9E37 and is expressed in volts.
        """
        return self._level

    @property
    def polarity(self) -> TriggerASerialClockPolarity:
        """Return the ``TRIGger:A:SERIAL:CLOCk:POLarity`` command.

        **Description:**
            - This command sets or queries the serial clock polarity.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:CLOCk:POLarity?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:CLOCk:POLarity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SERIAL:CLOCk:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:CLOCk:POLarity {RISe|FALL}
            - TRIGger:A:SERIAL:CLOCk:POLarity?

        **Info:**
            - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
            - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
        """
        return self._polarity

    @property
    def source(self) -> TriggerASerialClockSource:
        """Return the ``TRIGger:A:SERIAL:CLOCk:SOUrce`` command.

        **Description:**
            - This command sets or queries the serial data source channel.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:CLOCk:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:CLOCk:SOUrce?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:SERIAL:CLOCk:SOUrce value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:CLOCk:SOUrce {CH<x>|RECOVered}
            - TRIGger:A:SERIAL:CLOCk:SOUrce?

        **Info:**
            - ``CH<x>`` specifies one of the input channels. x can be 1, 2, 3, or 4.
            - ``RECOVered`` specifies clock polarity and level are extracted from the serial data
              stream and other clock parameters are ignored.
        """
        return self._source


class TriggerASerialBitrate(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:SERIAL:BITRate`` command.

    **Description:**
        - This command sets or queries the clock/data bit rate. Changing the bit rate causes the
          standard to become 'custom'. It remains 'custom' until another standard is chosen.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:BITRate?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:BITRate?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:BITRate value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:SERIAL:BITRate <NR3>
        - TRIGger:A:SERIAL:BITRate?

    **Info:**
        - ``<NR3>`` This is the series bit rate and is expressed in bits per second. The range is
          1.5e6 to 1.25e9.
    """


#  pylint: disable=too-many-instance-attributes
class TriggerASerial(SCPICmdRead):
    """The ``TRIGger:A:SERIAL`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.bitrate``: The ``TRIGger:A:SERIAL:BITRate`` command.
        - ``.clock``: The ``TRIGger:A:SERIAL:CLOCk`` command tree.
        - ``.code``: The ``TRIGger:A:SERIAL:CODe`` command.
        - ``.data``: The ``TRIGger:A:SERIAL:DATa`` command tree.
        - ``.errordetector``: The ``TRIGger:A:SERIAL:ERRORdetector`` command tree.
        - ``.locklen``: The ``TRIGger:A:SERIAL:LOCKLen`` command.
        - ``.lockoffset``: The ``TRIGger:A:SERIAL:LOCKOffset`` command.
        - ``.source``: The ``TRIGger:A:SERIAL:SOUrce`` command.
        - ``.standard``: The ``TRIGger:A:SERIAL:STANdard`` command.
        - ``.triggeron``: The ``TRIGger:A:SERIAL:TRIGgeron`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._bitrate = TriggerASerialBitrate(device, f"{self._cmd_syntax}:BITRate")
        self._clock = TriggerASerialClock(device, f"{self._cmd_syntax}:CLOCk")
        self._code = TriggerASerialCode(device, f"{self._cmd_syntax}:CODe")
        self._data = TriggerASerialData(device, f"{self._cmd_syntax}:DATa")
        self._errordetector = TriggerASerialErrordetector(
            device, f"{self._cmd_syntax}:ERRORdetector"
        )
        self._locklen = TriggerASerialLocklen(device, f"{self._cmd_syntax}:LOCKLen")
        self._lockoffset = TriggerASerialLockoffset(device, f"{self._cmd_syntax}:LOCKOffset")
        self._source = TriggerASerialSource(device, f"{self._cmd_syntax}:SOUrce")
        self._standard = TriggerASerialStandard(device, f"{self._cmd_syntax}:STANdard")
        self._triggeron = TriggerASerialTriggeron(device, f"{self._cmd_syntax}:TRIGgeron")

    @property
    def bitrate(self) -> TriggerASerialBitrate:
        """Return the ``TRIGger:A:SERIAL:BITRate`` command.

        **Description:**
            - This command sets or queries the clock/data bit rate. Changing the bit rate causes the
              standard to become 'custom'. It remains 'custom' until another standard is chosen.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:BITRate?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:BITRate?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:BITRate value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:BITRate <NR3>
            - TRIGger:A:SERIAL:BITRate?

        **Info:**
            - ``<NR3>`` This is the series bit rate and is expressed in bits per second. The range
              is 1.5e6 to 1.25e9.
        """
        return self._bitrate

    @property
    def clock(self) -> TriggerASerialClock:
        """Return the ``TRIGger:A:SERIAL:CLOCk`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:CLOCk?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:CLOCk?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.level``: The ``TRIGger:A:SERIAL:CLOCk:LEVel`` command.
            - ``.polarity``: The ``TRIGger:A:SERIAL:CLOCk:POLarity`` command.
            - ``.source``: The ``TRIGger:A:SERIAL:CLOCk:SOUrce`` command.
        """
        return self._clock

    @property
    def code(self) -> TriggerASerialCode:
        """Return the ``TRIGger:A:SERIAL:CODe`` command.

        **Description:**
            - This command sets or queries the signal code.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:CODe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:CODe?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:CODe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:CODe {NRZ|S8B10B}
            - TRIGger:A:SERIAL:CODe?

        **Info:**
            - ``NRZ`` sets the code to NRZ.
            - ``S8B10B`` sets the code to S8B0B.
        """
        return self._code

    @property
    def data(self) -> TriggerASerialData:
        """Return the ``TRIGger:A:SERIAL:DATa`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:DATa?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:SERIAL:DATa:FORMat`` command.
            - ``.pattern``: The ``TRIGger:A:SERIAL:DATa:PATtern`` command.
        """
        return self._data

    @property
    def errordetector(self) -> TriggerASerialErrordetector:
        """Return the ``TRIGger:A:SERIAL:ERRORdetector`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:ERRORdetector?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:ERRORdetector?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.file``: The ``TRIGger:A:SERIAL:ERRORdetector:FILE`` command tree.
        """
        return self._errordetector

    @property
    def locklen(self) -> TriggerASerialLocklen:
        """Return the ``TRIGger:A:SERIAL:LOCKLen`` command.

        **Description:**
            - This command sets or queries the length in bits of the repeating bit pattern for
              pattern lock trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:LOCKLen?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:LOCKLen?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:LOCKLen value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:LOCKLen <NR1>
            - TRIGger:A:SERIAL:LOCKLen?

        **Info:**
            - ``<NR1>`` specifies the length in bits. The valid values are 1 to 2147483647.
        """
        return self._locklen

    @property
    def lockoffset(self) -> TriggerASerialLockoffset:
        """Return the ``TRIGger:A:SERIAL:LOCKOffset`` command.

        **Description:**
            - This command sets or queries the current bit offset into the pattern lock trigger bit
              pattern.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:LOCKOffset?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:LOCKOffset?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:LOCKOffset value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:LOCKOffset <NR1>
            - TRIGger:A:SERIAL:LOCKOffset?

        **Info:**
            - ``<NR1>`` specifies the bit offset. The valid values are 1 to 2147483646.
        """
        return self._lockoffset

    @property
    def source(self) -> TriggerASerialSource:
        """Return the ``TRIGger:A:SERIAL:SOUrce`` command.

        **Description:**
            - This command sets or queries the serial data source channel.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:SOUrce?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:SOUrce value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:SOUrce {CH<x>}
            - TRIGger:A:SERIAL:SOUrce?

        **Info:**
            - ``CH<x>`` specifies one of the input channels. x has a minimum of 1 and a maximum of
              4.
        """
        return self._source

    @property
    def standard(self) -> TriggerASerialStandard:
        """Return the ``TRIGger:A:SERIAL:STANdard`` command.

        **Description:**
            - This command sets or queries the standard that identifies the code and bit rate.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:STANdard?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:STANdard?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:STANdard value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:STANdard {FC133|FC266|FC531|FC1063|D<x>|VIDEO270|VIDEO360|OC1|OC3| OC12|ENET1250|FW1394BS400B|FW1394BS800B|CUSTom|ENET100FX| RIO_500M|RIO_750M|RIO_1G|RIO_SERIAL_1G|VSROC192|ENETXAUI| SAS3_?|PCIExpress|INFINIBAND|RIO_SERIAL_2G|RIO_SERIAL_3G| FC2125|RIO_2G|FW1394BS1600B|SAS1_5|ENETXAUI|ENETXAUI2| FC2125|FC4250|FW1394BS1600B|INFINIBAND|PCIExpress|PCIExpress2| RIO_2G|RIO_500M|RIO_750M|RIO_SERIAL_1G|RIO_SERIAL_2_5G| RIO_SERIAL_3G|SAS6_0|SATA1_5|SATA3_0|SATA6_0}
            - TRIGger:A:SERIAL:STANdard?

        **Info:**
            - ``FC133`` : NRZ, 132.8 Mb/s.
            - ``FC266`` : NRZ, 265.6 Mb/s.
            - ``FC531`` : NRZ, 531.2 Mb/s.
            - ``FC1063`` : NRZ, 1.063 Gb/s.
            - ``OC1`` : NRZ, 51.84 Mb/s.
            - ``OC3`` : NRZ, 155.5 Mb/s.
            - ``OC12`` : NRZ, 622.1 Mb/s.
            - ``ENET1250`` : NRZ, 3.125 Gb/s.
            - ``ENETXAUI`` : NRZ, 1.25 Gb/s.
            - ``ENETXAUI2`` : NRZ, 6.25 Gb/s.
            - ``FW1394BS400B`` : NRZ, 491.5 Mb/s.
            - ``FW1394BS1600B`` : NRZ, 1.966 Gb/s.
            - ``FW1394BS800B`` : NRZ, 983.0 Mb/s.
            - ``CUSTom`` : NRZ, 155.5 Mb/s.
            - ``ENET100FX`` : MLT3, 100 Mb/s.
            - ``RIO_500M`` : NRZ, 500 Mb/s, triggers ``RIO_DRV500``, ``RIO_EDRV500M``, and
              ``RIO_RCV500``, 500Mb/s.
            - ``RIO_750M`` : NRZ, 750 Mb/s, triggers ``RIO_DRV750``, ``RIO_EDRV750M``, and
              ``RIO_RCV750``, 750Mb/s.
            - ``RIO_1G`` : NRZ, 1.0 Gb/s, triggers ``RIO_1G``.
            - ``RIO_SERIAL_1G`` : NRZ, 1.25 Gb/s, triggers ``RIO_Serial_1G``.
            - ``RIO_2G`` : NRZ, 2.0 Gb/s.
            - ``RIO_SERIAL_2_5G`` : NRZ, 2.5 Gb/s, triggers ``RIO_Serial_1G``.
            - ``RIO_SERIAL_3G`` : NRZ, 3.0 Gb/s, triggers ``RIO_Serial_1G``.
            - ``VSROC192`` : NRZ, 1.2441 Gb/s, triggers VSR OC192/STM64.
            - ``FC2125`` : NRZ, 2.125 Gb/s.
            - ``FC4250`` : NRZ, 4.25 Gb/s.
            - ``INFINIBAND`` : NRZ, 2.5 Gb/s.
            - ``PCIExpress`` : NRZ, 2.5 Gb/s.
            - ``PCIExpress2`` : NRZ, 5.0 Gb/s.
            - ``SAS6_0`` : NRZ, ``SAS6_0``.
            - ``SATA1_5`` : NRZ, 1.5 Gb/s.
            - ``SATA3_0`` : NRZ, 3.0 Gb/s.
            - ``SATA6_0`` : NRZ, 6.0 Gb/s.
        """  # noqa: E501
        return self._standard

    @property
    def triggeron(self) -> TriggerASerialTriggeron:
        """Return the ``TRIGger:A:SERIAL:TRIGgeron`` command.

        **Description:**
            - This command sets or queries the trigger on a designated arbitrary bit pattern or lock
              on a repeating pattern of known length.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL:TRIGgeron?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL:TRIGgeron?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:SERIAL:TRIGgeron value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:SERIAL:TRIGgeron {PATtern|LOck}
            - TRIGger:A:SERIAL:TRIGgeron?

        **Info:**
            - ``PATtern`` specifies the trigger on a designated arbitrary bit pattern.
            - ``LOck`` specifies the trigger locks a repeating pattern of known length.
        """
        return self._triggeron


class TriggerAReady(SCPICmdRead):
    """The ``TRIGger:A:READY`` command.

    **Description:**
        - This command queries the trigger ready state and provides the immediate state from the
          trigger system. It is a more synchronous means of determining when the oscilloscope is
          ready to trigger. The ``TRIGGER:STATE`` reflects a less-frequently updated status of the
          trigger LEDs on the instrument front panel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:READY?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:READY?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:READY?
    """


class TriggerAPulseWindowWidth(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow:WIDTH`` command.

    **Description:**
        - This command sets or queries the minimum width for a window violation. This command is
          equivalent to selecting Window Setup from the Trig menu, selecting Wider than in the
          Trigger When box, and setting the Width.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:WIDTH?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:WIDTH?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WINdow:WIDTH value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:WIDTH <NR3>
        - TRIGger:A:PULse:WINdow:WIDTH?

    **Info:**
        - ``<NR3>`` argument specifies the minimum width in seconds.
    """


class TriggerAPulseWindowWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow:WHEn`` command.

    **Description:**
        - This command sets or queries the window trigger violation qualification. This command is
          equivalent to selecting Window Setup from the Trig menu and selecting Logic, Occurs, or
          Wider than in the Trigger When box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:WHEn?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WINdow:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:WHEn {LOGIc|OCCurs|WIDERthan}
        - TRIGger:A:PULse:WINdow:WHEn?

    **Info:**
        - ``LOGIc`` argument specifies a trigger event when a window violation occurs on the AND of
          the logic channels.
        - ``OCCurs`` argument specifies a trigger event if any detectable window violation occurs.
        - ``WIDERthan`` specifies a trigger event if a window violation greater than the specified
          width occurs.
    """


class TriggerAPulseWindowType(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow:TYPe`` command.

    **Description:**
        - This command sets or queries the window trigger type. This command is equivalent to
          selecting Window Setup from the Trig menu and selecting Outside Limits or Inside Limits in
          the Trigger When section.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:TYPe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:TYPe?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WINdow:TYPe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:TYPe {INSide|OUTside}
        - TRIGger:A:PULse:WINdow:TYPe?

    **Info:**
        - ``INSide`` argument causes a trigger event to occur when a pulse enters the window defined
          by the upper and lower thresholds.
        - ``OUTside`` argument causes a trigger event to occur when a pulse goes outside the window
          defined by the upper and lower thresholds.
    """


class TriggerAPulseWindowThresholdLow(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow:THReshold:LOW`` command.

    **Description:**
        - This command sets or queries the lower limit for the window trigger. This command is
          equivalent to selecting Window Setup from the Trig menu and setting the Lower Level
          voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:THReshold:LOW?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:WINdow:THReshold:LOW?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:WINdow:THReshold:LOW value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:THReshold:LOW <NR3>
        - TRIGger:A:PULse:WINdow:THReshold:LOW?

    **Info:**
        - ``<NR3>`` specifies the threshold value in volts.
    """


class TriggerAPulseWindowThresholdHigh(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow:THReshold:HIGH`` command.

    **Description:**
        - This command sets or queries the upper limit for the pulse window trigger. This command is
          equivalent to selecting Window Setup from the Trig menu and setting the window trigger
          Upper Level voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:THReshold:HIGH?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:WINdow:THReshold:HIGH?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:WINdow:THReshold:HIGH value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:THReshold:HIGH <NR3>
        - TRIGger:A:PULse:WINdow:THReshold:HIGH?

    **Info:**
        - ``<NR3>`` specifies the threshold value in volts.
    """


class TriggerAPulseWindowThresholdBoth(SCPICmdWrite):
    """The ``TRIGger:A:PULse:WINdow:THReshold:BOTh`` command.

    **Description:**
        - This command (no query form) sets the upper and lower switching thresholds for the window
          trigger. This command is equivalent to selecting Window Setup from the Trig menu and then
          setting the Upper Level and Lower Level voltages.

    **Usage:**
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:WINdow:THReshold:BOTh value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:THReshold:BOTh {TTL|ECL}

    **Info:**
        - ``TTL`` argument sets the upper and the lower threshold to the nominal TTL voltage levels.
        - ``ECL`` argument sets the upper and the lower threshold to the nominal ECL voltage levels.
    """


class TriggerAPulseWindowThreshold(SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow:THReshold`` command.

    **Description:**
        - This query-only command returns the upper and lower thresholds for the window trigger.
          This command query is equivalent to selecting Window Setup from the Trig menu and viewing
          the window trigger Upper Level and Lower Level settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:THReshold?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:THReshold?``
          query and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:THReshold?

    Properties:
        - ``.both``: The ``TRIGger:A:PULse:WINdow:THReshold:BOTh`` command.
        - ``.high``: The ``TRIGger:A:PULse:WINdow:THReshold:HIGH`` command.
        - ``.low``: The ``TRIGger:A:PULse:WINdow:THReshold:LOW`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._both = TriggerAPulseWindowThresholdBoth(device, f"{self._cmd_syntax}:BOTh")
        self._high = TriggerAPulseWindowThresholdHigh(device, f"{self._cmd_syntax}:HIGH")
        self._low = TriggerAPulseWindowThresholdLow(device, f"{self._cmd_syntax}:LOW")

    @property
    def both(self) -> TriggerAPulseWindowThresholdBoth:
        """Return the ``TRIGger:A:PULse:WINdow:THReshold:BOTh`` command.

        **Description:**
            - This command (no query form) sets the upper and lower switching thresholds for the
              window trigger. This command is equivalent to selecting Window Setup from the Trig
              menu and then setting the Upper Level and Lower Level voltages.

        **Usage:**
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:THReshold:BOTh value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:THReshold:BOTh {TTL|ECL}

        **Info:**
            - ``TTL`` argument sets the upper and the lower threshold to the nominal TTL voltage
              levels.
            - ``ECL`` argument sets the upper and the lower threshold to the nominal ECL voltage
              levels.
        """
        return self._both

    @property
    def high(self) -> TriggerAPulseWindowThresholdHigh:
        """Return the ``TRIGger:A:PULse:WINdow:THReshold:HIGH`` command.

        **Description:**
            - This command sets or queries the upper limit for the pulse window trigger. This
              command is equivalent to selecting Window Setup from the Trig menu and setting the
              window trigger Upper Level voltage.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:THReshold:HIGH?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:THReshold:HIGH?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:THReshold:HIGH value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:THReshold:HIGH <NR3>
            - TRIGger:A:PULse:WINdow:THReshold:HIGH?

        **Info:**
            - ``<NR3>`` specifies the threshold value in volts.
        """
        return self._high

    @property
    def low(self) -> TriggerAPulseWindowThresholdLow:
        """Return the ``TRIGger:A:PULse:WINdow:THReshold:LOW`` command.

        **Description:**
            - This command sets or queries the lower limit for the window trigger. This command is
              equivalent to selecting Window Setup from the Trig menu and setting the Lower Level
              voltage.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:THReshold:LOW?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:THReshold:LOW?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:THReshold:LOW value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:THReshold:LOW <NR3>
            - TRIGger:A:PULse:WINdow:THReshold:LOW?

        **Info:**
            - ``<NR3>`` specifies the threshold value in volts.
        """
        return self._low


class TriggerAPulseWindowQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow:QUAlify`` command.

    **Description:**
        - This command sets or queries the Window Trigger qualification. This is equivalent to
          selecting Window Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
          Trigger If Window drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:QUAlify?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WINdow:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:A:PULse:WINdow:QUAlify?

    **Info:**
        - ``OCCurs`` specifies a trigger if any detectable event occurs.
        - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
          patterns and thresholds set by the.
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerAPulseWindowPolarityChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow:POLarity:CH<x>`` command.

    **Description:**
        - This command sets or queries the pulse trigger window polarity of the specified channel.
          The oscilloscope triggers only when the signal exits the window. The command is available
          only when the Window Event is set to Inside > t and not available for the rest of the
          window events. The logic selection is available only when the polarity is set to Either.
          <x> is the search number or channel number.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:POLarity:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:WINdow:POLarity:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:WINdow:POLarity:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
        - TRIGger:A:PULse:WINdow:POLarity:CH<x>?

    **Info:**
        - ``EITher`` specifies positive or negative polarity.
        - ``NEGAtive`` specifies a negative polarity.
        - ``POSITIVe`` specifies a positive polarity.
    """


class TriggerAPulseWindowPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow:POLarity`` command.

    **Description:**
        - This command sets or queries the pulse trigger window polarity of the selected trigger
          Source. The instrument triggers when the signal exits the window. The command is available
          only when the option Inside > t is selected in the Window Event drop-dowm list and not
          available for the rest of the window events. The logic selection is available only when
          the polarity is set to Either.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WINdow:POLarity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:POLarity {EITher|NEGAtive|POSITIVe}
        - TRIGger:A:PULse:WINdow:POLarity?

    **Info:**
        - ``EITher`` specifies positive or negative polarity.
        - ``NEGAtive`` specifies a negative polarity.
        - ``POSITIVe`` specifies a positive polarity.

    Properties:
        - ``.ch``: The ``TRIGger:A:PULse:WINdow:POLarity:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerAPulseWindowPolarityChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerAPulseWindowPolarityChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerAPulseWindowPolarityChannel]:
        """Return the ``TRIGger:A:PULse:WINdow:POLarity:CH<x>`` command.

        **Description:**
            - This command sets or queries the pulse trigger window polarity of the specified
              channel. The oscilloscope triggers only when the signal exits the window. The command
              is available only when the Window Event is set to Inside > t and not available for the
              rest of the window events. The logic selection is available only when the polarity is
              set to Either. <x> is the search number or channel number.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:POLarity:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:POLarity:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:POLarity:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
            - TRIGger:A:PULse:WINdow:POLarity:CH<x>?

        **Info:**
            - ``EITher`` specifies positive or negative polarity.
            - ``NEGAtive`` specifies a negative polarity.
            - ``POSITIVe`` specifies a positive polarity.
        """
        return self._ch


class TriggerAPulseWindowLogicThresholdChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x>`` command.

    **Description:**
        - This command sets or queries the window logic trigger threshold for the channel specified
          by <x>, which can be 1, 2, 3, or 4. This is equivalent to selecting Window Setup from the
          Trig menu and setting the window logic threshold in the Trigger When box. While all
          channels can be set or queried, only channels 3 and 4 can be used if the window source is
          channel 1 or 2. Similarly, only channels 1 and 2 can be used if the window source is
          channel 3 or 4.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x> <NR3>
        - TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x>?

    **Info:**
        - ``<NR3>`` argument specifies the window logic trigger threshold in volts.
    """


class TriggerAPulseWindowLogicThreshold(SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow:LOGIc:THReshold`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:LOGIc:THReshold?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:WINdow:LOGIc:THReshold?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    Properties:
        - ``.ch``: The ``TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerAPulseWindowLogicThresholdChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerAPulseWindowLogicThresholdChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerAPulseWindowLogicThresholdChannel]:
        """Return the ``TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x>`` command.

        **Description:**
            - This command sets or queries the window logic trigger threshold for the channel
              specified by <x>, which can be 1, 2, 3, or 4. This is equivalent to selecting Window
              Setup from the Trig menu and setting the window logic threshold in the Trigger When
              box. While all channels can be set or queried, only channels 3 and 4 can be used if
              the window source is channel 1 or 2. Similarly, only channels 1 and 2 can be used if
              the window source is channel 3 or 4.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x>?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x> <NR3>
            - TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x>?

        **Info:**
            - ``<NR3>`` argument specifies the window logic trigger threshold in volts.
        """
        return self._ch


class TriggerAPulseWindowLogicInputChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    r"""The ``TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x>`` command.

    **Description:**
        - This command sets or queries the A window logic input for the channel specified by <x>,
          which can be 1, 2, 3, or 4. This is equivalent to selecting Window Setup from the Trig
          menu, selecting Logic in the Trigger When box, and selecting a logic (H, L, or X) for the
          channel. While all channels can be set or queried, only channels 3 and 4 can be used if
          the window source is channel 1 or 2. Similarly, only channels 1 and 2 can be used if the
          window source is channel 3 or 4.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x> {HIGH\LOW\X}
        - TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x>?

    **Info:**
        - ``HIGH`` argument specifies logic high.
        - ``LOW`` argument specifies logic low.
        - ``X`` argument specifies a don't care state.
    """


class TriggerAPulseWindowLogicInput(SCPICmdReadWithArguments):
    """The ``TRIGger:A:PULse:WINdow:LOGIc:INPUT`` command.

    **Description:**
        - This query-only command returns the current window trigger logic input parameters.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:PULse:WINdow:LOGIc:INPUT? TRIGger:A:PULse:WINdow:LOGIcINPUT?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:WINdow:LOGIc:INPUT? TRIGger:A:PULse:WINdow:LOGIcINPUT?`` query and raise
          an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:LOGIc:INPUT? TRIGger:A:PULse:WINdow:LOGIcINPUT?

    Properties:
        - ``.ch``: The ``TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerAPulseWindowLogicInputChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerAPulseWindowLogicInputChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerAPulseWindowLogicInputChannel]:
        r"""Return the ``TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x>`` command.

        **Description:**
            - This command sets or queries the A window logic input for the channel specified by
              <x>, which can be 1, 2, 3, or 4. This is equivalent to selecting Window Setup from the
              Trig menu, selecting Logic in the Trigger When box, and selecting a logic (H, L, or X)
              for the channel. While all channels can be set or queried, only channels 3 and 4 can
              be used if the window source is channel 1 or 2. Similarly, only channels 1 and 2 can
              be used if the window source is channel 3 or 4.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x> {HIGH\LOW\X}
            - TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x>?

        **Info:**
            - ``HIGH`` argument specifies logic high.
            - ``LOW`` argument specifies logic low.
            - ``X`` argument specifies a don't care state.
        """
        return self._ch


class TriggerAPulseWindowLogic(SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow:LOGIc`` command.

    **Description:**
        - This query-only command returns the current window trigger logic parameters.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:LOGIc?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:LOGIc?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:LOGIc?

    Properties:
        - ``.input``: The ``TRIGger:A:PULse:WINdow:LOGIc:INPUT`` command.
        - ``.threshold``: The ``TRIGger:A:PULse:WINdow:LOGIc:THReshold`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._input = TriggerAPulseWindowLogicInput(device, f"{self._cmd_syntax}:INPUT")
        self._threshold = TriggerAPulseWindowLogicThreshold(device, f"{self._cmd_syntax}:THReshold")

    @property
    def input(self) -> TriggerAPulseWindowLogicInput:
        """Return the ``TRIGger:A:PULse:WINdow:LOGIc:INPUT`` command.

        **Description:**
            - This query-only command returns the current window trigger logic input parameters.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:PULse:WINdow:LOGIc:INPUT? TRIGger:A:PULse:WINdow:LOGIcINPUT?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:LOGIc:INPUT? TRIGger:A:PULse:WINdow:LOGIcINPUT?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:LOGIc:INPUT? TRIGger:A:PULse:WINdow:LOGIcINPUT?

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:PULse:WINdow:LOGIc:INPUT:CH<x>`` command.
        """
        return self._input

    @property
    def threshold(self) -> TriggerAPulseWindowLogicThreshold:
        """Return the ``TRIGger:A:PULse:WINdow:LOGIc:THReshold`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:PULse:WINdow:LOGIc:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:LOGIc:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:PULse:WINdow:LOGIc:THReshold:CH<x>`` command.
        """
        return self._threshold


class TriggerAPulseWindowEvent(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow:EVENT`` command.

    **Description:**
        - This command sets or queries the window trigger event. This command is equivalent to
          selecting Window Setup from the Trig menu and selecting from the Window Event box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:EVENT?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:EVENT?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WINdow:EVENT value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WINdow:EVENT {OUTSIDEGreater|INSIDEGreater|ENTERSWindow|EXITSWindow}
        - TRIGger:A:PULse:WINdow:EVENT?

    **Info:**
        - ``OUTSIDEGreater`` specifies a trigger event when the signal leaves the window defined by
          the threshold levels for the time specified by Width.
        - ``INSIDEGreater`` specifies a trigger event when the signal enters the window defined by
          the threshold levels for the time specified by Width.
        - ``ENTERSWindow`` specifies a trigger event when the signal enters the window defined by
          the threshold levels.
        - ``EXITSWindow`` specifies a trigger event when the signal leaves the window defined by the
          threshold levels.
    """


#  pylint: disable=too-many-instance-attributes
class TriggerAPulseWindow(SCPICmdRead):
    """The ``TRIGger:A:PULse:WINdow`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.logic``: The ``TRIGger:A:PULse:WINdow:LOGIc`` command.
        - ``.event``: The ``TRIGger:A:PULse:WINdow:EVENT`` command.
        - ``.polarity``: The ``TRIGger:A:PULse:WINdow:POLarity`` command.
        - ``.qualify``: The ``TRIGger:A:PULse:WINdow:QUAlify`` command.
        - ``.threshold``: The ``TRIGger:A:PULse:WINdow:THReshold`` command.
        - ``.type``: The ``TRIGger:A:PULse:WINdow:TYPe`` command.
        - ``.when``: The ``TRIGger:A:PULse:WINdow:WHEn`` command.
        - ``.width``: The ``TRIGger:A:PULse:WINdow:WIDTH`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._logic = TriggerAPulseWindowLogic(device, f"{self._cmd_syntax}:LOGIc")
        self._event = TriggerAPulseWindowEvent(device, f"{self._cmd_syntax}:EVENT")
        self._polarity = TriggerAPulseWindowPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerAPulseWindowQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._threshold = TriggerAPulseWindowThreshold(device, f"{self._cmd_syntax}:THReshold")
        self._type = TriggerAPulseWindowType(device, f"{self._cmd_syntax}:TYPe")
        self._when = TriggerAPulseWindowWhen(device, f"{self._cmd_syntax}:WHEn")
        self._width = TriggerAPulseWindowWidth(device, f"{self._cmd_syntax}:WIDTH")

    @property
    def logic(self) -> TriggerAPulseWindowLogic:
        """Return the ``TRIGger:A:PULse:WINdow:LOGIc`` command.

        **Description:**
            - This query-only command returns the current window trigger logic parameters.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:LOGIc?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:LOGIc?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:LOGIc?

        Sub-properties:
            - ``.input``: The ``TRIGger:A:PULse:WINdow:LOGIc:INPUT`` command.
            - ``.threshold``: The ``TRIGger:A:PULse:WINdow:LOGIc:THReshold`` command tree.
        """
        return self._logic

    @property
    def event(self) -> TriggerAPulseWindowEvent:
        """Return the ``TRIGger:A:PULse:WINdow:EVENT`` command.

        **Description:**
            - This command sets or queries the window trigger event. This command is equivalent to
              selecting Window Setup from the Trig menu and selecting from the Window Event box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:EVENT?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:EVENT?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:EVENT value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:EVENT {OUTSIDEGreater|INSIDEGreater|ENTERSWindow|EXITSWindow}
            - TRIGger:A:PULse:WINdow:EVENT?

        **Info:**
            - ``OUTSIDEGreater`` specifies a trigger event when the signal leaves the window defined
              by the threshold levels for the time specified by Width.
            - ``INSIDEGreater`` specifies a trigger event when the signal enters the window defined
              by the threshold levels for the time specified by Width.
            - ``ENTERSWindow`` specifies a trigger event when the signal enters the window defined
              by the threshold levels.
            - ``EXITSWindow`` specifies a trigger event when the signal leaves the window defined by
              the threshold levels.
        """
        return self._event

    @property
    def polarity(self) -> TriggerAPulseWindowPolarity:
        """Return the ``TRIGger:A:PULse:WINdow:POLarity`` command.

        **Description:**
            - This command sets or queries the pulse trigger window polarity of the selected trigger
              Source. The instrument triggers when the signal exits the window. The command is
              available only when the option Inside > t is selected in the Window Event drop-dowm
              list and not available for the rest of the window events. The logic selection is
              available only when the polarity is set to Either.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:POLarity?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:POLarity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:POLarity {EITher|NEGAtive|POSITIVe}
            - TRIGger:A:PULse:WINdow:POLarity?

        **Info:**
            - ``EITher`` specifies positive or negative polarity.
            - ``NEGAtive`` specifies a negative polarity.
            - ``POSITIVe`` specifies a positive polarity.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:PULse:WINdow:POLarity:CH<x>`` command.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerAPulseWindowQualify:
        """Return the ``TRIGger:A:PULse:WINdow:QUAlify`` command.

        **Description:**
            - This command sets or queries the Window Trigger qualification. This is equivalent to
              selecting Window Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
              Trigger If Window drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:QUAlify?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:A:PULse:WINdow:QUAlify?

        **Info:**
            - ``OCCurs`` specifies a trigger if any detectable event occurs.
            - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
              patterns and thresholds set by the.
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def threshold(self) -> TriggerAPulseWindowThreshold:
        """Return the ``TRIGger:A:PULse:WINdow:THReshold`` command.

        **Description:**
            - This query-only command returns the upper and lower thresholds for the window trigger.
              This command query is equivalent to selecting Window Setup from the Trig menu and
              viewing the window trigger Upper Level and Lower Level settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:THReshold?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:THReshold?

        Sub-properties:
            - ``.both``: The ``TRIGger:A:PULse:WINdow:THReshold:BOTh`` command.
            - ``.high``: The ``TRIGger:A:PULse:WINdow:THReshold:HIGH`` command.
            - ``.low``: The ``TRIGger:A:PULse:WINdow:THReshold:LOW`` command.
        """
        return self._threshold

    @property
    def type(self) -> TriggerAPulseWindowType:
        """Return the ``TRIGger:A:PULse:WINdow:TYPe`` command.

        **Description:**
            - This command sets or queries the window trigger type. This command is equivalent to
              selecting Window Setup from the Trig menu and selecting Outside Limits or Inside
              Limits in the Trigger When section.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:TYPe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:TYPe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WINdow:TYPe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:TYPe {INSide|OUTside}
            - TRIGger:A:PULse:WINdow:TYPe?

        **Info:**
            - ``INSide`` argument causes a trigger event to occur when a pulse enters the window
              defined by the upper and lower thresholds.
            - ``OUTside`` argument causes a trigger event to occur when a pulse goes outside the
              window defined by the upper and lower thresholds.
        """
        return self._type

    @property
    def when(self) -> TriggerAPulseWindowWhen:
        """Return the ``TRIGger:A:PULse:WINdow:WHEn`` command.

        **Description:**
            - This command sets or queries the window trigger violation qualification. This command
              is equivalent to selecting Window Setup from the Trig menu and selecting Logic,
              Occurs, or Wider than in the Trigger When box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:WHEn?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:WHEn?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WINdow:WHEn value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:WHEn {LOGIc|OCCurs|WIDERthan}
            - TRIGger:A:PULse:WINdow:WHEn?

        **Info:**
            - ``LOGIc`` argument specifies a trigger event when a window violation occurs on the AND
              of the logic channels.
            - ``OCCurs`` argument specifies a trigger event if any detectable window violation
              occurs.
            - ``WIDERthan`` specifies a trigger event if a window violation greater than the
              specified width occurs.
        """
        return self._when

    @property
    def width(self) -> TriggerAPulseWindowWidth:
        """Return the ``TRIGger:A:PULse:WINdow:WIDTH`` command.

        **Description:**
            - This command sets or queries the minimum width for a window violation. This command is
              equivalent to selecting Window Setup from the Trig menu, selecting Wider than in the
              Trigger When box, and setting the Width.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow:WIDTH?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow:WIDTH?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WINdow:WIDTH value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WINdow:WIDTH <NR3>
            - TRIGger:A:PULse:WINdow:WIDTH?

        **Info:**
            - ``<NR3>`` argument specifies the minimum width in seconds.
        """
        return self._width


class TriggerAPulseWidthWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WIDth:WHEn`` command.

    **Description:**
        - This command sets or queries whether to trigger on a pulse width that falls outside (or
          within) the specified range of limits. You can define or query trigger pulse width upper
          and lower limits using the ``TRIGger:A:PULse:WIDth:HIGHLimit`` and
          ``TRIGger:A:PULse:WIDth:LOWLimit`` commands. This command is equivalent to selecting Width
          Setup from the Trig menu and then choosing from the Trig When drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WIDth:WHEn?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WIDth:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WIDth:WHEn {OUTside|WIThin}
        - TRIGger:A:PULse:WIDth:WHEn?

    **Info:**
        - ``OUTside`` argument causes a trigger event the duration of the pulse is greater than the
          high limit or less than the low limit specified. The high and low limits are specified
          with the ``TRIGger:A:PULse:WIDth:HIGHLimit`` and ``TRIGger:A:PULse:WIDth:LOWLimit``
          commands respectively.
        - ``WIThin`` argument causes a trigger event when the duration of the pulse is within the
          high and low limits. The high and low limits are specified with the
          ``TRIGger:A:PULse:WIDth:HIGHLimit`` and ``TRIGger:A:PULse:WIDth:LOWLimit`` command
          respectively.
    """


class TriggerAPulseWidthQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WIDth:QUAlify`` command.

    **Description:**
        - This command sets or queries the Width Trigger qualification. This is equivalent to
          selecting Width Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
          Trigger If Width drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WIDth:QUAlify?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WIDth:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WIDth:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:A:PULse:WIDth:QUAlify?

    **Info:**
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerAPulseWidthPolarityChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WIDth:POLarity:CH<x>`` command.

    **Description:**
        - This command sets or queries the polarity for the A or B pulse width trigger for the
          channel. This command is equivalent to selecting Width Setup from the Trig menu and then
          selecting the pulse width trigger Polarity for the channel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:POLarity:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:WIDth:POLarity:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:WIDth:POLarity:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WIDth:POLarity:CH<x> {NEGAtive|POSITIVe}
        - TRIGger:A:PULse:WIDth:POLarity:CH<x>?

    **Info:**
        - ``NEGAtive`` specifies a negative pulse.
        - ``POSITIVe`` specifies a positive pulse.
    """


class TriggerAPulseWidthPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WIDth:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity for the width trigger. This command is
          equivalent to selecting Width Setup from the Trig menu and selecting the Polarity.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WIDth:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WIDth:POLarity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WIDth:POLarity {NEGAtive|POSITIVe}
        - TRIGger:A:PULse:WIDth:POLarity?

    **Info:**
        - ``NEGAtive`` specifies a negative pulse.
        - ``POSITIVe`` specifies a positive pulse.

    Properties:
        - ``.ch``: The ``TRIGger:A:PULse:WIDth:POLarity:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerAPulseWidthPolarityChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerAPulseWidthPolarityChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerAPulseWidthPolarityChannel]:
        """Return the ``TRIGger:A:PULse:WIDth:POLarity:CH<x>`` command.

        **Description:**
            - This command sets or queries the polarity for the A or B pulse width trigger for the
              channel. This command is equivalent to selecting Width Setup from the Trig menu and
              then selecting the pulse width trigger Polarity for the channel.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:POLarity:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:WIDth:POLarity:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WIDth:POLarity:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WIDth:POLarity:CH<x> {NEGAtive|POSITIVe}
            - TRIGger:A:PULse:WIDth:POLarity:CH<x>?

        **Info:**
            - ``NEGAtive`` specifies a negative pulse.
            - ``POSITIVe`` specifies a positive pulse.
        """
        return self._ch


class TriggerAPulseWidthLowpassfilter(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WIDth:LOWPASSfilter`` command.

    **Description:**
        - This command turns on or turn off the low­pass filter feature for pulse width trigger.
          This allows triggering in the presence of high­ frequency signal edges.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:LOWPASSfilter?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WIDth:LOWPASSfilter?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:WIDth:LOWPASSfilter value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WIDth:LOWPASSfilter {ON|OFF}
        - TRIGger:A:PULse:WIDth:LOWPASSfilter?

    **Info:**
        - ``ON`` enables low­pass filter feature.
        - ``OFF`` disables low­pass filter feature.
    """


class TriggerAPulseWidthLowlimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WIDth:LOWLimit`` command.

    **Description:**
        - This command sets or queries the lower limit for the width trigger. This command is
          equivalent to selecting Width Setup from the Trig menu and setting the pulse Lower Limit.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:LOWLimit?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WIDth:LOWLimit?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WIDth:LOWLimit value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WIDth:LOWLimit <NR3>
        - TRIGger:A:PULse:WIDth:LOWLimit?

    **Info:**
        - ``<NR3>`` specifies the A pulse width trigger lower limit in seconds.
    """


class TriggerAPulseWidthHighlimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:WIDth:HIGHLimit`` command.

    **Description:**
        - This command sets or queries the upper limit for the width trigger. This command is
          equivalent to selecting Width Setup from the Trig menu and setting the Upper Limit.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:HIGHLimit?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WIDth:HIGHLimit?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WIDth:HIGHLimit value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WIDth:HIGHLimit <NR3>
        - TRIGger:A:PULse:WIDth:HIGHLimit?

    **Info:**
        - ``<NR3>`` specifies the width trigger upper limit in seconds.
    """


class TriggerAPulseWidth(SCPICmdRead):
    """The ``TRIGger:A:PULse:WIDth`` command.

    **Description:**
        - This query-only command returns the width parameters for the pulse width trigger. This
          command is equivalent to selecting Width Setup from the Trig menu and then viewing the
          current pulse width trigger Lower Limit, Upper Limit, Trig When and Polarity settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WIDth?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:WIDth?

    Properties:
        - ``.highlimit``: The ``TRIGger:A:PULse:WIDth:HIGHLimit`` command.
        - ``.lowlimit``: The ``TRIGger:A:PULse:WIDth:LOWLimit`` command.
        - ``.lowpassfilter``: The ``TRIGger:A:PULse:WIDth:LOWPASSfilter`` command.
        - ``.polarity``: The ``TRIGger:A:PULse:WIDth:POLarity`` command.
        - ``.qualify``: The ``TRIGger:A:PULse:WIDth:QUAlify`` command.
        - ``.when``: The ``TRIGger:A:PULse:WIDth:WHEn`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._highlimit = TriggerAPulseWidthHighlimit(device, f"{self._cmd_syntax}:HIGHLimit")
        self._lowlimit = TriggerAPulseWidthLowlimit(device, f"{self._cmd_syntax}:LOWLimit")
        self._lowpassfilter = TriggerAPulseWidthLowpassfilter(
            device, f"{self._cmd_syntax}:LOWPASSfilter"
        )
        self._polarity = TriggerAPulseWidthPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerAPulseWidthQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._when = TriggerAPulseWidthWhen(device, f"{self._cmd_syntax}:WHEn")

    @property
    def highlimit(self) -> TriggerAPulseWidthHighlimit:
        """Return the ``TRIGger:A:PULse:WIDth:HIGHLimit`` command.

        **Description:**
            - This command sets or queries the upper limit for the width trigger. This command is
              equivalent to selecting Width Setup from the Trig menu and setting the Upper Limit.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:HIGHLimit?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WIDth:HIGHLimit?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WIDth:HIGHLimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WIDth:HIGHLimit <NR3>
            - TRIGger:A:PULse:WIDth:HIGHLimit?

        **Info:**
            - ``<NR3>`` specifies the width trigger upper limit in seconds.
        """
        return self._highlimit

    @property
    def lowlimit(self) -> TriggerAPulseWidthLowlimit:
        """Return the ``TRIGger:A:PULse:WIDth:LOWLimit`` command.

        **Description:**
            - This command sets or queries the lower limit for the width trigger. This command is
              equivalent to selecting Width Setup from the Trig menu and setting the pulse Lower
              Limit.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:LOWLimit?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WIDth:LOWLimit?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WIDth:LOWLimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WIDth:LOWLimit <NR3>
            - TRIGger:A:PULse:WIDth:LOWLimit?

        **Info:**
            - ``<NR3>`` specifies the A pulse width trigger lower limit in seconds.
        """
        return self._lowlimit

    @property
    def lowpassfilter(self) -> TriggerAPulseWidthLowpassfilter:
        """Return the ``TRIGger:A:PULse:WIDth:LOWPASSfilter`` command.

        **Description:**
            - This command turns on or turn off the low­pass filter feature for pulse width trigger.
              This allows triggering in the presence of high­ frequency signal edges.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:LOWPASSfilter?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:WIDth:LOWPASSfilter?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WIDth:LOWPASSfilter value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WIDth:LOWPASSfilter {ON|OFF}
            - TRIGger:A:PULse:WIDth:LOWPASSfilter?

        **Info:**
            - ``ON`` enables low­pass filter feature.
            - ``OFF`` disables low­pass filter feature.
        """
        return self._lowpassfilter

    @property
    def polarity(self) -> TriggerAPulseWidthPolarity:
        """Return the ``TRIGger:A:PULse:WIDth:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity for the width trigger. This command is
              equivalent to selecting Width Setup from the Trig menu and selecting the Polarity.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:POLarity?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WIDth:POLarity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WIDth:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WIDth:POLarity {NEGAtive|POSITIVe}
            - TRIGger:A:PULse:WIDth:POLarity?

        **Info:**
            - ``NEGAtive`` specifies a negative pulse.
            - ``POSITIVe`` specifies a positive pulse.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:PULse:WIDth:POLarity:CH<x>`` command.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerAPulseWidthQualify:
        """Return the ``TRIGger:A:PULse:WIDth:QUAlify`` command.

        **Description:**
            - This command sets or queries the Width Trigger qualification. This is equivalent to
              selecting Width Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
              Trigger If Width drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:QUAlify?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WIDth:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:WIDth:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WIDth:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:A:PULse:WIDth:QUAlify?

        **Info:**
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def when(self) -> TriggerAPulseWidthWhen:
        """Return the ``TRIGger:A:PULse:WIDth:WHEn`` command.

        **Description:**
            - This command sets or queries whether to trigger on a pulse width that falls outside
              (or within) the specified range of limits. You can define or query trigger pulse width
              upper and lower limits using the ``TRIGger:A:PULse:WIDth:HIGHLimit`` and
              ``TRIGger:A:PULse:WIDth:LOWLimit`` commands. This command is equivalent to selecting
              Width Setup from the Trig menu and then choosing from the Trig When drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth:WHEn?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WIDth:WHEn?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:WIDth:WHEn value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WIDth:WHEn {OUTside|WIThin}
            - TRIGger:A:PULse:WIDth:WHEn?

        **Info:**
            - ``OUTside`` argument causes a trigger event the duration of the pulse is greater than
              the high limit or less than the low limit specified. The high and low limits are
              specified with the ``TRIGger:A:PULse:WIDth:HIGHLimit`` and
              ``TRIGger:A:PULse:WIDth:LOWLimit`` commands respectively.
            - ``WIThin`` argument causes a trigger event when the duration of the pulse is within
              the high and low limits. The high and low limits are specified with the
              ``TRIGger:A:PULse:WIDth:HIGHLimit`` and ``TRIGger:A:PULse:WIDth:LOWLimit`` command
              respectively.
        """
        return self._when


class TriggerAPulseTransitionWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:TRANsition:WHEn`` command.

    **Description:**
        - This command sets or queries whether to check for a transitioning signal that is faster or
          slower than the specified delta time. This is equivalent to selecting Transition Setup
          from the Trig menu and choosing the Trigger When Transition Time setting.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:TRANsition:WHEn?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:TRANsition:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TRANsition:WHEn {FASTERthan|SLOWERthan}
        - TRIGger:A:PULse:TRANsition:WHEn?

    **Info:**
        - ``FASTERthan`` sets the trigger to occur when the transitioning signal is faster than the
          set volts/second rate.
        - ``SLOWERthan`` sets the trigger to occur when the transitioning signal is slower than the
          set volts/second rate.
    """


class TriggerAPulseTransitionThresholdLow(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:TRANsition:THReshold:LOW`` command.

    **Description:**
        - This command sets or queries the lower (most negative) transition trigger threshold. This
          command is equivalent to selecting Transition Setup from the Trig menu and setting the
          desired Lower Level voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition:THReshold:LOW?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:TRANsition:THReshold:LOW?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:TRANsition:THReshold:LOW value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TRANsition:THReshold:LOW <NR3>
        - TRIGger:A:PULse:TRANsition:THReshold:LOW?

    **Info:**
        - ``<NR3>`` specifies the lower threshold in volts.
    """


class TriggerAPulseTransitionThresholdHigh(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:TRANsition:THReshold:HIGH`` command.

    **Description:**
        - This command sets or queries the upper (most positive) transition trigger threshold. This
          command is equivalent to selecting Transition Setup from the Trig menu and then setting
          the desired Upper Level voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition:THReshold:HIGH?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:TRANsition:THReshold:HIGH?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:TRANsition:THReshold:HIGH value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TRANsition:THReshold:HIGH <NR3>
        - TRIGger:A:PULse:TRANsition:THReshold:HIGH?

    **Info:**
        - ``<NR3>`` specifies the upper threshold in volts.
    """


class TriggerAPulseTransitionThresholdBoth(SCPICmdWrite):
    """The ``TRIGger:A:PULse:TRANsition:THReshold:BOTh`` command.

    **Description:**
        - This command (no query form) sets the upper and lower thresholds for the transition
          trigger. This command is equivalent to selecting Transition Setup from the Trig menu and
          setting the desired Upper Level and Lower Level voltages.

    **Usage:**
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:TRANsition:THReshold:BOTh value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TRANsition:THReshold:BOTh {TTL|ECL}

    **Info:**
        - ``TTL`` sets the upper and lower threshold to the nominal TTL voltage levels.
        - ``ECL`` sets the upper and the lower threshold to the nominal ECL voltage levels.
    """


class TriggerAPulseTransitionThreshold(SCPICmdRead):
    """The ``TRIGger:A:PULse:TRANsition:THReshold`` command.

    **Description:**
        - This query-only command returns the upper and lower threshold limits for the transition
          time trigger. This command is equivalent to selecting Transition Setup from the Trig menu
          and viewing the Upper Level and Lower Level voltage settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition:THReshold?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:TRANsition:THReshold?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TRANsition:THReshold?

    Properties:
        - ``.both``: The ``TRIGger:A:PULse:TRANsition:THReshold:BOTh`` command.
        - ``.high``: The ``TRIGger:A:PULse:TRANsition:THReshold:HIGH`` command.
        - ``.low``: The ``TRIGger:A:PULse:TRANsition:THReshold:LOW`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._both = TriggerAPulseTransitionThresholdBoth(device, f"{self._cmd_syntax}:BOTh")
        self._high = TriggerAPulseTransitionThresholdHigh(device, f"{self._cmd_syntax}:HIGH")
        self._low = TriggerAPulseTransitionThresholdLow(device, f"{self._cmd_syntax}:LOW")

    @property
    def both(self) -> TriggerAPulseTransitionThresholdBoth:
        """Return the ``TRIGger:A:PULse:TRANsition:THReshold:BOTh`` command.

        **Description:**
            - This command (no query form) sets the upper and lower thresholds for the transition
              trigger. This command is equivalent to selecting Transition Setup from the Trig menu
              and setting the desired Upper Level and Lower Level voltages.

        **Usage:**
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:THReshold:BOTh value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TRANsition:THReshold:BOTh {TTL|ECL}

        **Info:**
            - ``TTL`` sets the upper and lower threshold to the nominal TTL voltage levels.
            - ``ECL`` sets the upper and the lower threshold to the nominal ECL voltage levels.
        """
        return self._both

    @property
    def high(self) -> TriggerAPulseTransitionThresholdHigh:
        """Return the ``TRIGger:A:PULse:TRANsition:THReshold:HIGH`` command.

        **Description:**
            - This command sets or queries the upper (most positive) transition trigger threshold.
              This command is equivalent to selecting Transition Setup from the Trig menu and then
              setting the desired Upper Level voltage.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:PULse:TRANsition:THReshold:HIGH?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:THReshold:HIGH?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:THReshold:HIGH value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TRANsition:THReshold:HIGH <NR3>
            - TRIGger:A:PULse:TRANsition:THReshold:HIGH?

        **Info:**
            - ``<NR3>`` specifies the upper threshold in volts.
        """
        return self._high

    @property
    def low(self) -> TriggerAPulseTransitionThresholdLow:
        """Return the ``TRIGger:A:PULse:TRANsition:THReshold:LOW`` command.

        **Description:**
            - This command sets or queries the lower (most negative) transition trigger threshold.
              This command is equivalent to selecting Transition Setup from the Trig menu and
              setting the desired Lower Level voltage.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:PULse:TRANsition:THReshold:LOW?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:THReshold:LOW?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:THReshold:LOW value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TRANsition:THReshold:LOW <NR3>
            - TRIGger:A:PULse:TRANsition:THReshold:LOW?

        **Info:**
            - ``<NR3>`` specifies the lower threshold in volts.
        """
        return self._low


class TriggerAPulseTransitionQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:TRANsition:QUAlify`` command.

    **Description:**
        - This command sets or queries the Transition Time Trigger qualification. This is equivalent
          to selecting Transition Setup from the Trig menu and selecting Occurs, Logic, or Bus in
          the Trigger If Transition drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:TRANsition:QUAlify?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:TRANsition:QUAlify value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TRANsition:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:A:PULse:TRANsition:QUAlify?

    **Info:**
        - ``OCCurs`` specifies a trigger if any violations occur.
        - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
          patterns and thresholds set by the.
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerAPulseTransitionPolarityChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:TRANsition:POLarity:CH<x>`` command.

    **Description:**
        - This command sets or queries the polarity for the A or B pulse transition trigger for the
          channel. This command is equivalent to selecting Transition Setup from the Trig menu and
          then choosing from the Polarity pull-down list for the channel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition:POLarity:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:TRANsition:POLarity:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:TRANsition:POLarity:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TRANsition:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
        - TRIGger:A:PULse:TRANsition:POLarity:CH<x>?

    **Info:**
        - ``EITher`` indicates either positive or negative polarity.
        - ``NEGAtive`` indicates that a pulse edge must traverse from the upper (most positive) to
          lower (most negative) level for transition triggering to occur.
        - ``POSITIVe`` indicates that a pulse edge must traverse from the lower (most negative) to
          higher (post positive) level for transition triggering to occur.
    """


class TriggerAPulseTransitionPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:TRANsition:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity for the transition trigger. This command is
          equivalent to selecting Transition Setup from the Trig menu and choosing from the Polarity
          drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition:POLarity?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:TRANsition:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:TRANsition:POLarity value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TRANsition:POLarity {POSITIVe|NEGAtive|EITher}
        - TRIGger:A:PULse:TRANsition:POLarity?

    **Info:**
        - ``POSITIVe`` indicates that a pulse edge must traverse from the lower (most negative) to
          higher (most positive) level for transition triggering to occur.
        - ``NEGAtive`` indicates that a pulse edge must traverse from the upper (most positive) to
          lower (most negative) level for transition triggering to occur.
        - ``EITher`` indicates either positive or negative polarity.

    Properties:
        - ``.ch``: The ``TRIGger:A:PULse:TRANsition:POLarity:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerAPulseTransitionPolarityChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerAPulseTransitionPolarityChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerAPulseTransitionPolarityChannel]:
        """Return the ``TRIGger:A:PULse:TRANsition:POLarity:CH<x>`` command.

        **Description:**
            - This command sets or queries the polarity for the A or B pulse transition trigger for
              the channel. This command is equivalent to selecting Transition Setup from the Trig
              menu and then choosing from the Polarity pull-down list for the channel.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:PULse:TRANsition:POLarity:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:POLarity:CH<x>?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:POLarity:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TRANsition:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
            - TRIGger:A:PULse:TRANsition:POLarity:CH<x>?

        **Info:**
            - ``EITher`` indicates either positive or negative polarity.
            - ``NEGAtive`` indicates that a pulse edge must traverse from the upper (most positive)
              to lower (most negative) level for transition triggering to occur.
            - ``POSITIVe`` indicates that a pulse edge must traverse from the lower (most negative)
              to higher (post positive) level for transition triggering to occur.
        """
        return self._ch


class TriggerAPulseTransitionDeltatime(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:TRANsition:DELTATime`` command.

    **Description:**
        - This command sets or queries the delta time used in calculating the transition value for
          the transition trigger. This is equivalent to selecting Transition Setup from the Trig
          menu and setting the Time.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition:DELTATime?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:TRANsition:DELTATime?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:TRANsition:DELTATime value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TRANsition:DELTATime <NR3>
        - TRIGger:A:PULse:TRANsition:DELTATime?

    **Info:**
        - ``<NR3>`` specifies the delta time in seconds.
    """


class TriggerAPulseTransition(SCPICmdRead):
    """The ``TRIGger:A:PULse:TRANsition`` command.

    **Description:**
        - This query-only command returns delta time, polarity, and both upper and lower threshold
          limits for the transition time trigger. This command is equivalent to selecting Transition
          Setup from the Trig menu and then viewing the current transition settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:TRANsition?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TRANsition?

    Properties:
        - ``.deltatime``: The ``TRIGger:A:PULse:TRANsition:DELTATime`` command.
        - ``.polarity``: The ``TRIGger:A:PULse:TRANsition:POLarity`` command.
        - ``.qualify``: The ``TRIGger:A:PULse:TRANsition:QUAlify`` command.
        - ``.threshold``: The ``TRIGger:A:PULse:TRANsition:THReshold`` command.
        - ``.when``: The ``TRIGger:A:PULse:TRANsition:WHEn`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._deltatime = TriggerAPulseTransitionDeltatime(device, f"{self._cmd_syntax}:DELTATime")
        self._polarity = TriggerAPulseTransitionPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerAPulseTransitionQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._threshold = TriggerAPulseTransitionThreshold(device, f"{self._cmd_syntax}:THReshold")
        self._when = TriggerAPulseTransitionWhen(device, f"{self._cmd_syntax}:WHEn")

    @property
    def deltatime(self) -> TriggerAPulseTransitionDeltatime:
        """Return the ``TRIGger:A:PULse:TRANsition:DELTATime`` command.

        **Description:**
            - This command sets or queries the delta time used in calculating the transition value
              for the transition trigger. This is equivalent to selecting Transition Setup from the
              Trig menu and setting the Time.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition:DELTATime?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:DELTATime?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:DELTATime value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TRANsition:DELTATime <NR3>
            - TRIGger:A:PULse:TRANsition:DELTATime?

        **Info:**
            - ``<NR3>`` specifies the delta time in seconds.
        """
        return self._deltatime

    @property
    def polarity(self) -> TriggerAPulseTransitionPolarity:
        """Return the ``TRIGger:A:PULse:TRANsition:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity for the transition trigger. This command is
              equivalent to selecting Transition Setup from the Trig menu and choosing from the
              Polarity drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition:POLarity?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:POLarity?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TRANsition:POLarity {POSITIVe|NEGAtive|EITher}
            - TRIGger:A:PULse:TRANsition:POLarity?

        **Info:**
            - ``POSITIVe`` indicates that a pulse edge must traverse from the lower (most negative)
              to higher (most positive) level for transition triggering to occur.
            - ``NEGAtive`` indicates that a pulse edge must traverse from the upper (most positive)
              to lower (most negative) level for transition triggering to occur.
            - ``EITher`` indicates either positive or negative polarity.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:PULse:TRANsition:POLarity:CH<x>`` command.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerAPulseTransitionQualify:
        """Return the ``TRIGger:A:PULse:TRANsition:QUAlify`` command.

        **Description:**
            - This command sets or queries the Transition Time Trigger qualification. This is
              equivalent to selecting Transition Setup from the Trig menu and selecting Occurs,
              Logic, or Bus in the Trigger If Transition drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition:QUAlify?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:QUAlify?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TRANsition:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:A:PULse:TRANsition:QUAlify?

        **Info:**
            - ``OCCurs`` specifies a trigger if any violations occur.
            - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
              patterns and thresholds set by the.
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def threshold(self) -> TriggerAPulseTransitionThreshold:
        """Return the ``TRIGger:A:PULse:TRANsition:THReshold`` command.

        **Description:**
            - This query-only command returns the upper and lower threshold limits for the
              transition time trigger. This command is equivalent to selecting Transition Setup from
              the Trig menu and viewing the Upper Level and Lower Level voltage settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition:THReshold?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TRANsition:THReshold?

        Sub-properties:
            - ``.both``: The ``TRIGger:A:PULse:TRANsition:THReshold:BOTh`` command.
            - ``.high``: The ``TRIGger:A:PULse:TRANsition:THReshold:HIGH`` command.
            - ``.low``: The ``TRIGger:A:PULse:TRANsition:THReshold:LOW`` command.
        """
        return self._threshold

    @property
    def when(self) -> TriggerAPulseTransitionWhen:
        """Return the ``TRIGger:A:PULse:TRANsition:WHEn`` command.

        **Description:**
            - This command sets or queries whether to check for a transitioning signal that is
              faster or slower than the specified delta time. This is equivalent to selecting
              Transition Setup from the Trig menu and choosing the Trigger When Transition Time
              setting.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition:WHEn?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:TRANsition:WHEn?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:TRANsition:WHEn value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TRANsition:WHEn {FASTERthan|SLOWERthan}
            - TRIGger:A:PULse:TRANsition:WHEn?

        **Info:**
            - ``FASTERthan`` sets the trigger to occur when the transitioning signal is faster than
              the set volts/second rate.
            - ``SLOWERthan`` sets the trigger to occur when the transitioning signal is slower than
              the set volts/second rate.
        """
        return self._when


class TriggerAPulseTimeoutTime(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:TIMEOut:TIMe`` command.

    **Description:**
        - This command sets or queries the pulse timeout trigger time (measured in seconds). This
          command is equivalent to selecting Timeout Setup from the Trig menu and setting a value
          for Timer.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TIMEOut:TIMe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:TIMEOut:TIMe?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:TIMEOut:TIMe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TIMEOut:TIMe <NR3>
        - TRIGger:A:PULse:TIMEOut:TIMe?

    **Info:**
        - ``<NR3>`` argument specifies the timeout period in seconds.
    """


class TriggerAPulseTimeoutQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:TIMEOut:QUAlify`` command.

    **Description:**
        - This command sets or queries the Timeout Trigger qualification. This is equivalent to
          selecting Timeout Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
          Trigger If Timeout drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TIMEOut:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:TIMEOut:QUAlify?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:TIMEOut:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TIMEOut:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:A:PULse:TIMEOut:QUAlify?

    **Info:**
        - ``OCCurs`` specifies a trigger if any detectable event occurs.
        - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
          patterns and thresholds set by the.
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerAPulseTimeoutPolarityChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:TIMEOut:POLarity:CH<x>`` command.

    **Description:**
        - This command sets or queries the polarity for the A or B pulse timeout trigger for the
          channel. This command is equivalent to selecting Transition Setup from the Trig menu and
          then setting the desired Polarity for the channel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TIMEOut:POLarity:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:TIMEOut:POLarity:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:TIMEOut:POLarity:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TIMEOut:POLarity:CH<x> {STAYSHigh|STAYSLow|EITher}
        - TRIGger:A:PULse:TIMEOut:POLarity:CH<x>?

    **Info:**
        - ``STAYSHigh`` indicates that a pulse edge must stay high (positive) for the required time
          period to permit time out triggering to occur. This is the default polarity.
        - ``STAYSLow`` indicates that a pulse edge must stay low (negative) for the required time
          period to permit time out triggering to occur.
        - ``EITher`` indicates that the polarity of the time out trigger can stay either high or low
          (positive or negative) for the required time period to permit time out triggering to
          occur.
    """


class TriggerAPulseTimeoutPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:TIMEOut:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity for the pulse timeout trigger. This command is
          equivalent to selecting Timeout Setup from the Trig menu and setting the desired polarity
          in the Trigger When box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TIMEOut:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:TIMEOut:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:TIMEOut:POLarity value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TIMEOut:POLarity {STAYSHigh|STAYSLow|EITher}
        - TRIGger:A:PULse:TIMEOut:POLarity?

    **Info:**
        - ``STAYSHigh`` indicates that a pulse edge must stay high (positive) for the required time
          period to permit timeout triggering to occur. This is the default polarity.
        - ``STAYSLow`` indicates that a pulse edge must stay low (negative) for the required time
          period to permit timeout triggering to occur.
        - ``EITher`` indicates that the polarity of the timeout trigger can stay either high or low
          (positive or negative) for the required time period to permit time out triggering to
          occur.

    Properties:
        - ``.ch``: The ``TRIGger:A:PULse:TIMEOut:POLarity:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerAPulseTimeoutPolarityChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerAPulseTimeoutPolarityChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerAPulseTimeoutPolarityChannel]:
        """Return the ``TRIGger:A:PULse:TIMEOut:POLarity:CH<x>`` command.

        **Description:**
            - This command sets or queries the polarity for the A or B pulse timeout trigger for the
              channel. This command is equivalent to selecting Transition Setup from the Trig menu
              and then setting the desired Polarity for the channel.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:PULse:TIMEOut:POLarity:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:TIMEOut:POLarity:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:TIMEOut:POLarity:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TIMEOut:POLarity:CH<x> {STAYSHigh|STAYSLow|EITher}
            - TRIGger:A:PULse:TIMEOut:POLarity:CH<x>?

        **Info:**
            - ``STAYSHigh`` indicates that a pulse edge must stay high (positive) for the required
              time period to permit time out triggering to occur. This is the default polarity.
            - ``STAYSLow`` indicates that a pulse edge must stay low (negative) for the required
              time period to permit time out triggering to occur.
            - ``EITher`` indicates that the polarity of the time out trigger can stay either high or
              low (positive or negative) for the required time period to permit time out triggering
              to occur.
        """
        return self._ch


class TriggerAPulseTimeoutLowpassfilter(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:TIMEOut:LOWPASSfilter`` command.

    **Description:**
        - This command turns on or turns off the low­pass filter feature for Timeout trigger. This
          allows triggering in the presence of high­ frequency signal edges.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TIMEOut:LOWPASSfilter?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:TIMEOut:LOWPASSfilter?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:TIMEOut:LOWPASSfilter value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TIMEOut:LOWPASSfilter {ON|OFF}
        - TRIGger:A:PULse:TIMEOut:LOWPASSfilter?

    **Info:**
        - ``ON`` enables low­pass filter feature.
        - ``OFF`` disables low­pass filter feature.
    """


class TriggerAPulseTimeout(SCPICmdRead):
    """The ``TRIGger:A:PULse:TIMEOut`` command.

    **Description:**
        - This query-only command returns the polarity and time-out duration for the pulse timeout
          trigger. This command is equivalent to selecting Timeout Setup from the Trig menu and
          viewing the polarity in the Trigger When box and the Timer setting.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TIMEOut?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:TIMEOut?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:TIMEOut?

    Properties:
        - ``.lowpassfilter``: The ``TRIGger:A:PULse:TIMEOut:LOWPASSfilter`` command.
        - ``.polarity``: The ``TRIGger:A:PULse:TIMEOut:POLarity`` command.
        - ``.qualify``: The ``TRIGger:A:PULse:TIMEOut:QUAlify`` command.
        - ``.time``: The ``TRIGger:A:PULse:TIMEOut:TIMe`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._lowpassfilter = TriggerAPulseTimeoutLowpassfilter(
            device, f"{self._cmd_syntax}:LOWPASSfilter"
        )
        self._polarity = TriggerAPulseTimeoutPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerAPulseTimeoutQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._time = TriggerAPulseTimeoutTime(device, f"{self._cmd_syntax}:TIMe")

    @property
    def lowpassfilter(self) -> TriggerAPulseTimeoutLowpassfilter:
        """Return the ``TRIGger:A:PULse:TIMEOut:LOWPASSfilter`` command.

        **Description:**
            - This command turns on or turns off the low­pass filter feature for Timeout trigger.
              This allows triggering in the presence of high­ frequency signal edges.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TIMEOut:LOWPASSfilter?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:TIMEOut:LOWPASSfilter?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:TIMEOut:LOWPASSfilter value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TIMEOut:LOWPASSfilter {ON|OFF}
            - TRIGger:A:PULse:TIMEOut:LOWPASSfilter?

        **Info:**
            - ``ON`` enables low­pass filter feature.
            - ``OFF`` disables low­pass filter feature.
        """
        return self._lowpassfilter

    @property
    def polarity(self) -> TriggerAPulseTimeoutPolarity:
        """Return the ``TRIGger:A:PULse:TIMEOut:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity for the pulse timeout trigger. This command
              is equivalent to selecting Timeout Setup from the Trig menu and setting the desired
              polarity in the Trigger When box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TIMEOut:POLarity?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:TIMEOut:POLarity?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:TIMEOut:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TIMEOut:POLarity {STAYSHigh|STAYSLow|EITher}
            - TRIGger:A:PULse:TIMEOut:POLarity?

        **Info:**
            - ``STAYSHigh`` indicates that a pulse edge must stay high (positive) for the required
              time period to permit timeout triggering to occur. This is the default polarity.
            - ``STAYSLow`` indicates that a pulse edge must stay low (negative) for the required
              time period to permit timeout triggering to occur.
            - ``EITher`` indicates that the polarity of the timeout trigger can stay either high or
              low (positive or negative) for the required time period to permit time out triggering
              to occur.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:PULse:TIMEOut:POLarity:CH<x>`` command.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerAPulseTimeoutQualify:
        """Return the ``TRIGger:A:PULse:TIMEOut:QUAlify`` command.

        **Description:**
            - This command sets or queries the Timeout Trigger qualification. This is equivalent to
              selecting Timeout Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
              Trigger If Timeout drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TIMEOut:QUAlify?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:TIMEOut:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:TIMEOut:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TIMEOut:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:A:PULse:TIMEOut:QUAlify?

        **Info:**
            - ``OCCurs`` specifies a trigger if any detectable event occurs.
            - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
              patterns and thresholds set by the.
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def time(self) -> TriggerAPulseTimeoutTime:
        """Return the ``TRIGger:A:PULse:TIMEOut:TIMe`` command.

        **Description:**
            - This command sets or queries the pulse timeout trigger time (measured in seconds).
              This command is equivalent to selecting Timeout Setup from the Trig menu and setting a
              value for Timer.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TIMEOut:TIMe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:TIMEOut:TIMe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:TIMEOut:TIMe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TIMEOut:TIMe <NR3>
            - TRIGger:A:PULse:TIMEOut:TIMe?

        **Info:**
            - ``<NR3>`` argument specifies the timeout period in seconds.
        """
        return self._time


class TriggerAPulseSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:SOUrce`` command.

    **Description:**
        - This command sets or queries the source for the pulse trigger. This source parameter
          applies to all classes of pulse triggers. This command is equivalent to selecting Event
          Trigger Setup from the Trig menu, selecting the pulse type (Glitch, Width, Runt, Timeout,
          or Transition), and then choosing the desired channel from the Source pull-down list. When
          an UltraSync stack is used, the mapped channels are used to both acquire waveform data and
          to trigger the oscilloscope. In the special case of an UltraSync stack master, additional
          channels are available for triggering. These are the unmapped channels. For an ATI
          UltraSync stack master, CH2, MCH1, and MCH3 can be used for triggering. For a 4-Channel
          UltraSync stack master, CH1, MCH2, MCH3, and MCH4 are available for triggering. The
          vertical min/max amplitude for these signals must be set up. A detailed discussion is
          provided in .

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:SOUrce?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:SOUrce {CH<x>|D<x>|MCH<x>}
        - TRIGger:A:PULse:SOUrce?

    **Info:**
        - ``CH<x>`` specifies one of the input channels, which range from 1 through 4.
        - ``D<x>`` specifies one of the digital inputs, which range from 0 through 15.
        - ``MCH<x>`` specifies one of the unmapped channels on the master when using an UltraSync
          stack. For details see.
    """


class TriggerAPulseRuntWidth(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:RUNT:WIDth`` command.

    **Description:**
        - This command sets or queries the minimum width for an Pulse Runt trigger. This command is
          equivalent to selecting Runt Setup from the Trig menu and then setting the Width.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:WIDth?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:WIDth?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:RUNT:WIDth value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:RUNT:WIDth <NR3>
        - TRIGger:A:PULse:RUNT:WIDth?

    **Info:**
        - ``<NR3>`` specifies the minimum width in seconds.
    """


class TriggerAPulseRuntWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:RUNT:WHEn`` command.

    **Description:**
        - This command sets or queries the type of pulse width the trigger checks for when it
          detects a runt. This is equivalent to selecting Runt Setup from the Trig menu and choosing
          the desired Trigger When setting from the drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:WHEn?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:RUNT:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:RUNT:WHEn {OCCurs|WIDERthan}
        - TRIGger:A:PULse:RUNT:WHEn?

    **Info:**
        - ``OCCurs`` argument specifies a trigger event if a runt of any detectable width occurs.
        - ``WIDERthan`` specifies a trigger event if a runt greater than the specified width occurs.
    """


class TriggerAPulseRuntThresholdLow(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:RUNT:THReshold:LOW`` command.

    **Description:**
        - This command sets or queries the lower limit for the pulse runt trigger. This command is
          equivalent to selecting Runt Setup from the Trig menu and then setting the Lower Level
          voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:THReshold:LOW?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:THReshold:LOW?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:RUNT:THReshold:LOW value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:RUNT:THReshold:LOW <NR3>
        - TRIGger:A:PULse:RUNT:THReshold:LOW?

    **Info:**
        - ``<NR3>`` specifies the threshold value in volts.
    """


class TriggerAPulseRuntThresholdHigh(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:RUNT:THReshold:HIGH`` command.

    **Description:**
        - This command sets or queries the upper limit for the pulse runt trigger. This command is
          equivalent to selecting Runt Setup from the Trig menu and setting the runt trigger Upper
          Level voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:THReshold:HIGH?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:THReshold:HIGH?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:RUNT:THReshold:HIGH value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:RUNT:THReshold:HIGH <NR3>
        - TRIGger:A:PULse:RUNT:THReshold:HIGH?

    **Info:**
        - ``<NR3>`` specifies the threshold value in volts.
    """


class TriggerAPulseRuntThresholdBoth(SCPICmdWrite):
    """The ``TRIGger:A:PULse:RUNT:THReshold:BOTh`` command.

    **Description:**
        - This command (no query form) sets the upper and lower switching thresholds for the pulse
          runt trigger. This command is equivalent to selecting Runt Setup from the Trig menu and
          then setting the Upper Level and Lower Level voltages.

    **Usage:**
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:RUNT:THReshold:BOTh value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:RUNT:THReshold:BOTh {TTL|ECL}

    **Info:**
        - ``TTL`` sets the upper and lower threshold to the nominal TTL voltage levels.
        - ``ECL`` sets the upper and lower threshold to the nominal ECL voltage levels.
    """


class TriggerAPulseRuntThreshold(SCPICmdRead):
    """The ``TRIGger:A:PULse:RUNT:THReshold`` command.

    **Description:**
        - This query-only command returns the upper and lower thresholds for the pulse runt trigger.
          This command query is equivalent to selecting Runt Setup from the Trig menu and then
          viewing the Upper Level and Lower Level settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:THReshold?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:THReshold?``
          query and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:RUNT:THReshold?

    Properties:
        - ``.both``: The ``TRIGger:A:PULse:RUNT:THReshold:BOTh`` command.
        - ``.high``: The ``TRIGger:A:PULse:RUNT:THReshold:HIGH`` command.
        - ``.low``: The ``TRIGger:A:PULse:RUNT:THReshold:LOW`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._both = TriggerAPulseRuntThresholdBoth(device, f"{self._cmd_syntax}:BOTh")
        self._high = TriggerAPulseRuntThresholdHigh(device, f"{self._cmd_syntax}:HIGH")
        self._low = TriggerAPulseRuntThresholdLow(device, f"{self._cmd_syntax}:LOW")

    @property
    def both(self) -> TriggerAPulseRuntThresholdBoth:
        """Return the ``TRIGger:A:PULse:RUNT:THReshold:BOTh`` command.

        **Description:**
            - This command (no query form) sets the upper and lower switching thresholds for the
              pulse runt trigger. This command is equivalent to selecting Runt Setup from the Trig
              menu and then setting the Upper Level and Lower Level voltages.

        **Usage:**
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:THReshold:BOTh value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:RUNT:THReshold:BOTh {TTL|ECL}

        **Info:**
            - ``TTL`` sets the upper and lower threshold to the nominal TTL voltage levels.
            - ``ECL`` sets the upper and lower threshold to the nominal ECL voltage levels.
        """
        return self._both

    @property
    def high(self) -> TriggerAPulseRuntThresholdHigh:
        """Return the ``TRIGger:A:PULse:RUNT:THReshold:HIGH`` command.

        **Description:**
            - This command sets or queries the upper limit for the pulse runt trigger. This command
              is equivalent to selecting Runt Setup from the Trig menu and setting the runt trigger
              Upper Level voltage.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:THReshold:HIGH?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:THReshold:HIGH?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:THReshold:HIGH value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:RUNT:THReshold:HIGH <NR3>
            - TRIGger:A:PULse:RUNT:THReshold:HIGH?

        **Info:**
            - ``<NR3>`` specifies the threshold value in volts.
        """
        return self._high

    @property
    def low(self) -> TriggerAPulseRuntThresholdLow:
        """Return the ``TRIGger:A:PULse:RUNT:THReshold:LOW`` command.

        **Description:**
            - This command sets or queries the lower limit for the pulse runt trigger. This command
              is equivalent to selecting Runt Setup from the Trig menu and then setting the Lower
              Level voltage.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:THReshold:LOW?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:THReshold:LOW?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:THReshold:LOW value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:RUNT:THReshold:LOW <NR3>
            - TRIGger:A:PULse:RUNT:THReshold:LOW?

        **Info:**
            - ``<NR3>`` specifies the threshold value in volts.
        """
        return self._low


class TriggerAPulseRuntQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:RUNT:QUAlify`` command.

    **Description:**
        - This command sets or queries the Runt Trigger qualification. This is equivalent to
          selecting Runt Setup from the Trig menu and selecting Occurs, Logic, or Bus in the Trigger
          If Runt drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:QUAlify?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:RUNT:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:RUNT:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:A:PULse:RUNT:QUAlify?

    **Info:**
        - ``OCCurs`` specifies a trigger if any detectable event occurs.
        - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
          patterns and thresholds set by the command.
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerAPulseRuntPolarityChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:RUNT:POLarity:CH<x>`` command.

    **Description:**
        - This command sets or queries the polarity for the A or B pulse runt trigger for the
          channel. This command is equivalent to selecting Runt Setup from the Trig menu and then
          choosing the Polarity setting for the channel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:POLarity:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:POLarity:CH<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:RUNT:POLarity:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:RUNT:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
        - TRIGger:A:PULse:RUNT:POLarity:CH<x>?

    **Info:**
        - ``EITher`` indicates either negative or positive polarity.
        - ``NEGAtive`` indicates that the falling edge crosses the high threshold and the rising
          edge recrosses the high threshold without either edge ever crossing the low threshold.
        - ``POSITIVe`` indicates that the rising edge crosses the low threshold and the falling edge
          recrosses the low threshold without either edge ever crossing the high threshold.
    """


class TriggerAPulseRuntPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:RUNT:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity for the A or B pulse runt trigger. This command
          is equivalent to selecting Runt Setup from the Trig menu and then choosing the Polarity
          setting.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:POLarity?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:RUNT:POLarity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:RUNT:POLarity {POSITIVe|NEGAtive|EITher}
        - TRIGger:A:PULse:RUNT:POLarity?

    **Info:**
        - ``POSITIVe`` indicates that the rising edge crosses the low threshold and the falling edge
          recrosses the low threshold without either edge ever crossing the high threshold.
        - ``NEGAtive`` indicates that the falling edge crosses the high threshold and the rising
          edge recrosses the high threshold without either edge ever crossing the low threshold.
        - ``EITher`` indicates either negative or positive polarity.

    Properties:
        - ``.ch``: The ``TRIGger:A:PULse:RUNT:POLarity:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerAPulseRuntPolarityChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerAPulseRuntPolarityChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerAPulseRuntPolarityChannel]:
        """Return the ``TRIGger:A:PULse:RUNT:POLarity:CH<x>`` command.

        **Description:**
            - This command sets or queries the polarity for the A or B pulse runt trigger for the
              channel. This command is equivalent to selecting Runt Setup from the Trig menu and
              then choosing the Polarity setting for the channel.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:POLarity:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:POLarity:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:POLarity:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:RUNT:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
            - TRIGger:A:PULse:RUNT:POLarity:CH<x>?

        **Info:**
            - ``EITher`` indicates either negative or positive polarity.
            - ``NEGAtive`` indicates that the falling edge crosses the high threshold and the rising
              edge recrosses the high threshold without either edge ever crossing the low threshold.
            - ``POSITIVe`` indicates that the rising edge crosses the low threshold and the falling
              edge recrosses the low threshold without either edge ever crossing the high threshold.
        """
        return self._ch


class TriggerAPulseRuntLogicThresholdChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x>`` command.

    **Description:**
        - This command sets or queries the A runt logic threshold for the channel specified by <x>,
          which can be 1, 2, 3, or 4. This is equivalent to selecting Runt Setup from the Trig menu
          and setting the runt logic threshold. While all channels can be set or queried, only
          channels 3 and 4 can be used if the runt source is channel 1 or 2. Similarly only channels
          1 and 2 can be used if the runt source is channel 3 or 4.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x> <NR3>
        - TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x>?

    **Info:**
        - ``<NR3>`` argument specifies the threshold in volts.
    """


class TriggerAPulseRuntLogicThreshold(SCPICmdRead):
    """The ``TRIGger:A:PULse:RUNT:LOGIc:THReshold`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:LOGIc:THReshold?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:RUNT:LOGIc:THReshold?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    Properties:
        - ``.ch``: The ``TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerAPulseRuntLogicThresholdChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerAPulseRuntLogicThresholdChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerAPulseRuntLogicThresholdChannel]:
        """Return the ``TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x>`` command.

        **Description:**
            - This command sets or queries the A runt logic threshold for the channel specified by
              <x>, which can be 1, 2, 3, or 4. This is equivalent to selecting Runt Setup from the
              Trig menu and setting the runt logic threshold. While all channels can be set or
              queried, only channels 3 and 4 can be used if the runt source is channel 1 or 2.
              Similarly only channels 1 and 2 can be used if the runt source is channel 3 or 4.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x>?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x> <NR3>
            - TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x>?

        **Info:**
            - ``<NR3>`` argument specifies the threshold in volts.
        """
        return self._ch


class TriggerAPulseRuntLogicInputChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x>`` command.

    **Description:**
        - This command sets or queries the A runt logic input for the channel specified by <x>,
          which can be 1, 2, 3, or 4. This is equivalent to setting the runt logic inputs from the
          Trigger When section in the Runt Trigger menu. While all channels can be set or queried,
          only channels 3 and 4 can be used if the runt source is channel 1 or 2. Similarly, only
          channels 1 and 2 can be used if the runt source is channel 3 or 4.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x> {HIGH|LOW|X}
        - TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x>?

    **Info:**
        - ``HIGH`` argument specifies logic high.
        - ``LOW`` argument specifies logic low.
        - ``X`` argument specifies a 'don't care' state.
    """


class TriggerAPulseRuntLogicInput(SCPICmdReadWithArguments):
    """The ``TRIGger:A:PULse:RUNT:LOGIc:INPUT`` command.

    **Description:**
        - This query-only command returns the current A runt pulse trigger logic input parameters.
          This query is equivalent to selecting Runt Setup from the Trig menu and then viewing the
          current settings.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:PULse:RUNT:LOGIc:INPUT? TRIGger:A:PULse:RUNT:LOGIcINPUT?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:RUNT:LOGIc:INPUT? TRIGger:A:PULse:RUNT:LOGIcINPUT?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:RUNT:LOGIc:INPUT? TRIGger:A:PULse:RUNT:LOGIcINPUT?

    Properties:
        - ``.ch``: The ``TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerAPulseRuntLogicInputChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerAPulseRuntLogicInputChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerAPulseRuntLogicInputChannel]:
        """Return the ``TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x>`` command.

        **Description:**
            - This command sets or queries the A runt logic input for the channel specified by <x>,
              which can be 1, 2, 3, or 4. This is equivalent to setting the runt logic inputs from
              the Trigger When section in the Runt Trigger menu. While all channels can be set or
              queried, only channels 3 and 4 can be used if the runt source is channel 1 or 2.
              Similarly, only channels 1 and 2 can be used if the runt source is channel 3 or 4.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x> {HIGH|LOW|X}
            - TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x>?

        **Info:**
            - ``HIGH`` argument specifies logic high.
            - ``LOW`` argument specifies logic low.
            - ``X`` argument specifies a 'don't care' state.
        """
        return self._ch


class TriggerAPulseRuntLogic(SCPICmdRead):
    """The ``TRIGger:A:PULse:RUNT:LOGIc`` command.

    **Description:**
        - This query-only command returns the current A runt trigger logic parameters. This query is
          equivalent to selecting Runt Setup from the Trig menu and then viewing the current
          settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:LOGIc?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:LOGIc?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:RUNT:LOGIc?

    Properties:
        - ``.input``: The ``TRIGger:A:PULse:RUNT:LOGIc:INPUT`` command.
        - ``.threshold``: The ``TRIGger:A:PULse:RUNT:LOGIc:THReshold`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._input = TriggerAPulseRuntLogicInput(device, f"{self._cmd_syntax}:INPUT")
        self._threshold = TriggerAPulseRuntLogicThreshold(device, f"{self._cmd_syntax}:THReshold")

    @property
    def input(self) -> TriggerAPulseRuntLogicInput:
        """Return the ``TRIGger:A:PULse:RUNT:LOGIc:INPUT`` command.

        **Description:**
            - This query-only command returns the current A runt pulse trigger logic input
              parameters. This query is equivalent to selecting Runt Setup from the Trig menu and
              then viewing the current settings.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:PULse:RUNT:LOGIc:INPUT? TRIGger:A:PULse:RUNT:LOGIcINPUT?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:LOGIc:INPUT? TRIGger:A:PULse:RUNT:LOGIcINPUT?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:RUNT:LOGIc:INPUT? TRIGger:A:PULse:RUNT:LOGIcINPUT?

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:PULse:RUNT:LOGIc:INPUT:CH<x>`` command.
        """
        return self._input

    @property
    def threshold(self) -> TriggerAPulseRuntLogicThreshold:
        """Return the ``TRIGger:A:PULse:RUNT:LOGIc:THReshold`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:LOGIc:THReshold?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:LOGIc:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:PULse:RUNT:LOGIc:THReshold:CH<x>`` command.
        """
        return self._threshold


class TriggerAPulseRunt(SCPICmdRead):
    """The ``TRIGger:A:PULse:RUNT`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.logic``: The ``TRIGger:A:PULse:RUNT:LOGIc`` command.
        - ``.polarity``: The ``TRIGger:A:PULse:RUNT:POLarity`` command.
        - ``.qualify``: The ``TRIGger:A:PULse:RUNT:QUAlify`` command.
        - ``.threshold``: The ``TRIGger:A:PULse:RUNT:THReshold`` command.
        - ``.when``: The ``TRIGger:A:PULse:RUNT:WHEn`` command.
        - ``.width``: The ``TRIGger:A:PULse:RUNT:WIDth`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._logic = TriggerAPulseRuntLogic(device, f"{self._cmd_syntax}:LOGIc")
        self._polarity = TriggerAPulseRuntPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerAPulseRuntQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._threshold = TriggerAPulseRuntThreshold(device, f"{self._cmd_syntax}:THReshold")
        self._when = TriggerAPulseRuntWhen(device, f"{self._cmd_syntax}:WHEn")
        self._width = TriggerAPulseRuntWidth(device, f"{self._cmd_syntax}:WIDth")

    @property
    def logic(self) -> TriggerAPulseRuntLogic:
        """Return the ``TRIGger:A:PULse:RUNT:LOGIc`` command.

        **Description:**
            - This query-only command returns the current A runt trigger logic parameters. This
              query is equivalent to selecting Runt Setup from the Trig menu and then viewing the
              current settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:LOGIc?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:LOGIc?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:RUNT:LOGIc?

        Sub-properties:
            - ``.input``: The ``TRIGger:A:PULse:RUNT:LOGIc:INPUT`` command.
            - ``.threshold``: The ``TRIGger:A:PULse:RUNT:LOGIc:THReshold`` command tree.
        """
        return self._logic

    @property
    def polarity(self) -> TriggerAPulseRuntPolarity:
        """Return the ``TRIGger:A:PULse:RUNT:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity for the A or B pulse runt trigger. This
              command is equivalent to selecting Runt Setup from the Trig menu and then choosing the
              Polarity setting.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:POLarity?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:POLarity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:RUNT:POLarity {POSITIVe|NEGAtive|EITher}
            - TRIGger:A:PULse:RUNT:POLarity?

        **Info:**
            - ``POSITIVe`` indicates that the rising edge crosses the low threshold and the falling
              edge recrosses the low threshold without either edge ever crossing the high threshold.
            - ``NEGAtive`` indicates that the falling edge crosses the high threshold and the rising
              edge recrosses the high threshold without either edge ever crossing the low threshold.
            - ``EITher`` indicates either negative or positive polarity.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:PULse:RUNT:POLarity:CH<x>`` command.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerAPulseRuntQualify:
        """Return the ``TRIGger:A:PULse:RUNT:QUAlify`` command.

        **Description:**
            - This command sets or queries the Runt Trigger qualification. This is equivalent to
              selecting Runt Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
              Trigger If Runt drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:QUAlify?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:RUNT:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:RUNT:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:A:PULse:RUNT:QUAlify?

        **Info:**
            - ``OCCurs`` specifies a trigger if any detectable event occurs.
            - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
              patterns and thresholds set by the command.
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def threshold(self) -> TriggerAPulseRuntThreshold:
        """Return the ``TRIGger:A:PULse:RUNT:THReshold`` command.

        **Description:**
            - This query-only command returns the upper and lower thresholds for the pulse runt
              trigger. This command query is equivalent to selecting Runt Setup from the Trig menu
              and then viewing the Upper Level and Lower Level settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:THReshold?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:RUNT:THReshold?

        Sub-properties:
            - ``.both``: The ``TRIGger:A:PULse:RUNT:THReshold:BOTh`` command.
            - ``.high``: The ``TRIGger:A:PULse:RUNT:THReshold:HIGH`` command.
            - ``.low``: The ``TRIGger:A:PULse:RUNT:THReshold:LOW`` command.
        """
        return self._threshold

    @property
    def when(self) -> TriggerAPulseRuntWhen:
        """Return the ``TRIGger:A:PULse:RUNT:WHEn`` command.

        **Description:**
            - This command sets or queries the type of pulse width the trigger checks for when it
              detects a runt. This is equivalent to selecting Runt Setup from the Trig menu and
              choosing the desired Trigger When setting from the drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:WHEn?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:WHEn?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:RUNT:WHEn value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:RUNT:WHEn {OCCurs|WIDERthan}
            - TRIGger:A:PULse:RUNT:WHEn?

        **Info:**
            - ``OCCurs`` argument specifies a trigger event if a runt of any detectable width
              occurs.
            - ``WIDERthan`` specifies a trigger event if a runt greater than the specified width
              occurs.
        """
        return self._when

    @property
    def width(self) -> TriggerAPulseRuntWidth:
        """Return the ``TRIGger:A:PULse:RUNT:WIDth`` command.

        **Description:**
            - This command sets or queries the minimum width for an Pulse Runt trigger. This command
              is equivalent to selecting Runt Setup from the Trig menu and then setting the Width.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT:WIDth?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT:WIDth?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:RUNT:WIDth value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:RUNT:WIDth <NR3>
            - TRIGger:A:PULse:RUNT:WIDth?

        **Info:**
            - ``<NR3>`` specifies the minimum width in seconds.
        """
        return self._width


class TriggerAPulsePeriodWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:PERiod:WHEn`` command.

    **Description:**
        - This command sets or queries the 'trigger when' enumeration for the Pulse Period Trigger.
          If the argument is LESSthan, the scope triggers on the signal when the period (frequency)
          of the signal is less than the period (frequency) of the Low Limit. If the argument is
          GREATerthan, the scope triggers on the signal when the period (frequency) of the signal is
          greater than the period (frequency) of the Low Limit. If the argument is WITHin, the scope
          triggers on the signal when the period (frequency) of the signal is within the range
          defined by the Low Limit and the High Limit. If the argument is OUTside, the scope
          triggers on the signal when the period (frequency) of the signal is outside of the range
          defined by the Low Limit and the High Limit.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:PERiod:WHEn?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:PERiod:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:PERiod:WHEn {LESSthan | GREATerthan | WITHin | OUTside}
        - TRIGger:A:PULse:PERiod:WHEn?

    **Info:**
        - ``LESSthan`` tells the scope to trigger when the period (frequency) of the signal is less
          than the low limit value.
        - ``GREATerthan`` tells the scope to trigger when the period (frequency) of the signal is
          greater than the low limit value.
        - ``WITHin`` tells the scope to trigger when the period (frequency) of the signal is inside
          the range set by the low and high limit values.
        - ``OUTside`` tells the scope to trigger when the period (frequency) of the signal is
          outside of the range set by the low and high limit values.
    """


class TriggerAPulsePeriodView(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:PERiod:VIEW`` command.

    **Description:**
        - This command sets or queries the 'view' for the pulse period trigger. When PERiod is
          selected the LOWLimit and HIGHLimit values are in units of time (Seconds). When FREQuency
          is selected, the units are in frequency (Hz). This two methods are equivalent, so the
          alternative views are provided as a convenience.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod:VIEW?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:PERiod:VIEW?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:PERiod:VIEW value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:PERiod:VIEW {PERiod|FREQuency}
        - TRIGger:A:PULse:PERiod:VIEW?

    **Info:**
        - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
        - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
    """


class TriggerAPulsePeriodQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:PERiod:QUAlify`` command.

    **Description:**
        - This command sets or queries the Qualification setup for Pulse Period Trigger. The
          high/low state of one or more other signals (channels) may be used to qualify whether the
          trigger should occur or not. The BUS option is not available on the SX series instruments
          at this time. When the QUALify enumeration is OCCurs, no qualification is done. When the
          QUALify enumeration is LOGIC, the scope triggers using the pulse period trigger definition
          as qualified by the high/low states of the qualifying signals. Additional description is
          given elsewhere in this document under the term 'logic qualification.'

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:PERiod:QUAlify?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:PERiod:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:PERiod:QUAlify {OCCurs | LOGIC | BUS}
        - TRIGger:A:PULse:PERiod:QUAlify?

    **Info:**
        - ``OCCurs`` specifies the no other signals are used to qualify the pulse period trigger.
        - ``LOGIC`` specifies that other analog signals (channels) are used to qualify the pulse
          period trigger.
        - ``BUS`` specifies that other digital signals (digital channels) are used to qualify the
          pulse period trigger.
    """


class TriggerAPulsePeriodPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:PERiod:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity for the Pulse Period trigger. It refers to the
          polarity of the edges that begin and end a given period of the signal, and thus allows
          duty-cycle testing of clock signals.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:PERiod:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:PERiod:POLarity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:PERiod:POLarity {NEGAtive|POSITIVe}
        - TRIGger:A:PULse:PERiod:POLarity?

    **Info:**
        - ``POSITIVe`` specifies to trigger on the rising or positive edge of a signal.
        - ``NEGAtive`` specifies to trigger on the falling or negative edge of a signal.
    """


class TriggerAPulsePeriodLowlimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:PERiod:LOWLimit`` command.

    **Description:**
        - This command sets or queries the Period/Frequency low limit. When the VIEW is PERiod the
          units of this number are time (Seconds). When the VIEW is FREQuency, the units of this
          number are frequency (Hz). The low limit is used alone when the WHEn enumeration is
          LESSthan or GREATerthan, and is used in combination with the high limit to define a range
          if the WHEn enumeration is WITHin or OUTside. The limits specify the most significant
          characteristic of the signal for this Pulse Trigger Type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod:LOWLimit?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:PERiod:LOWLimit?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:PERiod:LOWLimit value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:PERiod:LOWLimit <NR3>
        - TRIGger:A:PULse:PERiod:LOWLimit?

    **Info:**
        - ``<NR3>`` is the period (in Seconds) or frequency (in Hz).
    """


class TriggerAPulsePeriodHighlimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:PERiod:HIGHLimit`` command.

    **Description:**
        - This command sets or queries the Period/Frequency high limit. When the VIEW is PERiod the
          units of this number are time (Seconds). When the VIEW is FREQuency, the units of this
          number are frequency (Hz). The high limit is used in combination with the low limit to
          define a range if the WHEn enumeration is WITHin or OUTside. These limits specify the most
          significant characteristic of the signal for this Pulse Trigger Type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod:HIGHLimit?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:PERiod:HIGHLimit?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:PERiod:HIGHLimit value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:PERiod:HIGHLimit <NR3>
        - TRIGger:A:PULse:PERiod:HIGHLimit?

    **Info:**
        - ``<NR3>`` is the period (in Seconds) or frequency (in Hz).
    """


class TriggerAPulsePeriod(SCPICmdRead):
    """The ``TRIGger:A:PULse:PERiod`` command.

    **Description:**
        - This query-only command returns the Pulse Trigger settings specific to Period/Frequency
          trigger. These include the array of high and low limits, the 'trigger when' enumeration,
          the polarity enumeration, the qualification enumeration, and the view enumeration. The
          view enumeration controls whether the high and low limits are expressed in units of time
          (Seconds) or frequency (Hz). The qualification enumeration determines if the trigger is
          state-qualified by additional signals (channels). The polarity enumeration determines
          whether the rising or falling edges of the signal are used to initiate the trigger. The
          trigger when enumeration determines if the trigger should occur when the period
          (frequency) is greater than or less than a single (low) limit value, or within or outside
          the period (frequency) of a high-low limit period (frequency) pair. The Period/Frequency
          Trigger is similar to Width Trigger, but instead of triggering on a single pulse of a
          given width, it triggers on the period (two back-to-back pulses, one up and one down) of a
          given width. As a convenience the period limits (Seconds) can be expressed as frequency
          limits (Hz) by changing the view enumeration. It is often used to determine if oscillators
          are operating within specification.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:PERiod?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:PERiod?

    Properties:
        - ``.highlimit``: The ``TRIGger:A:PULse:PERiod:HIGHLimit`` command.
        - ``.lowlimit``: The ``TRIGger:A:PULse:PERiod:LOWLimit`` command.
        - ``.polarity``: The ``TRIGger:A:PULse:PERiod:POLarity`` command.
        - ``.qualify``: The ``TRIGger:A:PULse:PERiod:QUAlify`` command.
        - ``.view``: The ``TRIGger:A:PULse:PERiod:VIEW`` command.
        - ``.when``: The ``TRIGger:A:PULse:PERiod:WHEn`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._highlimit = TriggerAPulsePeriodHighlimit(device, f"{self._cmd_syntax}:HIGHLimit")
        self._lowlimit = TriggerAPulsePeriodLowlimit(device, f"{self._cmd_syntax}:LOWLimit")
        self._polarity = TriggerAPulsePeriodPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerAPulsePeriodQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._view = TriggerAPulsePeriodView(device, f"{self._cmd_syntax}:VIEW")
        self._when = TriggerAPulsePeriodWhen(device, f"{self._cmd_syntax}:WHEn")

    @property
    def highlimit(self) -> TriggerAPulsePeriodHighlimit:
        """Return the ``TRIGger:A:PULse:PERiod:HIGHLimit`` command.

        **Description:**
            - This command sets or queries the Period/Frequency high limit. When the VIEW is PERiod
              the units of this number are time (Seconds). When the VIEW is FREQuency, the units of
              this number are frequency (Hz). The high limit is used in combination with the low
              limit to define a range if the WHEn enumeration is WITHin or OUTside. These limits
              specify the most significant characteristic of the signal for this Pulse Trigger Type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod:HIGHLimit?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:PERiod:HIGHLimit?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:PERiod:HIGHLimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:PERiod:HIGHLimit <NR3>
            - TRIGger:A:PULse:PERiod:HIGHLimit?

        **Info:**
            - ``<NR3>`` is the period (in Seconds) or frequency (in Hz).
        """
        return self._highlimit

    @property
    def lowlimit(self) -> TriggerAPulsePeriodLowlimit:
        """Return the ``TRIGger:A:PULse:PERiod:LOWLimit`` command.

        **Description:**
            - This command sets or queries the Period/Frequency low limit. When the VIEW is PERiod
              the units of this number are time (Seconds). When the VIEW is FREQuency, the units of
              this number are frequency (Hz). The low limit is used alone when the WHEn enumeration
              is LESSthan or GREATerthan, and is used in combination with the high limit to define a
              range if the WHEn enumeration is WITHin or OUTside. The limits specify the most
              significant characteristic of the signal for this Pulse Trigger Type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod:LOWLimit?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:PERiod:LOWLimit?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:PERiod:LOWLimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:PERiod:LOWLimit <NR3>
            - TRIGger:A:PULse:PERiod:LOWLimit?

        **Info:**
            - ``<NR3>`` is the period (in Seconds) or frequency (in Hz).
        """
        return self._lowlimit

    @property
    def polarity(self) -> TriggerAPulsePeriodPolarity:
        """Return the ``TRIGger:A:PULse:PERiod:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity for the Pulse Period trigger. It refers to
              the polarity of the edges that begin and end a given period of the signal, and thus
              allows duty-cycle testing of clock signals.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod:POLarity?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:PERiod:POLarity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:PERiod:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:PERiod:POLarity {NEGAtive|POSITIVe}
            - TRIGger:A:PULse:PERiod:POLarity?

        **Info:**
            - ``POSITIVe`` specifies to trigger on the rising or positive edge of a signal.
            - ``NEGAtive`` specifies to trigger on the falling or negative edge of a signal.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerAPulsePeriodQualify:
        """Return the ``TRIGger:A:PULse:PERiod:QUAlify`` command.

        **Description:**
            - This command sets or queries the Qualification setup for Pulse Period Trigger. The
              high/low state of one or more other signals (channels) may be used to qualify whether
              the trigger should occur or not. The BUS option is not available on the SX series
              instruments at this time. When the QUALify enumeration is OCCurs, no qualification is
              done. When the QUALify enumeration is LOGIC, the scope triggers using the pulse period
              trigger definition as qualified by the high/low states of the qualifying signals.
              Additional description is given elsewhere in this document under the term 'logic
              qualification.'

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod:QUAlify?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:PERiod:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:PERiod:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:PERiod:QUAlify {OCCurs | LOGIC | BUS}
            - TRIGger:A:PULse:PERiod:QUAlify?

        **Info:**
            - ``OCCurs`` specifies the no other signals are used to qualify the pulse period
              trigger.
            - ``LOGIC`` specifies that other analog signals (channels) are used to qualify the pulse
              period trigger.
            - ``BUS`` specifies that other digital signals (digital channels) are used to qualify
              the pulse period trigger.
        """
        return self._qualify

    @property
    def view(self) -> TriggerAPulsePeriodView:
        """Return the ``TRIGger:A:PULse:PERiod:VIEW`` command.

        **Description:**
            - This command sets or queries the 'view' for the pulse period trigger. When PERiod is
              selected the LOWLimit and HIGHLimit values are in units of time (Seconds). When
              FREQuency is selected, the units are in frequency (Hz). This two methods are
              equivalent, so the alternative views are provided as a convenience.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod:VIEW?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:PERiod:VIEW?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:PERiod:VIEW value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:PERiod:VIEW {PERiod|FREQuency}
            - TRIGger:A:PULse:PERiod:VIEW?

        **Info:**
            - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
            - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
        """
        return self._view

    @property
    def when(self) -> TriggerAPulsePeriodWhen:
        """Return the ``TRIGger:A:PULse:PERiod:WHEn`` command.

        **Description:**
            - This command sets or queries the 'trigger when' enumeration for the Pulse Period
              Trigger. If the argument is LESSthan, the scope triggers on the signal when the period
              (frequency) of the signal is less than the period (frequency) of the Low Limit. If the
              argument is GREATerthan, the scope triggers on the signal when the period (frequency)
              of the signal is greater than the period (frequency) of the Low Limit. If the argument
              is WITHin, the scope triggers on the signal when the period (frequency) of the signal
              is within the range defined by the Low Limit and the High Limit. If the argument is
              OUTside, the scope triggers on the signal when the period (frequency) of the signal is
              outside of the range defined by the Low Limit and the High Limit.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod:WHEn?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:PERiod:WHEn?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:PERiod:WHEn value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:PERiod:WHEn {LESSthan | GREATerthan | WITHin | OUTside}
            - TRIGger:A:PULse:PERiod:WHEn?

        **Info:**
            - ``LESSthan`` tells the scope to trigger when the period (frequency) of the signal is
              less than the low limit value.
            - ``GREATerthan`` tells the scope to trigger when the period (frequency) of the signal
              is greater than the low limit value.
            - ``WITHin`` tells the scope to trigger when the period (frequency) of the signal is
              inside the range set by the low and high limit values.
            - ``OUTside`` tells the scope to trigger when the period (frequency) of the signal is
              outside of the range set by the low and high limit values.
        """
        return self._when


class TriggerAPulseGlitchWidth(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:GLItch:WIDth`` command.

    **Description:**
        - This command sets or queries the width for the glitch trigger. This command is equivalent
          to selecting Glitch Setup from the Trig menu and then setting the desired Width. For
          information about using the width value, refer to the command.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:WIDth?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:GLItch:WIDth?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:GLItch:WIDth value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:GLItch:WIDth <NR3>
        - TRIGger:A:PULse:GLItch:WIDth?

    **Info:**
        - ``<NR3>`` argument specifies the width of the glitch in seconds.
    """


class TriggerAPulseGlitchTrigif(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:GLItch:TRIGIF`` command.

    **Description:**
        - This command sets or queries the acceptance or rejection of the glitch pulse trigger,
          based on width. This command is equivalent to selecting Glitch Setup from the Trig menu
          and choosing the desired Trig if Width setting.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:TRIGIF?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:GLItch:TRIGIF?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:GLItch:TRIGIF value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:GLItch:TRIGIF {ACCept|REJect}
        - TRIGger:A:PULse:GLItch:TRIGIF?

    **Info:**
        - ``ACCept`` specifies that the instrument will only trigger on pulses that are narrower
          than the specified width, when the trigger type is set to glitch. The width is specified
          using the.
        - ``REJect`` specifies that the instrument will only trigger on pulses that are wider than
          the specified width, when the trigger type is set to glitch. The width is specified using
          the.
    """


class TriggerAPulseGlitchQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:GLItch:QUAlify`` command.

    **Description:**
        - This command sets or queries the Glitch Trigger qualification. This is equivalent to
          selecting Glitch Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
          Trigger If Glitch drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:GLItch:QUAlify?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:GLItch:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:GLItch:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:A:PULse:GLItch:QUAlify?

    **Info:**
        - ``OCCurs`` specifies a trigger if any detectable event occurs.
        - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
          patterns and thresholds set by the.
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerAPulseGlitchPolarityChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:GLItch:POLarity:CH<x>`` command.

    **Description:**
        - This command sets or queries the polarity for A or B pulse glitch trigger for the channel.
          This command is equivalent to selecting Glitch Setup from the Trig menu and then choosing
          the desired Polarity.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:POLarity:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:GLItch:POLarity:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:GLItch:POLarity:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:GLItch:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
        - TRIGger:A:PULse:GLItch:POLarity:CH<x>?

    **Info:**
        - ``EITher`` specifies that the instrument will trigger when the polarity of the glitch is
          either positive or negative.
        - ``NEGAtive`` specifies that the instrument will only trigger when the polarity of the
          glitch is negative.
        - ``POSITIVe`` specifies that the instrument will only trigger when the polarity of the
          glitch is positive.
    """


class TriggerAPulseGlitchPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:GLItch:POLarity`` command.

    **Description:**
        - This command sets or queries the polarity for A or B pulse glitch trigger. This command is
          equivalent to selecting Glitch Setup from the Trig menu and then choosing the desired
          Polarity.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:POLarity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:GLItch:POLarity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:GLItch:POLarity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:GLItch:POLarity {POSITIVe|NEGAtive|EITher}
        - TRIGger:A:PULse:GLItch:POLarity?

    **Info:**
        - ``POSITIVe`` specifies that the instrument will only trigger when the polarity of the
          glitch is positive.
        - ``NEGAtive`` specifies that the instrument will only trigger when the polarity of the
          glitch is negative.
        - ``EITher`` specifies that the instrument will trigger when the polarity of the glitch is
          either positive or negative.

    Properties:
        - ``.ch``: The ``TRIGger:A:PULse:GLItch:POLarity:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerAPulseGlitchPolarityChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerAPulseGlitchPolarityChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerAPulseGlitchPolarityChannel]:
        """Return the ``TRIGger:A:PULse:GLItch:POLarity:CH<x>`` command.

        **Description:**
            - This command sets or queries the polarity for A or B pulse glitch trigger for the
              channel. This command is equivalent to selecting Glitch Setup from the Trig menu and
              then choosing the desired Polarity.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:POLarity:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:GLItch:POLarity:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:GLItch:POLarity:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:GLItch:POLarity:CH<x> {EITher|NEGAtive|POSITIVe}
            - TRIGger:A:PULse:GLItch:POLarity:CH<x>?

        **Info:**
            - ``EITher`` specifies that the instrument will trigger when the polarity of the glitch
              is either positive or negative.
            - ``NEGAtive`` specifies that the instrument will only trigger when the polarity of the
              glitch is negative.
            - ``POSITIVe`` specifies that the instrument will only trigger when the polarity of the
              glitch is positive.
        """
        return self._ch


class TriggerAPulseGlitchLowpassfilter(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:GLItch:LOWPASSfilter`` command.

    **Description:**
        - This command turns on or turns off the low­pass filter feature for Glitch trigger. This
          allows triggering in the presence of high­frequency signal edges.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:LOWPASSfilter?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:PULse:GLItch:LOWPASSfilter?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:PULse:GLItch:LOWPASSfilter value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:GLItch:LOWPASSfilter {ON|OFF}
        - TRIGger:A:PULse:GLItch:LOWPASSfilter?

    **Info:**
        - ``ON`` enables low­pass filter feature.
        - ``OFF`` disables low­pass filter feature.
    """


class TriggerAPulseGlitchFilter(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:GLItch:FILTer`` command.

    **Description:**
        - This command sets or queries the acceptance/rejection of the glitch pulse trigger. This
          command is equivalent to selecting Glitch Setup from the Trig menu and then choosing the
          desired Trig if Width setting.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:FILTer?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:GLItch:FILTer?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:GLItch:FILTer value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:GLItch:FILTer {ACCept|REJect}
        - TRIGger:A:PULse:GLItch:FILTer?
    """


class TriggerAPulseGlitch(SCPICmdRead):
    """The ``TRIGger:A:PULse:GLItch`` command.

    **Description:**
        - This query-only command returns the current glitch pulse trigger parameters. This command
          query is equivalent to selecting Glitch Setup from the Trig menu and viewing the current
          glitch trigger settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:GLItch?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:GLItch?

    Properties:
        - ``.filter``: The ``TRIGger:A:PULse:GLItch:FILTer`` command.
        - ``.lowpassfilter``: The ``TRIGger:A:PULse:GLItch:LOWPASSfilter`` command.
        - ``.polarity``: The ``TRIGger:A:PULse:GLItch:POLarity`` command.
        - ``.qualify``: The ``TRIGger:A:PULse:GLItch:QUAlify`` command.
        - ``.trigif``: The ``TRIGger:A:PULse:GLItch:TRIGIF`` command.
        - ``.width``: The ``TRIGger:A:PULse:GLItch:WIDth`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._filter = TriggerAPulseGlitchFilter(device, f"{self._cmd_syntax}:FILTer")
        self._lowpassfilter = TriggerAPulseGlitchLowpassfilter(
            device, f"{self._cmd_syntax}:LOWPASSfilter"
        )
        self._polarity = TriggerAPulseGlitchPolarity(device, f"{self._cmd_syntax}:POLarity")
        self._qualify = TriggerAPulseGlitchQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._trigif = TriggerAPulseGlitchTrigif(device, f"{self._cmd_syntax}:TRIGIF")
        self._width = TriggerAPulseGlitchWidth(device, f"{self._cmd_syntax}:WIDth")

    @property
    def filter(self) -> TriggerAPulseGlitchFilter:
        """Return the ``TRIGger:A:PULse:GLItch:FILTer`` command.

        **Description:**
            - This command sets or queries the acceptance/rejection of the glitch pulse trigger.
              This command is equivalent to selecting Glitch Setup from the Trig menu and then
              choosing the desired Trig if Width setting.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:FILTer?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:GLItch:FILTer?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:GLItch:FILTer value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:GLItch:FILTer {ACCept|REJect}
            - TRIGger:A:PULse:GLItch:FILTer?
        """
        return self._filter

    @property
    def lowpassfilter(self) -> TriggerAPulseGlitchLowpassfilter:
        """Return the ``TRIGger:A:PULse:GLItch:LOWPASSfilter`` command.

        **Description:**
            - This command turns on or turns off the low­pass filter feature for Glitch trigger.
              This allows triggering in the presence of high­frequency signal edges.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:LOWPASSfilter?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:PULse:GLItch:LOWPASSfilter?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:GLItch:LOWPASSfilter value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:GLItch:LOWPASSfilter {ON|OFF}
            - TRIGger:A:PULse:GLItch:LOWPASSfilter?

        **Info:**
            - ``ON`` enables low­pass filter feature.
            - ``OFF`` disables low­pass filter feature.
        """
        return self._lowpassfilter

    @property
    def polarity(self) -> TriggerAPulseGlitchPolarity:
        """Return the ``TRIGger:A:PULse:GLItch:POLarity`` command.

        **Description:**
            - This command sets or queries the polarity for A or B pulse glitch trigger. This
              command is equivalent to selecting Glitch Setup from the Trig menu and then choosing
              the desired Polarity.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:POLarity?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:GLItch:POLarity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:GLItch:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:GLItch:POLarity {POSITIVe|NEGAtive|EITher}
            - TRIGger:A:PULse:GLItch:POLarity?

        **Info:**
            - ``POSITIVe`` specifies that the instrument will only trigger when the polarity of the
              glitch is positive.
            - ``NEGAtive`` specifies that the instrument will only trigger when the polarity of the
              glitch is negative.
            - ``EITher`` specifies that the instrument will trigger when the polarity of the glitch
              is either positive or negative.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:PULse:GLItch:POLarity:CH<x>`` command.
        """
        return self._polarity

    @property
    def qualify(self) -> TriggerAPulseGlitchQualify:
        """Return the ``TRIGger:A:PULse:GLItch:QUAlify`` command.

        **Description:**
            - This command sets or queries the Glitch Trigger qualification. This is equivalent to
              selecting Glitch Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
              Trigger If Glitch drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:QUAlify?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:GLItch:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:GLItch:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:GLItch:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:A:PULse:GLItch:QUAlify?

        **Info:**
            - ``OCCurs`` specifies a trigger if any detectable event occurs.
            - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
              patterns and thresholds set by the.
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def trigif(self) -> TriggerAPulseGlitchTrigif:
        """Return the ``TRIGger:A:PULse:GLItch:TRIGIF`` command.

        **Description:**
            - This command sets or queries the acceptance or rejection of the glitch pulse trigger,
              based on width. This command is equivalent to selecting Glitch Setup from the Trig
              menu and choosing the desired Trig if Width setting.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:TRIGIF?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:GLItch:TRIGIF?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:GLItch:TRIGIF value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:GLItch:TRIGIF {ACCept|REJect}
            - TRIGger:A:PULse:GLItch:TRIGIF?

        **Info:**
            - ``ACCept`` specifies that the instrument will only trigger on pulses that are narrower
              than the specified width, when the trigger type is set to glitch. The width is
              specified using the.
            - ``REJect`` specifies that the instrument will only trigger on pulses that are wider
              than the specified width, when the trigger type is set to glitch. The width is
              specified using the.
        """
        return self._trigif

    @property
    def width(self) -> TriggerAPulseGlitchWidth:
        """Return the ``TRIGger:A:PULse:GLItch:WIDth`` command.

        **Description:**
            - This command sets or queries the width for the glitch trigger. This command is
              equivalent to selecting Glitch Setup from the Trig menu and then setting the desired
              Width. For information about using the width value, refer to the command.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch:WIDth?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:GLItch:WIDth?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:PULse:GLItch:WIDth value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:GLItch:WIDth <NR3>
            - TRIGger:A:PULse:GLItch:WIDth?

        **Info:**
            - ``<NR3>`` argument specifies the width of the glitch in seconds.
        """
        return self._width


class TriggerAPulseClass(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PULse:CLAss`` command.

    **Description:**
        - This command sets or queries the type of pulse on which to trigger. This command is
          equivalent to selecting the setup menu for the pulse type that you want from the Trig
          menu: Glitch Setup, Width Setup, Runt Setup, Timeout Setup, or Transition Setup.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse:CLAss?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:CLAss?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:CLAss value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PULse:CLAss {GLItch|RUNT|WIDth| TRANsition|TIMEOut|WINdow}
        - TRIGger:A:PULse:CLAss?

    **Info:**
        - ``GLItch`` triggers when a pulse is found that is of the specified polarity and width.
          These are set with the commands.
        - ``RUNT`` triggers when a pulse crosses the first preset voltage threshold but does not
          cross the second preset threshold before recrossing the first. The thresholds are set with
          the.
        - ``WIDth`` triggers when a pulse is found that has the specified polarity and is either
          inside or outside the limits as specified by.
        - ``TRANsition`` triggers when a pulse crosses both thresholds in the same direction as the
          specified polarity and the transition time between the two threshold crossings is greater
          or less than the specified time delta.
        - ``TIMEOut`` triggers when the pulse train stops in the selected state for longer than the
          specified time.
        - ``WINdow`` triggers when a pulse is found that meets the conditions set by the A Event
          window trigger type, specified by the following commands.
    """


#  pylint: disable=too-many-instance-attributes
class TriggerAPulse(SCPICmdRead):
    """The ``TRIGger:A:PULse`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PULse?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.period``: The ``TRIGger:A:PULse:PERiod`` command.
        - ``.runt``: The ``TRIGger:A:PULse:RUNT`` command tree.
        - ``.window``: The ``TRIGger:A:PULse:WINdow`` command tree.
        - ``.class``: The ``TRIGger:A:PULse:CLAss`` command.
        - ``.glitch``: The ``TRIGger:A:PULse:GLItch`` command.
        - ``.source``: The ``TRIGger:A:PULse:SOUrce`` command.
        - ``.timeout``: The ``TRIGger:A:PULse:TIMEOut`` command.
        - ``.transition``: The ``TRIGger:A:PULse:TRANsition`` command.
        - ``.width``: The ``TRIGger:A:PULse:WIDth`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._period = TriggerAPulsePeriod(device, f"{self._cmd_syntax}:PERiod")
        self._class = TriggerAPulseClass(device, f"{self._cmd_syntax}:CLAss")
        self._glitch = TriggerAPulseGlitch(device, f"{self._cmd_syntax}:GLItch")
        self._runt = TriggerAPulseRunt(device, f"{self._cmd_syntax}:RUNT")
        self._source = TriggerAPulseSource(device, f"{self._cmd_syntax}:SOUrce")
        self._timeout = TriggerAPulseTimeout(device, f"{self._cmd_syntax}:TIMEOut")
        self._transition = TriggerAPulseTransition(device, f"{self._cmd_syntax}:TRANsition")
        self._width = TriggerAPulseWidth(device, f"{self._cmd_syntax}:WIDth")
        self._window = TriggerAPulseWindow(device, f"{self._cmd_syntax}:WINdow")

    @property
    def period(self) -> TriggerAPulsePeriod:
        """Return the ``TRIGger:A:PULse:PERiod`` command.

        **Description:**
            - This query-only command returns the Pulse Trigger settings specific to
              Period/Frequency trigger. These include the array of high and low limits, the 'trigger
              when' enumeration, the polarity enumeration, the qualification enumeration, and the
              view enumeration. The view enumeration controls whether the high and low limits are
              expressed in units of time (Seconds) or frequency (Hz). The qualification enumeration
              determines if the trigger is state-qualified by additional signals (channels). The
              polarity enumeration determines whether the rising or falling edges of the signal are
              used to initiate the trigger. The trigger when enumeration determines if the trigger
              should occur when the period (frequency) is greater than or less than a single (low)
              limit value, or within or outside the period (frequency) of a high-low limit period
              (frequency) pair. The Period/Frequency Trigger is similar to Width Trigger, but
              instead of triggering on a single pulse of a given width, it triggers on the period
              (two back-to-back pulses, one up and one down) of a given width. As a convenience the
              period limits (Seconds) can be expressed as frequency limits (Hz) by changing the view
              enumeration. It is often used to determine if oscillators are operating within
              specification.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:PERiod?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:PERiod?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:PERiod?

        Sub-properties:
            - ``.highlimit``: The ``TRIGger:A:PULse:PERiod:HIGHLimit`` command.
            - ``.lowlimit``: The ``TRIGger:A:PULse:PERiod:LOWLimit`` command.
            - ``.polarity``: The ``TRIGger:A:PULse:PERiod:POLarity`` command.
            - ``.qualify``: The ``TRIGger:A:PULse:PERiod:QUAlify`` command.
            - ``.view``: The ``TRIGger:A:PULse:PERiod:VIEW`` command.
            - ``.when``: The ``TRIGger:A:PULse:PERiod:WHEn`` command.
        """
        return self._period

    @property
    def class_(self) -> TriggerAPulseClass:
        """Return the ``TRIGger:A:PULse:CLAss`` command.

        **Description:**
            - This command sets or queries the type of pulse on which to trigger. This command is
              equivalent to selecting the setup menu for the pulse type that you want from the Trig
              menu: Glitch Setup, Width Setup, Runt Setup, Timeout Setup, or Transition Setup.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:CLAss?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:CLAss?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:CLAss value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:CLAss {GLItch|RUNT|WIDth| TRANsition|TIMEOut|WINdow}
            - TRIGger:A:PULse:CLAss?

        **Info:**
            - ``GLItch`` triggers when a pulse is found that is of the specified polarity and width.
              These are set with the commands.
            - ``RUNT`` triggers when a pulse crosses the first preset voltage threshold but does not
              cross the second preset threshold before recrossing the first. The thresholds are set
              with the.
            - ``WIDth`` triggers when a pulse is found that has the specified polarity and is either
              inside or outside the limits as specified by.
            - ``TRANsition`` triggers when a pulse crosses both thresholds in the same direction as
              the specified polarity and the transition time between the two threshold crossings is
              greater or less than the specified time delta.
            - ``TIMEOut`` triggers when the pulse train stops in the selected state for longer than
              the specified time.
            - ``WINdow`` triggers when a pulse is found that meets the conditions set by the A Event
              window trigger type, specified by the following commands.
        """
        return self._class

    @property
    def glitch(self) -> TriggerAPulseGlitch:
        """Return the ``TRIGger:A:PULse:GLItch`` command.

        **Description:**
            - This query-only command returns the current glitch pulse trigger parameters. This
              command query is equivalent to selecting Glitch Setup from the Trig menu and viewing
              the current glitch trigger settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:GLItch?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:GLItch?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:GLItch?

        Sub-properties:
            - ``.filter``: The ``TRIGger:A:PULse:GLItch:FILTer`` command.
            - ``.lowpassfilter``: The ``TRIGger:A:PULse:GLItch:LOWPASSfilter`` command.
            - ``.polarity``: The ``TRIGger:A:PULse:GLItch:POLarity`` command.
            - ``.qualify``: The ``TRIGger:A:PULse:GLItch:QUAlify`` command.
            - ``.trigif``: The ``TRIGger:A:PULse:GLItch:TRIGIF`` command.
            - ``.width``: The ``TRIGger:A:PULse:GLItch:WIDth`` command.
        """
        return self._glitch

    @property
    def runt(self) -> TriggerAPulseRunt:
        """Return the ``TRIGger:A:PULse:RUNT`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:RUNT?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:RUNT?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.logic``: The ``TRIGger:A:PULse:RUNT:LOGIc`` command.
            - ``.polarity``: The ``TRIGger:A:PULse:RUNT:POLarity`` command.
            - ``.qualify``: The ``TRIGger:A:PULse:RUNT:QUAlify`` command.
            - ``.threshold``: The ``TRIGger:A:PULse:RUNT:THReshold`` command.
            - ``.when``: The ``TRIGger:A:PULse:RUNT:WHEn`` command.
            - ``.width``: The ``TRIGger:A:PULse:RUNT:WIDth`` command.
        """
        return self._runt

    @property
    def source(self) -> TriggerAPulseSource:
        """Return the ``TRIGger:A:PULse:SOUrce`` command.

        **Description:**
            - This command sets or queries the source for the pulse trigger. This source parameter
              applies to all classes of pulse triggers. This command is equivalent to selecting
              Event Trigger Setup from the Trig menu, selecting the pulse type (Glitch, Width, Runt,
              Timeout, or Transition), and then choosing the desired channel from the Source
              pull-down list. When an UltraSync stack is used, the mapped channels are used to both
              acquire waveform data and to trigger the oscilloscope. In the special case of an
              UltraSync stack master, additional channels are available for triggering. These are
              the unmapped channels. For an ATI UltraSync stack master, CH2, MCH1, and MCH3 can be
              used for triggering. For a 4-Channel UltraSync stack master, CH1, MCH2, MCH3, and MCH4
              are available for triggering. The vertical min/max amplitude for these signals must be
              set up. A detailed discussion is provided in .

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:SOUrce?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:PULse:SOUrce value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:SOUrce {CH<x>|D<x>|MCH<x>}
            - TRIGger:A:PULse:SOUrce?

        **Info:**
            - ``CH<x>`` specifies one of the input channels, which range from 1 through 4.
            - ``D<x>`` specifies one of the digital inputs, which range from 0 through 15.
            - ``MCH<x>`` specifies one of the unmapped channels on the master when using an
              UltraSync stack. For details see.
        """
        return self._source

    @property
    def timeout(self) -> TriggerAPulseTimeout:
        """Return the ``TRIGger:A:PULse:TIMEOut`` command.

        **Description:**
            - This query-only command returns the polarity and time-out duration for the pulse
              timeout trigger. This command is equivalent to selecting Timeout Setup from the Trig
              menu and viewing the polarity in the Trigger When box and the Timer setting.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TIMEOut?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:TIMEOut?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TIMEOut?

        Sub-properties:
            - ``.lowpassfilter``: The ``TRIGger:A:PULse:TIMEOut:LOWPASSfilter`` command.
            - ``.polarity``: The ``TRIGger:A:PULse:TIMEOut:POLarity`` command.
            - ``.qualify``: The ``TRIGger:A:PULse:TIMEOut:QUAlify`` command.
            - ``.time``: The ``TRIGger:A:PULse:TIMEOut:TIMe`` command.
        """
        return self._timeout

    @property
    def transition(self) -> TriggerAPulseTransition:
        """Return the ``TRIGger:A:PULse:TRANsition`` command.

        **Description:**
            - This query-only command returns delta time, polarity, and both upper and lower
              threshold limits for the transition time trigger. This command is equivalent to
              selecting Transition Setup from the Trig menu and then viewing the current transition
              settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:TRANsition?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:TRANsition?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:TRANsition?

        Sub-properties:
            - ``.deltatime``: The ``TRIGger:A:PULse:TRANsition:DELTATime`` command.
            - ``.polarity``: The ``TRIGger:A:PULse:TRANsition:POLarity`` command.
            - ``.qualify``: The ``TRIGger:A:PULse:TRANsition:QUAlify`` command.
            - ``.threshold``: The ``TRIGger:A:PULse:TRANsition:THReshold`` command.
            - ``.when``: The ``TRIGger:A:PULse:TRANsition:WHEn`` command.
        """
        return self._transition

    @property
    def width(self) -> TriggerAPulseWidth:
        """Return the ``TRIGger:A:PULse:WIDth`` command.

        **Description:**
            - This query-only command returns the width parameters for the pulse width trigger. This
              command is equivalent to selecting Width Setup from the Trig menu and then viewing the
              current pulse width trigger Lower Limit, Upper Limit, Trig When and Polarity settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WIDth?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WIDth?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PULse:WIDth?

        Sub-properties:
            - ``.highlimit``: The ``TRIGger:A:PULse:WIDth:HIGHLimit`` command.
            - ``.lowlimit``: The ``TRIGger:A:PULse:WIDth:LOWLimit`` command.
            - ``.lowpassfilter``: The ``TRIGger:A:PULse:WIDth:LOWPASSfilter`` command.
            - ``.polarity``: The ``TRIGger:A:PULse:WIDth:POLarity`` command.
            - ``.qualify``: The ``TRIGger:A:PULse:WIDth:QUAlify`` command.
            - ``.when``: The ``TRIGger:A:PULse:WIDth:WHEn`` command.
        """
        return self._width

    @property
    def window(self) -> TriggerAPulseWindow:
        """Return the ``TRIGger:A:PULse:WINdow`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse:WINdow?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse:WINdow?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.logic``: The ``TRIGger:A:PULse:WINdow:LOGIc`` command.
            - ``.event``: The ``TRIGger:A:PULse:WINdow:EVENT`` command.
            - ``.polarity``: The ``TRIGger:A:PULse:WINdow:POLarity`` command.
            - ``.qualify``: The ``TRIGger:A:PULse:WINdow:QUAlify`` command.
            - ``.threshold``: The ``TRIGger:A:PULse:WINdow:THReshold`` command.
            - ``.type``: The ``TRIGger:A:PULse:WINdow:TYPe`` command.
            - ``.when``: The ``TRIGger:A:PULse:WINdow:WHEn`` command.
            - ``.width``: The ``TRIGger:A:PULse:WINdow:WIDTH`` command.
        """
        return self._window


class TriggerAPlockSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PLOCK:SOURCE`` command.

    **Description:**
        - This command sets or queries the source of the pattern lock trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PLOCK:SOURCE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PLOCK:SOURCE?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PLOCK:SOURCE value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PLOCK:SOURCE CH<x>
        - TRIGger:A:PLOCK:SOURCE?

    **Info:**
        - ``CH<x>`` specifies the recovered clock from one input channel as the PLOCK trigger
          source.
    """


class TriggerAPlockLength(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PLOCK:LENGTH`` command.

    **Description:**
        - This command sets or queries a positive integer representing the power of 2 used to
          determine the total length in bits of a repeating sequence.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PLOCK:LENGTH?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PLOCK:LENGTH?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PLOCK:LENGTH value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PLOCK:LENGTH <NR1>
        - TRIGger:A:PLOCK:LENGTH?

    **Info:**
        - ``<NR1>`` specifies a positive integer representing the power of 2 used to determine the
          total length in bits of a repeating sequence.
    """


class TriggerAPlockCount(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:PLOCK:COUNT`` command.

    **Description:**
        - This command sets or queries an integer in the range of (-2 length +1) to (+2 length -1)
          that allows you to shift the locked trigger point in increments or decrements of 1.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PLOCK:COUNT?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PLOCK:COUNT?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:PLOCK:COUNT value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:PLOCK:COUNT <NR1>
        - TRIGger:A:PLOCK:COUNT?

    **Info:**
        - ``<NR1>`` specifies an integer that allows you to shift the locked trigger point in
          increments or decrements of 1.
    """


class TriggerAPlock(SCPICmdRead):
    """The ``TRIGger:A:PLOCK`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:PLOCK?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:PLOCK?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.count``: The ``TRIGger:A:PLOCK:COUNT`` command.
        - ``.length``: The ``TRIGger:A:PLOCK:LENGTH`` command.
        - ``.source``: The ``TRIGger:A:PLOCK:SOURCE`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._count = TriggerAPlockCount(device, f"{self._cmd_syntax}:COUNT")
        self._length = TriggerAPlockLength(device, f"{self._cmd_syntax}:LENGTH")
        self._source = TriggerAPlockSource(device, f"{self._cmd_syntax}:SOURCE")

    @property
    def count(self) -> TriggerAPlockCount:
        """Return the ``TRIGger:A:PLOCK:COUNT`` command.

        **Description:**
            - This command sets or queries an integer in the range of (-2 length +1) to (+2 length
              -1) that allows you to shift the locked trigger point in increments or decrements of
              1.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PLOCK:COUNT?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PLOCK:COUNT?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:PLOCK:COUNT value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PLOCK:COUNT <NR1>
            - TRIGger:A:PLOCK:COUNT?

        **Info:**
            - ``<NR1>`` specifies an integer that allows you to shift the locked trigger point in
              increments or decrements of 1.
        """
        return self._count

    @property
    def length(self) -> TriggerAPlockLength:
        """Return the ``TRIGger:A:PLOCK:LENGTH`` command.

        **Description:**
            - This command sets or queries a positive integer representing the power of 2 used to
              determine the total length in bits of a repeating sequence.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PLOCK:LENGTH?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PLOCK:LENGTH?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:PLOCK:LENGTH value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PLOCK:LENGTH <NR1>
            - TRIGger:A:PLOCK:LENGTH?

        **Info:**
            - ``<NR1>`` specifies a positive integer representing the power of 2 used to determine
              the total length in bits of a repeating sequence.
        """
        return self._length

    @property
    def source(self) -> TriggerAPlockSource:
        """Return the ``TRIGger:A:PLOCK:SOURCE`` command.

        **Description:**
            - This command sets or queries the source of the pattern lock trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PLOCK:SOURCE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PLOCK:SOURCE?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:PLOCK:SOURCE value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:PLOCK:SOURCE CH<x>
            - TRIGger:A:PLOCK:SOURCE?

        **Info:**
            - ``CH<x>`` specifies the recovered clock from one input channel as the PLOCK trigger
              source.
        """
        return self._source


class TriggerAMode(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:MODe`` command.

    **Description:**
        - This command sets or queries the A trigger mode. This command is equivalent to pushing the
          Mode button on the front panel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:MODe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:MODe?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:MODe value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:MODe {AUTO|NORMal}
        - TRIGger:A:MODe?

    **Info:**
        - ``AUTO`` generates a trigger if one is not detected within a specified time period.
        - ``NORMal`` waits for a valid trigger event.
    """


class TriggerALowerthresholdChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOWerthreshold:CH<x>`` command.

    **Description:**
        - This command sets or queries the A or B lower trigger level for
          ``TRIGger:LVLSrcpreference SRCDependent`` or SRCIndependent modes for the channel,
          specified by x, which ranges from 1 through 4.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOWerthreshold:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOWerthreshold:CH<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:LOWerthreshold:CH<x> value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOWerthreshold:CH<x> {ECL|TTL|<NR3>}
        - TRIGger:A:LOWerthreshold:CH<x>?

    **Info:**
        - ``ECL`` specifies the preset ECL high level.
        - ``TTL`` specifies the preset TTL high level.
        - ``<NR3>`` specifies the threshold voltage in user units.
    """


class TriggerALowerthreshold(SCPICmdRead):
    """The ``TRIGger:A:LOWerthreshold`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOWerthreshold?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOWerthreshold?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.ch``: The ``TRIGger:A:LOWerthreshold:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerALowerthresholdChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerALowerthresholdChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerALowerthresholdChannel]:
        """Return the ``TRIGger:A:LOWerthreshold:CH<x>`` command.

        **Description:**
            - This command sets or queries the A or B lower trigger level for
              ``TRIGger:LVLSrcpreference SRCDependent`` or SRCIndependent modes for the channel,
              specified by x, which ranges from 1 through 4.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOWerthreshold:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOWerthreshold:CH<x>?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOWerthreshold:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOWerthreshold:CH<x> {ECL|TTL|<NR3>}
            - TRIGger:A:LOWerthreshold:CH<x>?

        **Info:**
            - ``ECL`` specifies the preset ECL high level.
            - ``TTL`` specifies the preset TTL high level.
            - ``<NR3>`` specifies the threshold voltage in user units.
        """
        return self._ch


class TriggerALogicThresholdChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:THReshold:CH<x>`` command.

    **Description:**
        - This command sets or queries the A or B logic trigger threshold voltage for the channel,
          specified by x, which ranges from 1 through 4. This command is equivalent to selecting A
          or B Event Trigger Setup from the Trig menu, choosing a logic trigger type, such as State
          or Pattern, and setting the Input Threshold voltage for the desired channel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:THReshold:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:THReshold:CH<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:THReshold:CH<x> value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:THReshold:CH<x> <NR3>
        - TRIGger:A:LOGIc:THReshold:CH<x>?

    **Info:**
        - ``<NR3>`` specifies the threshold voltage.
    """


class TriggerALogicThreshold(SCPICmdRead):
    """The ``TRIGger:A:LOGIc:THReshold`` command.

    **Description:**
        - This query-only command returns the threshold voltage for all channels in a logic trigger.
          This command query is equivalent to selecting Event Trigger Setup from the Trig menu,
          choosing a logic trigger type, such as State or Pattern, and viewing the current Input
          Threshold voltage settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:THReshold?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:THReshold?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:THReshold?

    Properties:
        - ``.ch``: The ``TRIGger:A:LOGIc:THReshold:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerALogicThresholdChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerALogicThresholdChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerALogicThresholdChannel]:
        """Return the ``TRIGger:A:LOGIc:THReshold:CH<x>`` command.

        **Description:**
            - This command sets or queries the A or B logic trigger threshold voltage for the
              channel, specified by x, which ranges from 1 through 4. This command is equivalent to
              selecting A or B Event Trigger Setup from the Trig menu, choosing a logic trigger
              type, such as State or Pattern, and setting the Input Threshold voltage for the
              desired channel.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:THReshold:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:THReshold:CH<x>?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:THReshold:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:THReshold:CH<x> <NR3>
            - TRIGger:A:LOGIc:THReshold:CH<x>?

        **Info:**
            - ``<NR3>`` specifies the threshold voltage.
        """
        return self._ch


class TriggerALogicStateWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:STATE:WHEn`` command.

    **Description:**
        - This command sets or queries the condition for generating an A or B logic state trigger.
          This command is equivalent to selecting Logic State from the Trig menu and choosing the
          desired condition from the Trigger When Pattern drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:STATE:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:STATE:WHEn?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:STATE:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:STATE:WHEn {TRUe|FALSe}
        - TRIGger:A:LOGIc:STATE:WHEn?

    **Info:**
        - ``TRUe`` specifies that the trigger occurs when the clock transition on channel 4 occurs
          and the pattern of channels 1-3 are at the desired logic input states.
        - ``FALSe`` specifies that the trigger occurs when the desired clock transition on channel 4
          occurs and the desired logic input states on channels 1-3 are not found.
    """


class TriggerALogicStateInputChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:STATE:INPut:CH<x>`` command.

    **Description:**
        - This command sets or queries the slope for the channel specified by x when the logic class
          is set to State. This command is equivalent to selecting Logic State from the Trig menu,
          choosing the desired channel input, and then the slope (NEG or POS) from the When Clock is
          drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:STATE:INPut:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:STATE:INPut:CH<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:STATE:INPut:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:STATE:INPut:CH<x> {FALL|RISe}
        - TRIGger:A:LOGIc:STATE:INPut:CH<x>?

    **Info:**
        - ``FALL`` specifies the falling edge and the input slope is NEG.
        - ``RISe`` specifies the rising edge and the input slope is POS.
    """


class TriggerALogicStateInput(SCPICmdRead):
    """The ``TRIGger:A:LOGIc:STATE:INPut`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:STATE:INPut?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:STATE:INPut?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.ch``: The ``TRIGger:A:LOGIc:STATE:INPut:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerALogicStateInputChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerALogicStateInputChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerALogicStateInputChannel]:
        """Return the ``TRIGger:A:LOGIc:STATE:INPut:CH<x>`` command.

        **Description:**
            - This command sets or queries the slope for the channel specified by x when the logic
              class is set to State. This command is equivalent to selecting Logic State from the
              Trig menu, choosing the desired channel input, and then the slope (NEG or POS) from
              the When Clock is drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:STATE:INPut:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:STATE:INPut:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:STATE:INPut:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:STATE:INPut:CH<x> {FALL|RISe}
            - TRIGger:A:LOGIc:STATE:INPut:CH<x>?

        **Info:**
            - ``FALL`` specifies the falling edge and the input slope is NEG.
            - ``RISe`` specifies the rising edge and the input slope is POS.
        """
        return self._ch


class TriggerALogicStateClockSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:STATE:CLOck:SOUrce`` command.

    **Description:**
        - This command sets or queries the clock source for the A or B logic trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:STATE:CLOck:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:STATE:CLOck:SOUrce?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:STATE:CLOck:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:STATE:CLOck:SOUrce {CH4|CQ}
        - TRIGger:A:LOGIc:STATE:CLOck:SOUrce?

    **Info:**
        - ``CH4`` specifies the analog channel as clock source.
        - ``CQ`` specifies the channel/qualifier as clock source.
    """


class TriggerALogicStateClock(SCPICmdRead):
    """The ``TRIGger:A:LOGIc:STATE:CLOck`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:STATE:CLOck?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:STATE:CLOck?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.source``: The ``TRIGger:A:LOGIc:STATE:CLOck:SOUrce`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._source = TriggerALogicStateClockSource(device, f"{self._cmd_syntax}:SOUrce")

    @property
    def source(self) -> TriggerALogicStateClockSource:
        """Return the ``TRIGger:A:LOGIc:STATE:CLOck:SOUrce`` command.

        **Description:**
            - This command sets or queries the clock source for the A or B logic trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:STATE:CLOck:SOUrce?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:STATE:CLOck:SOUrce?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:STATE:CLOck:SOUrce value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:STATE:CLOck:SOUrce {CH4|CQ}
            - TRIGger:A:LOGIc:STATE:CLOck:SOUrce?

        **Info:**
            - ``CH4`` specifies the analog channel as clock source.
            - ``CQ`` specifies the channel/qualifier as clock source.
        """
        return self._source


class TriggerALogicState(SCPICmdRead):
    """The ``TRIGger:A:LOGIc:STATE`` command.

    **Description:**
        - This query-only command returns the data input and trigger criteria for the logic trigger.
          This command is equivalent to selecting Logic State from the Trig menu and then viewing
          the current logic state settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:STATE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:STATE?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:STATE?

    Properties:
        - ``.clock``: The ``TRIGger:A:LOGIc:STATE:CLOck`` command tree.
        - ``.input``: The ``TRIGger:A:LOGIc:STATE:INPut`` command tree.
        - ``.when``: The ``TRIGger:A:LOGIc:STATE:WHEn`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._clock = TriggerALogicStateClock(device, f"{self._cmd_syntax}:CLOck")
        self._input = TriggerALogicStateInput(device, f"{self._cmd_syntax}:INPut")
        self._when = TriggerALogicStateWhen(device, f"{self._cmd_syntax}:WHEn")

    @property
    def clock(self) -> TriggerALogicStateClock:
        """Return the ``TRIGger:A:LOGIc:STATE:CLOck`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:STATE:CLOck?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:STATE:CLOck?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.source``: The ``TRIGger:A:LOGIc:STATE:CLOck:SOUrce`` command.
        """
        return self._clock

    @property
    def input(self) -> TriggerALogicStateInput:
        """Return the ``TRIGger:A:LOGIc:STATE:INPut`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:STATE:INPut?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:STATE:INPut?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:LOGIc:STATE:INPut:CH<x>`` command.
        """
        return self._input

    @property
    def when(self) -> TriggerALogicStateWhen:
        """Return the ``TRIGger:A:LOGIc:STATE:WHEn`` command.

        **Description:**
            - This command sets or queries the condition for generating an A or B logic state
              trigger. This command is equivalent to selecting Logic State from the Trig menu and
              choosing the desired condition from the Trigger When Pattern drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:STATE:WHEn?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:STATE:WHEn?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:STATE:WHEn value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:STATE:WHEn {TRUe|FALSe}
            - TRIGger:A:LOGIc:STATE:WHEn?

        **Info:**
            - ``TRUe`` specifies that the trigger occurs when the clock transition on channel 4
              occurs and the pattern of channels 1-3 are at the desired logic input states.
            - ``FALSe`` specifies that the trigger occurs when the desired clock transition on
              channel 4 occurs and the desired logic input states on channels 1-3 are not found.
        """
        return self._when


class TriggerALogicSetholdSettime(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:SETTime`` command.

    **Description:**
        - This command sets or queries the setup time for setup and hold violation triggering. This
          command is equivalent to selecting Setup/Hold Setup from the Trig menu and then setting
          the desired Setup Time.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:SETTime?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:SETTime?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:SETTime value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:SETTime <NR3>
        - TRIGger:A:LOGIc:SETHold:SETTime?

    **Info:**
        - ``<NR3>`` specifies the setup time for setup and hold violation triggering.
    """


class TriggerALogicSetholdQualify(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:QUAlify`` command.

    **Description:**
        - This command sets or queries the Setup/Hold Trigger qualification. This is equivalent to
          selecting Setup/Hold Setup from the Trig menu and selecting Occurs, Logic, or Bus in the
          Trigger If Setup/Hold drop-down list box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:QUAlify?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:QUAlify?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:QUAlify value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:QUAlify {OCCurs|LOGIc|BUS}
        - TRIGger:A:LOGIc:SETHold:QUAlify?

    **Info:**
        - ``OCCurs`` specifies a trigger if any detectable event occurs.
        - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
          patterns and thresholds set by the.
        - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by the
          ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
    """


class TriggerALogicSetholdHoldtime(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:HOLDTime`` command.

    **Description:**
        - This command sets or queries the hold time for setup and hold violation triggering. This
          command is equivalent to selecting Setup/Hold Setup from the Trig menu and then setting
          the desired Hold Time.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:HOLDTime?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:HOLDTime?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:HOLDTime value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:HOLDTime <NR3>
        - TRIGger:A:LOGIc:SETHold:HOLDTime?

    **Info:**
        - ``<NR3>`` specifies the hold time setting in seconds. Positive values for hold time occur
          after the clock edge. Negative values occur before the clock edge.
    """


class TriggerALogicSetholdDataThresholdChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x>`` command.

    **Description:**
        - This command sets or queries the data voltage threshold for setup and hold trigger. This
          command is equivalent to selecting A or B Event Trigger Setup from the Trig menu and then
          setting the desired Data Level. The value of x can range from 1 through 4.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x> {ECL|TTL|<NR3>}
        - TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x>?

    **Info:**
        - ``ECL`` specifies the preset ECL high level.
        - ``TTL`` specifies the preset TTL high level.
        - ``<NR3>`` is the setup and hold data level in V.
    """


class TriggerALogicSetholdDataThreshold(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:DATa:THReshold`` command.

    **Description:**
        - This command sets or queries the data voltage threshold for setup and hold trigger. This
          command is equivalent to selecting Setup/Hold Setup from the Trig menu and then setting
          the desired Data Level.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:DATa:THReshold?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:DATa:THReshold?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:DATa:THReshold value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:DATa:THReshold {ECL|TTL|<NR3>}
        - TRIGger:A:LOGIc:SETHold:DATa:THReshold?

    **Info:**
        - ``ECL`` specifies the preset ECL high level.
        - ``TTL`` specifies the preset TTL high level.
        - ``<NR3>`` is the setup and hold data level in V.

    Properties:
        - ``.ch``: The ``TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerALogicSetholdDataThresholdChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerALogicSetholdDataThresholdChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerALogicSetholdDataThresholdChannel]:
        """Return the ``TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x>`` command.

        **Description:**
            - This command sets or queries the data voltage threshold for setup and hold trigger.
              This command is equivalent to selecting A or B Event Trigger Setup from the Trig menu
              and then setting the desired Data Level. The value of x can range from 1 through 4.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x>?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x> {ECL|TTL|<NR3>}
            - TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x>?

        **Info:**
            - ``ECL`` specifies the preset ECL high level.
            - ``TTL`` specifies the preset TTL high level.
            - ``<NR3>`` is the setup and hold data level in V.
        """
        return self._ch


class TriggerALogicSetholdDataSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:DATa:SOUrce`` command.

    **Description:**
        - This command sets or queries the data source for the setup and hold trigger. This command
          is equivalent to selecting Setup/Hold Setup from the Trig menu and choosing the desired
          channel from the Data Source drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:DATa:SOUrce?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:DATa:SOUrce?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:DATa:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:DATa:SOUrce CH<x>
        - TRIGger:A:LOGIc:SETHold:DATa:SOUrce?

    **Info:**
        - ``CH<x>`` specifies the input channel, which ranges from 1 through 4.
    """


class TriggerALogicSetholdDataLevel(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:DATa:LEVel`` command.

    **Description:**
        - This command sets or queries the data voltage level for setup and hold trigger. This
          command is equivalent to selecting Setup/Hold Setup from the Trig menu and then setting
          the desired Data Level.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:DATa:LEVel?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:DATa:LEVel?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:DATa:LEVel value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:DATa:LEVel {ECL|TTL|<NR3>}
        - TRIGger:A:LOGIc:SETHold:DATa:LEVel?

    **Info:**
        - ``ECL`` specifies the preset ECL high level.
        - ``TTL`` specifies the preset TTL high level.
        - ``<NR3>`` specifies is the setup and hold data level in V.
    """


class TriggerALogicSetholdData(SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:DATa`` command.

    **Description:**
        - This query-only command returns the voltage threshold and data source for the setup and
          hold trigger. This command is equivalent to selecting Setup/Hold Setup from the Trig menu
          and then viewing the current data setups.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:DATa?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:DATa?

    Properties:
        - ``.level``: The ``TRIGger:A:LOGIc:SETHold:DATa:LEVel`` command.
        - ``.source``: The ``TRIGger:A:LOGIc:SETHold:DATa:SOUrce`` command.
        - ``.threshold``: The ``TRIGger:A:LOGIc:SETHold:DATa:THReshold`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._level = TriggerALogicSetholdDataLevel(device, f"{self._cmd_syntax}:LEVel")
        self._source = TriggerALogicSetholdDataSource(device, f"{self._cmd_syntax}:SOUrce")
        self._threshold = TriggerALogicSetholdDataThreshold(device, f"{self._cmd_syntax}:THReshold")

    @property
    def level(self) -> TriggerALogicSetholdDataLevel:
        """Return the ``TRIGger:A:LOGIc:SETHold:DATa:LEVel`` command.

        **Description:**
            - This command sets or queries the data voltage level for setup and hold trigger. This
              command is equivalent to selecting Setup/Hold Setup from the Trig menu and then
              setting the desired Data Level.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:DATa:LEVel?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:DATa:LEVel?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:DATa:LEVel value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:DATa:LEVel {ECL|TTL|<NR3>}
            - TRIGger:A:LOGIc:SETHold:DATa:LEVel?

        **Info:**
            - ``ECL`` specifies the preset ECL high level.
            - ``TTL`` specifies the preset TTL high level.
            - ``<NR3>`` specifies is the setup and hold data level in V.
        """
        return self._level

    @property
    def source(self) -> TriggerALogicSetholdDataSource:
        """Return the ``TRIGger:A:LOGIc:SETHold:DATa:SOUrce`` command.

        **Description:**
            - This command sets or queries the data source for the setup and hold trigger. This
              command is equivalent to selecting Setup/Hold Setup from the Trig menu and choosing
              the desired channel from the Data Source drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:DATa:SOUrce?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:DATa:SOUrce?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:DATa:SOUrce value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:DATa:SOUrce CH<x>
            - TRIGger:A:LOGIc:SETHold:DATa:SOUrce?

        **Info:**
            - ``CH<x>`` specifies the input channel, which ranges from 1 through 4.
        """
        return self._source

    @property
    def threshold(self) -> TriggerALogicSetholdDataThreshold:
        """Return the ``TRIGger:A:LOGIc:SETHold:DATa:THReshold`` command.

        **Description:**
            - This command sets or queries the data voltage threshold for setup and hold trigger.
              This command is equivalent to selecting Setup/Hold Setup from the Trig menu and then
              setting the desired Data Level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:LOGIc:SETHold:DATa:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:DATa:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:DATa:THReshold value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:DATa:THReshold {ECL|TTL|<NR3>}
            - TRIGger:A:LOGIc:SETHold:DATa:THReshold?

        **Info:**
            - ``ECL`` specifies the preset ECL high level.
            - ``TTL`` specifies the preset TTL high level.
            - ``<NR3>`` is the setup and hold data level in V.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:LOGIc:SETHold:DATa:THReshold:CH<x>`` command.
        """
        return self._threshold


class TriggerALogicSetholdClockThresholdChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x>`` command.

    **Description:**
        - This command sets or queries the clock voltage threshold for setup and hold trigger. This
          command is equivalent to selecting Setup/Hold Setup from the Trig menu and then setting
          the desired Clock Level. The value of x can range from 1 through 4.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x>?`` query and raise an AssertionError if
          the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x> {ECL|TTL|<NR3>}
        - TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x>?

    **Info:**
        - ``ECL`` specifies a preset ECL high level.
        - ``TTL`` specifies a preset TTL high level.
        - ``<NR3>`` is the clock level in volts.
    """


class TriggerALogicSetholdClockThreshold(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold`` command.

    **Description:**
        - This command sets or queries the clock voltage threshold for the setup and hold trigger.
          This command is equivalent to selecting Setup/Hold Setup from the Trig menu and setting
          the desired Clock Level.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:CLOCk:THReshold {ECL|TTL|<NR3>}
        - TRIGger:A:LOGIc:SETHold:CLOCk:THReshold?

    **Info:**
        - ``ECL`` specifies a preset ECL high level.
        - ``TTL`` specifies a preset TTL high level.
        - ``<NR3>`` is the clock level in volts.

    Properties:
        - ``.ch``: The ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[
            int, TriggerALogicSetholdClockThresholdChannel
        ] = DefaultDictPassKeyToFactory(
            lambda x: TriggerALogicSetholdClockThresholdChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerALogicSetholdClockThresholdChannel]:
        """Return the ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x>`` command.

        **Description:**
            - This command sets or queries the clock voltage threshold for setup and hold trigger.
              This command is equivalent to selecting Setup/Hold Setup from the Trig menu and then
              setting the desired Clock Level. The value of x can range from 1 through 4.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x>?`` query and raise an AssertionError
              if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x> {ECL|TTL|<NR3>}
            - TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x>?

        **Info:**
            - ``ECL`` specifies a preset ECL high level.
            - ``TTL`` specifies a preset TTL high level.
            - ``<NR3>`` is the clock level in volts.
        """
        return self._ch


class TriggerALogicSetholdClockSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce`` command.

    **Description:**
        - This command sets or queries the clock source for the A or B logic trigger setup and hold
          input. This is equivalent to selecting Setup/Hold Setup from the Trig menu and choosing
          the desired channel from the Clock Source drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce CH<x>
        - TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce?

    **Info:**
        - ``CH<x>`` specifies the input channel, which ranges from 1 through 4 for four-channel
          instruments or 1 through 2 for two channel instruments.
    """


class TriggerALogicSetholdClockLevel(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:CLOCk:LEVel`` command.

    **Description:**
        - This command sets or queries the clock voltage level for the setup and hold trigger. This
          command is equivalent to selecting Setup/Hold Setup from the Trig menu and setting the
          desired Clock Level.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:CLOCk:LEVel?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:CLOCk:LEVel?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:CLOCk:LEVel value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:CLOCk:LEVel {ECL|TTL|<NR3>}
        - TRIGger:A:LOGIc:SETHold:CLOCk:LEVel?

    **Info:**
        - ``ECL`` specifies a preset ECL high level.
        - ``TTL`` specifies a preset TTL high level.
        - ``NR3`` is the setup and hold data level in V.
    """


class TriggerALogicSetholdClockEdge(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:CLOCk:EDGE`` command.

    **Description:**
        - This command sets or queries the clock edge polarity for setup and hold triggering. This
          is equivalent to selecting Setup/Hold Setup from the Trig menu and then choosing the
          desired Clock Edge.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:CLOCk:EDGE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:CLOCk:EDGE?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:SETHold:CLOCk:EDGE value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:CLOCk:EDGE {FALL|RISe}
        - TRIGger:A:LOGIc:SETHold:CLOCk:EDGE?

    **Info:**
        - ``FALL`` specifies polarity as the clock falling edge.
        - ``RISe`` specifies polarity as the clock rising edge.
    """


class TriggerALogicSetholdClock(SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold:CLOCk`` command.

    **Description:**
        - This query-only command returns the clock edge polarity, voltage threshold and source
          input for setup and hold triggering. This command is equivalent to selecting Setup/Hold
          Setup from the Trig menu and then viewing the current clock setups.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:CLOCk?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:CLOCk?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold:CLOCk?

    Properties:
        - ``.edge``: The ``TRIGger:A:LOGIc:SETHold:CLOCk:EDGE`` command.
        - ``.level``: The ``TRIGger:A:LOGIc:SETHold:CLOCk:LEVel`` command.
        - ``.source``: The ``TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce`` command.
        - ``.threshold``: The ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._edge = TriggerALogicSetholdClockEdge(device, f"{self._cmd_syntax}:EDGE")
        self._level = TriggerALogicSetholdClockLevel(device, f"{self._cmd_syntax}:LEVel")
        self._source = TriggerALogicSetholdClockSource(device, f"{self._cmd_syntax}:SOUrce")
        self._threshold = TriggerALogicSetholdClockThreshold(
            device, f"{self._cmd_syntax}:THReshold"
        )

    @property
    def edge(self) -> TriggerALogicSetholdClockEdge:
        """Return the ``TRIGger:A:LOGIc:SETHold:CLOCk:EDGE`` command.

        **Description:**
            - This command sets or queries the clock edge polarity for setup and hold triggering.
              This is equivalent to selecting Setup/Hold Setup from the Trig menu and then choosing
              the desired Clock Edge.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:CLOCk:EDGE?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:CLOCk:EDGE?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:CLOCk:EDGE value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:CLOCk:EDGE {FALL|RISe}
            - TRIGger:A:LOGIc:SETHold:CLOCk:EDGE?

        **Info:**
            - ``FALL`` specifies polarity as the clock falling edge.
            - ``RISe`` specifies polarity as the clock rising edge.
        """
        return self._edge

    @property
    def level(self) -> TriggerALogicSetholdClockLevel:
        """Return the ``TRIGger:A:LOGIc:SETHold:CLOCk:LEVel`` command.

        **Description:**
            - This command sets or queries the clock voltage level for the setup and hold trigger.
              This command is equivalent to selecting Setup/Hold Setup from the Trig menu and
              setting the desired Clock Level.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:CLOCk:LEVel?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:CLOCk:LEVel?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:CLOCk:LEVel value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:CLOCk:LEVel {ECL|TTL|<NR3>}
            - TRIGger:A:LOGIc:SETHold:CLOCk:LEVel?

        **Info:**
            - ``ECL`` specifies a preset ECL high level.
            - ``TTL`` specifies a preset TTL high level.
            - ``NR3`` is the setup and hold data level in V.
        """
        return self._level

    @property
    def source(self) -> TriggerALogicSetholdClockSource:
        """Return the ``TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce`` command.

        **Description:**
            - This command sets or queries the clock source for the A or B logic trigger setup and
              hold input. This is equivalent to selecting Setup/Hold Setup from the Trig menu and
              choosing the desired channel from the Clock Source drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce CH<x>
            - TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce?

        **Info:**
            - ``CH<x>`` specifies the input channel, which ranges from 1 through 4 for four-channel
              instruments or 1 through 2 for two channel instruments.
        """
        return self._source

    @property
    def threshold(self) -> TriggerALogicSetholdClockThreshold:
        """Return the ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold`` command.

        **Description:**
            - This command sets or queries the clock voltage threshold for the setup and hold
              trigger. This command is equivalent to selecting Setup/Hold Setup from the Trig menu
              and setting the desired Clock Level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:CLOCk:THReshold {ECL|TTL|<NR3>}
            - TRIGger:A:LOGIc:SETHold:CLOCk:THReshold?

        **Info:**
            - ``ECL`` specifies a preset ECL high level.
            - ``TTL`` specifies a preset TTL high level.
            - ``<NR3>`` is the clock level in volts.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold:CH<x>`` command.
        """
        return self._threshold


class TriggerALogicSethold(SCPICmdRead):
    """The ``TRIGger:A:LOGIc:SETHold`` command.

    **Description:**
        - This query-only command returns the clock edge polarity, voltage threshold and source
          input, data voltage threshold and source, and both setup and hold times for setup and hold
          violation triggering. This command is equivalent to selecting Setup/Hold Setup from the
          Trig menu and then viewing the current setups.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:SETHold?

    Properties:
        - ``.clock``: The ``TRIGger:A:LOGIc:SETHold:CLOCk`` command.
        - ``.data``: The ``TRIGger:A:LOGIc:SETHold:DATa`` command.
        - ``.holdtime``: The ``TRIGger:A:LOGIc:SETHold:HOLDTime`` command.
        - ``.qualify``: The ``TRIGger:A:LOGIc:SETHold:QUAlify`` command.
        - ``.settime``: The ``TRIGger:A:LOGIc:SETHold:SETTime`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._clock = TriggerALogicSetholdClock(device, f"{self._cmd_syntax}:CLOCk")
        self._data = TriggerALogicSetholdData(device, f"{self._cmd_syntax}:DATa")
        self._holdtime = TriggerALogicSetholdHoldtime(device, f"{self._cmd_syntax}:HOLDTime")
        self._qualify = TriggerALogicSetholdQualify(device, f"{self._cmd_syntax}:QUAlify")
        self._settime = TriggerALogicSetholdSettime(device, f"{self._cmd_syntax}:SETTime")

    @property
    def clock(self) -> TriggerALogicSetholdClock:
        """Return the ``TRIGger:A:LOGIc:SETHold:CLOCk`` command.

        **Description:**
            - This query-only command returns the clock edge polarity, voltage threshold and source
              input for setup and hold triggering. This command is equivalent to selecting
              Setup/Hold Setup from the Trig menu and then viewing the current clock setups.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:CLOCk?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:CLOCk?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:CLOCk?

        Sub-properties:
            - ``.edge``: The ``TRIGger:A:LOGIc:SETHold:CLOCk:EDGE`` command.
            - ``.level``: The ``TRIGger:A:LOGIc:SETHold:CLOCk:LEVel`` command.
            - ``.source``: The ``TRIGger:A:LOGIc:SETHold:CLOCk:SOUrce`` command.
            - ``.threshold``: The ``TRIGger:A:LOGIc:SETHold:CLOCk:THReshold`` command.
        """
        return self._clock

    @property
    def data(self) -> TriggerALogicSetholdData:
        """Return the ``TRIGger:A:LOGIc:SETHold:DATa`` command.

        **Description:**
            - This query-only command returns the voltage threshold and data source for the setup
              and hold trigger. This command is equivalent to selecting Setup/Hold Setup from the
              Trig menu and then viewing the current data setups.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:DATa?``
              query and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:DATa?

        Sub-properties:
            - ``.level``: The ``TRIGger:A:LOGIc:SETHold:DATa:LEVel`` command.
            - ``.source``: The ``TRIGger:A:LOGIc:SETHold:DATa:SOUrce`` command.
            - ``.threshold``: The ``TRIGger:A:LOGIc:SETHold:DATa:THReshold`` command.
        """
        return self._data

    @property
    def holdtime(self) -> TriggerALogicSetholdHoldtime:
        """Return the ``TRIGger:A:LOGIc:SETHold:HOLDTime`` command.

        **Description:**
            - This command sets or queries the hold time for setup and hold violation triggering.
              This command is equivalent to selecting Setup/Hold Setup from the Trig menu and then
              setting the desired Hold Time.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:HOLDTime?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:HOLDTime?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:HOLDTime value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:HOLDTime <NR3>
            - TRIGger:A:LOGIc:SETHold:HOLDTime?

        **Info:**
            - ``<NR3>`` specifies the hold time setting in seconds. Positive values for hold time
              occur after the clock edge. Negative values occur before the clock edge.
        """
        return self._holdtime

    @property
    def qualify(self) -> TriggerALogicSetholdQualify:
        """Return the ``TRIGger:A:LOGIc:SETHold:QUAlify`` command.

        **Description:**
            - This command sets or queries the Setup/Hold Trigger qualification. This is equivalent
              to selecting Setup/Hold Setup from the Trig menu and selecting Occurs, Logic, or Bus
              in the Trigger If Setup/Hold drop-down list box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:QUAlify?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:QUAlify?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:QUAlify value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:QUAlify {OCCurs|LOGIc|BUS}
            - TRIGger:A:LOGIc:SETHold:QUAlify?

        **Info:**
            - ``OCCurs`` specifies a trigger if any detectable event occurs.
            - ``LOGIc`` specifies a trigger if the individual channel qualifications meet the logic
              patterns and thresholds set by the.
            - ``BUS`` specifies a trigger if the bus input qualifications meet the pattern set by
              the ``TRIGGER:QUALIFICATION:BUS:VALUE`` command.
        """
        return self._qualify

    @property
    def settime(self) -> TriggerALogicSetholdSettime:
        """Return the ``TRIGger:A:LOGIc:SETHold:SETTime`` command.

        **Description:**
            - This command sets or queries the setup time for setup and hold violation triggering.
              This command is equivalent to selecting Setup/Hold Setup from the Trig menu and then
              setting the desired Setup Time.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold:SETTime?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold:SETTime?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:SETHold:SETTime value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold:SETTime <NR3>
            - TRIGger:A:LOGIc:SETHold:SETTime?

        **Info:**
            - ``<NR3>`` specifies the setup time for setup and hold violation triggering.
        """
        return self._settime


class TriggerALogicPatternWhenMorelimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:PATtern:WHEn:MORELimit`` command.

    **Description:**
        - This command sets or queries the minimum time that the selected pattern can be true and
          still generate an A or B logic pattern trigger. This command is equivalent to selecting A
          or B Event (Main) Trigger Setup from the Trig menu, selecting Pattern as the Trigger Type,
          selecting More Than for the Pattern in the Trigger When settings, and entering a minimum
          value for Time.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:PATtern:WHEn:MORELimit?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:LOGIc:PATtern:WHEn:MORELimit?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:PATtern:WHEn:MORELimit value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:PATtern:WHEn:MORELimit <NR3>
        - TRIGger:A:LOGIc:PATtern:WHEn:MORELimit?

    **Info:**
        - ``<NR3>`` specifies the amount of time to hold the pattern true.
    """


class TriggerALogicPatternWhenLesslimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit`` command.

    **Description:**
        - This command sets or queries the maximum time that the selected pattern can be true and
          still generate an A or B logic pattern trigger. This command is equivalent to selecting
          the A or B Event (Main) Trigger Setup from the Trig menu, selecting Pattern as the Trigger
          Type, selecting Less Than for the Pattern in the Trigger When settings, and entering a
          maximum value for Time.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit <NR3>
        - TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit?

    **Info:**
        - ``<NR3>`` specifies the amount of time to hold the pattern true.
    """


class TriggerALogicPatternWhen(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:PATtern:WHEn`` command.

    **Description:**
        - This command sets or queries the condition for generating an A or B logic pattern trigger
          with respect to the defined input pattern. This command is equivalent to selecting A or B
          Event (Main) Trigger Setup from the Trig menu, selecting Pattern for Trigger Type, and
          choosing a trigger condition from the Pattern drop-down list, which is located in the
          Trigger When group box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:PATtern:WHEn?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:PATtern:WHEn?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:PATtern:WHEn value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:PATtern:WHEn {TRUe|FALSe|LESSThan|MOREThan}
        - TRIGger:A:LOGIc:PATtern:WHEn?

    **Info:**
        - ``TRUe`` sets the instrument to trigger when the pattern becomes true.
        - ``FALSe`` sets the instrument to trigger when the pattern becomes false.
        - ``LESSThan`` sets the instrument to trigger if the specific pattern is true less than the
          time set by the.
        - ``MOREThan`` argument sets the instrument to trigger if the specific pattern is true
          longer than the specified time set by the.

    Properties:
        - ``.lesslimit``: The ``TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit`` command.
        - ``.morelimit``: The ``TRIGger:A:LOGIc:PATtern:WHEn:MORELimit`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._lesslimit = TriggerALogicPatternWhenLesslimit(device, f"{self._cmd_syntax}:LESSLimit")
        self._morelimit = TriggerALogicPatternWhenMorelimit(device, f"{self._cmd_syntax}:MORELimit")

    @property
    def lesslimit(self) -> TriggerALogicPatternWhenLesslimit:
        """Return the ``TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit`` command.

        **Description:**
            - This command sets or queries the maximum time that the selected pattern can be true
              and still generate an A or B logic pattern trigger. This command is equivalent to
              selecting the A or B Event (Main) Trigger Setup from the Trig menu, selecting Pattern
              as the Trigger Type, selecting Less Than for the Pattern in the Trigger When settings,
              and entering a maximum value for Time.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit <NR3>
            - TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit?

        **Info:**
            - ``<NR3>`` specifies the amount of time to hold the pattern true.
        """
        return self._lesslimit

    @property
    def morelimit(self) -> TriggerALogicPatternWhenMorelimit:
        """Return the ``TRIGger:A:LOGIc:PATtern:WHEn:MORELimit`` command.

        **Description:**
            - This command sets or queries the minimum time that the selected pattern can be true
              and still generate an A or B logic pattern trigger. This command is equivalent to
              selecting A or B Event (Main) Trigger Setup from the Trig menu, selecting Pattern as
              the Trigger Type, selecting More Than for the Pattern in the Trigger When settings,
              and entering a minimum value for Time.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:LOGIc:PATtern:WHEn:MORELimit?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:PATtern:WHEn:MORELimit?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:PATtern:WHEn:MORELimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:PATtern:WHEn:MORELimit <NR3>
            - TRIGger:A:LOGIc:PATtern:WHEn:MORELimit?

        **Info:**
            - ``<NR3>`` specifies the amount of time to hold the pattern true.
        """
        return self._morelimit


class TriggerALogicPatternInputChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:PATtern:INPut:CH<x>`` command.

    **Description:**
        - This command sets or queries the A or B logic trigger input for the specified channel.
          This command specifies the logic value used when the pattern trigger detects the threshold
          level. This command is equivalent to selecting Logic Pattern from the Trig menu and then
          choosing the desired logical input from the channel drop-down list, which is located in
          the Input Threshold group box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:PATtern:INPut:CH<x>?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:PATtern:INPut:CH<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:LOGIc:PATtern:INPut:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:PATtern:INPut:CH<x> {HIGH|LOW|X}
        - TRIGger:A:LOGIc:PATtern:INPut:CH<x>?

    **Info:**
        - ``HIGH`` specifies the logic high.
        - ``LOW`` specifies the logic low.
        - ``X`` specifies a 'don't care' state.
    """


class TriggerALogicPatternInput(SCPICmdRead):
    """The ``TRIGger:A:LOGIc:PATtern:INPut`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:PATtern:INPut?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:PATtern:INPut?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.ch``: The ``TRIGger:A:LOGIc:PATtern:INPut:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerALogicPatternInputChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerALogicPatternInputChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerALogicPatternInputChannel]:
        """Return the ``TRIGger:A:LOGIc:PATtern:INPut:CH<x>`` command.

        **Description:**
            - This command sets or queries the A or B logic trigger input for the specified channel.
              This command specifies the logic value used when the pattern trigger detects the
              threshold level. This command is equivalent to selecting Logic Pattern from the Trig
              menu and then choosing the desired logical input from the channel drop-down list,
              which is located in the Input Threshold group box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:PATtern:INPut:CH<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:LOGIc:PATtern:INPut:CH<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:PATtern:INPut:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:PATtern:INPut:CH<x> {HIGH|LOW|X}
            - TRIGger:A:LOGIc:PATtern:INPut:CH<x>?

        **Info:**
            - ``HIGH`` specifies the logic high.
            - ``LOW`` specifies the logic low.
            - ``X`` specifies a 'don't care' state.
        """
        return self._ch


class TriggerALogicPattern(SCPICmdRead):
    """The ``TRIGger:A:LOGIc:PATtern`` command.

    **Description:**
        - This query-only command returns the conditions used for generating an A logic pattern
          trigger, with respect to the defined input pattern, and identifies the maximum and minimum
          time that the selected pattern can be true and still generate the trigger. This command is
          equivalent to selecting Logic Pattern from the Trig menu and then viewing the current
          setups.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:PATtern?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:PATtern?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:PATtern?

    Properties:
        - ``.input``: The ``TRIGger:A:LOGIc:PATtern:INPut`` command tree.
        - ``.when``: The ``TRIGger:A:LOGIc:PATtern:WHEn`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._input = TriggerALogicPatternInput(device, f"{self._cmd_syntax}:INPut")
        self._when = TriggerALogicPatternWhen(device, f"{self._cmd_syntax}:WHEn")

    @property
    def input(self) -> TriggerALogicPatternInput:
        """Return the ``TRIGger:A:LOGIc:PATtern:INPut`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:PATtern:INPut?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:PATtern:INPut?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:LOGIc:PATtern:INPut:CH<x>`` command.
        """
        return self._input

    @property
    def when(self) -> TriggerALogicPatternWhen:
        """Return the ``TRIGger:A:LOGIc:PATtern:WHEn`` command.

        **Description:**
            - This command sets or queries the condition for generating an A or B logic pattern
              trigger with respect to the defined input pattern. This command is equivalent to
              selecting A or B Event (Main) Trigger Setup from the Trig menu, selecting Pattern for
              Trigger Type, and choosing a trigger condition from the Pattern drop-down list, which
              is located in the Trigger When group box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:PATtern:WHEn?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:PATtern:WHEn?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:PATtern:WHEn value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:PATtern:WHEn {TRUe|FALSe|LESSThan|MOREThan}
            - TRIGger:A:LOGIc:PATtern:WHEn?

        **Info:**
            - ``TRUe`` sets the instrument to trigger when the pattern becomes true.
            - ``FALSe`` sets the instrument to trigger when the pattern becomes false.
            - ``LESSThan`` sets the instrument to trigger if the specific pattern is true less than
              the time set by the.
            - ``MOREThan`` argument sets the instrument to trigger if the specific pattern is true
              longer than the specified time set by the.

        Sub-properties:
            - ``.lesslimit``: The ``TRIGger:A:LOGIc:PATtern:WHEn:LESSLimit`` command.
            - ``.morelimit``: The ``TRIGger:A:LOGIc:PATtern:WHEn:MORELimit`` command.
        """
        return self._when


class TriggerALogicInputFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:INPut:FORMat`` command.

    **Description:**
        - This command sets or queries the A or B logic trigger pattern format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:INPut:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:INPut:FORMat?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:INPut:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:INPut:FORMat {HEXadecimal|BINary}
        - TRIGger:A:LOGIc:INPut:FORMat?

    **Info:**
        - ``HEXadecimal`` specifies hexadecimal pattern format for A or B logic trigger.
        - ``BINary`` specifies binary pattern format for A or B logic trigger.
    """


class TriggerALogicInputChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:INPut:CH<x>`` command.

    **Description:**
        - This command sets or queries the A or B logical trigger input for the channel specified by
          x. The value of x ranges from 1 through 3. Note that CH4 cannot be set or queried with
          this command. For details about setting this channel, see . This command is equivalent to
          selecting Event Trigger Setup from the Trig menu and then choosing the desired logical
          input from the Ch<x> drop-down list, which is located in the Input Threshold group box.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:INPut:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:INPut:CH<x>?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:INPut:CH<x> value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:INPut:CH<x> {HIGH|LOW|X}
        - TRIGger:A:LOGIc:INPut:CH<x>?

    **Info:**
        - ``HIGH`` specifies the logic high.
        - ``LOW`` specifies the logic low.
        - ``X`` specifies a 'don't care' state.
    """


class TriggerALogicInputAll(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:INPut:ALL`` command.

    **Description:**
        - This command sets or queries the A or B logic trigger input condition for all the
          channels. The command is available when the Trigger Type is set to Pattern/State.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:INPut:ALL?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:INPut:ALL?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:INPut:ALL value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:INPut:ALL <QString>
        - TRIGger:A:LOGIc:INPut:ALL?

    **Info:**
        - ``<QString>`` specifies the bit pattern for all the channels.
    """

    _WRAP_ARG_WITH_QUOTES = True


class TriggerALogicInput(SCPICmdRead):
    """The ``TRIGger:A:LOGIc:INPut`` command.

    **Description:**
        - This query-only command returns the logic trigger input expected for Channel 1, 2, and 3.
          Channel 4 is set or queried with the command . This command is equivalent to selecting
          Event Trigger Setup and viewing or setting the Input Threshold for the channels.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:INPut?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:INPut?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:INPut?

    Properties:
        - ``.all``: The ``TRIGger:A:LOGIc:INPut:ALL`` command.
        - ``.ch``: The ``TRIGger:A:LOGIc:INPut:CH<x>`` command.
        - ``.format``: The ``TRIGger:A:LOGIc:INPut:FORMat`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._all = TriggerALogicInputAll(device, f"{self._cmd_syntax}:ALL")
        self._ch: Dict[int, TriggerALogicInputChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerALogicInputChannel(device, f"{self._cmd_syntax}:CH{x}")
        )
        self._format = TriggerALogicInputFormat(device, f"{self._cmd_syntax}:FORMat")

    @property
    def all(self) -> TriggerALogicInputAll:
        """Return the ``TRIGger:A:LOGIc:INPut:ALL`` command.

        **Description:**
            - This command sets or queries the A or B logic trigger input condition for all the
              channels. The command is available when the Trigger Type is set to Pattern/State.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:INPut:ALL?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:INPut:ALL?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:INPut:ALL value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:INPut:ALL <QString>
            - TRIGger:A:LOGIc:INPut:ALL?

        **Info:**
            - ``<QString>`` specifies the bit pattern for all the channels.
        """
        return self._all

    @property
    def ch(self) -> Dict[int, TriggerALogicInputChannel]:
        """Return the ``TRIGger:A:LOGIc:INPut:CH<x>`` command.

        **Description:**
            - This command sets or queries the A or B logical trigger input for the channel
              specified by x. The value of x ranges from 1 through 3. Note that CH4 cannot be set or
              queried with this command. For details about setting this channel, see . This command
              is equivalent to selecting Event Trigger Setup from the Trig menu and then choosing
              the desired logical input from the Ch<x> drop-down list, which is located in the Input
              Threshold group box.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:INPut:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:INPut:CH<x>?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:INPut:CH<x> value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:INPut:CH<x> {HIGH|LOW|X}
            - TRIGger:A:LOGIc:INPut:CH<x>?

        **Info:**
            - ``HIGH`` specifies the logic high.
            - ``LOW`` specifies the logic low.
            - ``X`` specifies a 'don't care' state.
        """
        return self._ch

    @property
    def format(self) -> TriggerALogicInputFormat:
        """Return the ``TRIGger:A:LOGIc:INPut:FORMat`` command.

        **Description:**
            - This command sets or queries the A or B logic trigger pattern format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:INPut:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:INPut:FORMat?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:LOGIc:INPut:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:INPut:FORMat {HEXadecimal|BINary}
            - TRIGger:A:LOGIc:INPut:FORMat?

        **Info:**
            - ``HEXadecimal`` specifies hexadecimal pattern format for A or B logic trigger.
            - ``BINary`` specifies binary pattern format for A or B logic trigger.
        """
        return self._format


class TriggerALogicFunction(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:FUNCtion`` command.

    **Description:**
        - This command sets or queries the logical combination of the input channels for logic
          triggers. This command is equivalent to selecting Logic for the Trigger Type, and setting
          or viewing the Define Logic.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:FUNCtion?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:FUNCtion?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:FUNCtion value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:FUNCtion {AND|NANd|NOR|OR}
        - TRIGger:A:LOGIc:FUNCtion?

    **Info:**
        - ``AND`` specifies to trigger if all conditions are true.
        - ``NANd`` specifies to trigger if any of the conditions are false.
        - ``NOR`` specifies to trigger if all conditions are false.
        - ``OR`` specifies to trigger if any of the conditions are true.
    """


class TriggerALogicClass(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LOGIc:CLAss`` command.

    **Description:**
        - This command sets or queries the class of the Logic Trigger. Used with the command, this
          command is equivalent to selecting Logic Pattern, Logic State, or Setup/Hold Setup from
          the Trig menu.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:CLAss?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:CLAss?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:CLAss value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc:CLAss {PATtern|STATE|SETHold}
        - TRIGger:A:LOGIc:CLAss?

    **Info:**
        - ``PATtern`` sets the instrument to trigger when the specified logical combinations of
          Channels 1, 2, 3, and 4 are met.
        - ``STATE`` sets the instrument to trigger when the specified conditions of Channels 1, 2,
          and 3 are met after the Channel 4 (clock) condition is met.
        - ``SETHold`` sets the instrument to trigger on setup and hold violations between a data
          source and a clock source. Use one channel input as the clock signal and a second channel
          input as the data input. The clocking and data levels are used to determine if a clock or
          data transition has occurred.
    """


class TriggerALogic(SCPICmdRead):
    """The ``TRIGger:A:LOGIc`` command.

    **Description:**
        - This query-only command returns all of the logic trigger parameters.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LOGIc?

    Properties:
        - ``.class``: The ``TRIGger:A:LOGIc:CLAss`` command.
        - ``.function``: The ``TRIGger:A:LOGIc:FUNCtion`` command.
        - ``.input``: The ``TRIGger:A:LOGIc:INPut`` command.
        - ``.pattern``: The ``TRIGger:A:LOGIc:PATtern`` command.
        - ``.sethold``: The ``TRIGger:A:LOGIc:SETHold`` command.
        - ``.state``: The ``TRIGger:A:LOGIc:STATE`` command.
        - ``.threshold``: The ``TRIGger:A:LOGIc:THReshold`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._class = TriggerALogicClass(device, f"{self._cmd_syntax}:CLAss")
        self._function = TriggerALogicFunction(device, f"{self._cmd_syntax}:FUNCtion")
        self._input = TriggerALogicInput(device, f"{self._cmd_syntax}:INPut")
        self._pattern = TriggerALogicPattern(device, f"{self._cmd_syntax}:PATtern")
        self._sethold = TriggerALogicSethold(device, f"{self._cmd_syntax}:SETHold")
        self._state = TriggerALogicState(device, f"{self._cmd_syntax}:STATE")
        self._threshold = TriggerALogicThreshold(device, f"{self._cmd_syntax}:THReshold")

    @property
    def class_(self) -> TriggerALogicClass:
        """Return the ``TRIGger:A:LOGIc:CLAss`` command.

        **Description:**
            - This command sets or queries the class of the Logic Trigger. Used with the command,
              this command is equivalent to selecting Logic Pattern, Logic State, or Setup/Hold
              Setup from the Trig menu.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:CLAss?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:CLAss?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:CLAss value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:CLAss {PATtern|STATE|SETHold}
            - TRIGger:A:LOGIc:CLAss?

        **Info:**
            - ``PATtern`` sets the instrument to trigger when the specified logical combinations of
              Channels 1, 2, 3, and 4 are met.
            - ``STATE`` sets the instrument to trigger when the specified conditions of Channels 1,
              2, and 3 are met after the Channel 4 (clock) condition is met.
            - ``SETHold`` sets the instrument to trigger on setup and hold violations between a data
              source and a clock source. Use one channel input as the clock signal and a second
              channel input as the data input. The clocking and data levels are used to determine if
              a clock or data transition has occurred.
        """
        return self._class

    @property
    def function(self) -> TriggerALogicFunction:
        """Return the ``TRIGger:A:LOGIc:FUNCtion`` command.

        **Description:**
            - This command sets or queries the logical combination of the input channels for logic
              triggers. This command is equivalent to selecting Logic for the Trigger Type, and
              setting or viewing the Define Logic.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:FUNCtion?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:FUNCtion?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:LOGIc:FUNCtion value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:FUNCtion {AND|NANd|NOR|OR}
            - TRIGger:A:LOGIc:FUNCtion?

        **Info:**
            - ``AND`` specifies to trigger if all conditions are true.
            - ``NANd`` specifies to trigger if any of the conditions are false.
            - ``NOR`` specifies to trigger if all conditions are false.
            - ``OR`` specifies to trigger if any of the conditions are true.
        """
        return self._function

    @property
    def input(self) -> TriggerALogicInput:
        """Return the ``TRIGger:A:LOGIc:INPut`` command.

        **Description:**
            - This query-only command returns the logic trigger input expected for Channel 1, 2, and
              3. Channel 4 is set or queried with the command . This command is equivalent to
              selecting Event Trigger Setup and viewing or setting the Input Threshold for the
              channels.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:INPut?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:INPut?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:INPut?

        Sub-properties:
            - ``.all``: The ``TRIGger:A:LOGIc:INPut:ALL`` command.
            - ``.ch``: The ``TRIGger:A:LOGIc:INPut:CH<x>`` command.
            - ``.format``: The ``TRIGger:A:LOGIc:INPut:FORMat`` command.
        """
        return self._input

    @property
    def pattern(self) -> TriggerALogicPattern:
        """Return the ``TRIGger:A:LOGIc:PATtern`` command.

        **Description:**
            - This query-only command returns the conditions used for generating an A logic pattern
              trigger, with respect to the defined input pattern, and identifies the maximum and
              minimum time that the selected pattern can be true and still generate the trigger.
              This command is equivalent to selecting Logic Pattern from the Trig menu and then
              viewing the current setups.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:PATtern?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:PATtern?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:PATtern?

        Sub-properties:
            - ``.input``: The ``TRIGger:A:LOGIc:PATtern:INPut`` command tree.
            - ``.when``: The ``TRIGger:A:LOGIc:PATtern:WHEn`` command.
        """
        return self._pattern

    @property
    def sethold(self) -> TriggerALogicSethold:
        """Return the ``TRIGger:A:LOGIc:SETHold`` command.

        **Description:**
            - This query-only command returns the clock edge polarity, voltage threshold and source
              input, data voltage threshold and source, and both setup and hold times for setup and
              hold violation triggering. This command is equivalent to selecting Setup/Hold Setup
              from the Trig menu and then viewing the current setups.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:SETHold?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:SETHold?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:SETHold?

        Sub-properties:
            - ``.clock``: The ``TRIGger:A:LOGIc:SETHold:CLOCk`` command.
            - ``.data``: The ``TRIGger:A:LOGIc:SETHold:DATa`` command.
            - ``.holdtime``: The ``TRIGger:A:LOGIc:SETHold:HOLDTime`` command.
            - ``.qualify``: The ``TRIGger:A:LOGIc:SETHold:QUAlify`` command.
            - ``.settime``: The ``TRIGger:A:LOGIc:SETHold:SETTime`` command.
        """
        return self._sethold

    @property
    def state(self) -> TriggerALogicState:
        """Return the ``TRIGger:A:LOGIc:STATE`` command.

        **Description:**
            - This query-only command returns the data input and trigger criteria for the logic
              trigger. This command is equivalent to selecting Logic State from the Trig menu and
              then viewing the current logic state settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:STATE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:STATE?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:STATE?

        Sub-properties:
            - ``.clock``: The ``TRIGger:A:LOGIc:STATE:CLOck`` command tree.
            - ``.input``: The ``TRIGger:A:LOGIc:STATE:INPut`` command tree.
            - ``.when``: The ``TRIGger:A:LOGIc:STATE:WHEn`` command.
        """
        return self._state

    @property
    def threshold(self) -> TriggerALogicThreshold:
        """Return the ``TRIGger:A:LOGIc:THReshold`` command.

        **Description:**
            - This query-only command returns the threshold voltage for all channels in a logic
              trigger. This command query is equivalent to selecting Event Trigger Setup from the
              Trig menu, choosing a logic trigger type, such as State or Pattern, and viewing the
              current Input Threshold voltage settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc:THReshold?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc:THReshold?

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:LOGIc:THReshold:CH<x>`` command.
        """
        return self._threshold


class TriggerALevelChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LEVel:CH<x>`` command.

    **Description:**
        - This command sets or queries the CH<x> trigger level for
          ``TRIGGER:LVLSRCPREFERENCE SRCDEPENDENT`` mode. The CH<x> range is 1 to 4.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LEVel:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LEVel:CH<x>?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:LEVel:CH<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LEVel:CH<x> {ECL|TTL|<NR3>}
        - TRIGger:A:LEVel:CH<x>?

    **Info:**
        - ``ECL`` specifies the ECL high level.
        - ``TTL`` specifies the TTL high level.
        - ``<NR3>`` specifies the trigger level in user units (usually volts).
    """


class TriggerALevel(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:LEVel`` command.

    **Description:**
        - This command sets or queries the level for the trigger. This command is equivalent to
          selecting Holdoff from the Trig menu and then viewing or setting the trigger Level or
          selecting B Event (Delayed) Trigger Setup from the Trig menu and setting the B Trig Level
          voltage.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:LEVel?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:LEVel?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:LEVel value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:LEVel {ECL|TTL|<NR3>}
        - TRIGger:A:LEVel?

    **Info:**
        - ``ECL`` specifies the ECL high level.
        - ``TTL`` specifies the TTL high level.
        - ``<NR3>`` specifies the trigger level in user units (usually volts).

    Properties:
        - ``.ch``: The ``TRIGger:A:LEVel:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerALevelChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerALevelChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerALevelChannel]:
        """Return the ``TRIGger:A:LEVel:CH<x>`` command.

        **Description:**
            - This command sets or queries the CH<x> trigger level for
              ``TRIGGER:LVLSRCPREFERENCE SRCDEPENDENT`` mode. The CH<x> range is 1 to 4.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LEVel:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LEVel:CH<x>?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:LEVel:CH<x> value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LEVel:CH<x> {ECL|TTL|<NR3>}
            - TRIGger:A:LEVel:CH<x>?

        **Info:**
            - ``ECL`` specifies the ECL high level.
            - ``TTL`` specifies the TTL high level.
            - ``<NR3>`` specifies the trigger level in user units (usually volts).
        """
        return self._ch


class TriggerAI2cAddressRwinclude(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:I2C:ADDRess:RWINClude`` command.

    **Description:**
        - Sets the I2C read/write bit to address type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:I2C:ADDRess:RWINClude?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:I2C:ADDRess:RWINClude?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:I2C:ADDRess:RWINClude value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:I2C:ADDRess:RWINClude {OFF|ON}
        - TRIGger:A:I2C:ADDRess:RWINClude?

    **Info:**
        - ``ON`` specifies the I2C read/write bit to address type.
        - ``OFF`` specifies to stop the I2C read/write bit to address type.
    """


class TriggerAI2cAddress(SCPICmdRead):
    """The ``TRIGger:A:I2C:ADDRess`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:I2C:ADDRess?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:I2C:ADDRess?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.rwinclude``: The ``TRIGger:A:I2C:ADDRess:RWINClude`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._rwinclude = TriggerAI2cAddressRwinclude(device, f"{self._cmd_syntax}:RWINClude")

    @property
    def rwinclude(self) -> TriggerAI2cAddressRwinclude:
        """Return the ``TRIGger:A:I2C:ADDRess:RWINClude`` command.

        **Description:**
            - Sets the I2C read/write bit to address type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:I2C:ADDRess:RWINClude?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:I2C:ADDRess:RWINClude?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:I2C:ADDRess:RWINClude value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:I2C:ADDRess:RWINClude {OFF|ON}
            - TRIGger:A:I2C:ADDRess:RWINClude?

        **Info:**
            - ``ON`` specifies the I2C read/write bit to address type.
            - ``OFF`` specifies to stop the I2C read/write bit to address type.
        """
        return self._rwinclude


class TriggerAI2c(SCPICmdRead):
    """The ``TRIGger:A:I2C`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:I2C?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:I2C?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.address``: The ``TRIGger:A:I2C:ADDRess`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._address = TriggerAI2cAddress(device, f"{self._cmd_syntax}:ADDRess")

    @property
    def address(self) -> TriggerAI2cAddress:
        """Return the ``TRIGger:A:I2C:ADDRess`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:I2C:ADDRess?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:I2C:ADDRess?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.rwinclude``: The ``TRIGger:A:I2C:ADDRess:RWINClude`` command.
        """
        return self._address


class TriggerAHoldoffTime(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:HOLDoff:TIMe`` command.

    **Description:**
        - This command sets or queries the A trigger holdoff time. This command is equivalent to
          selecting Mode & Holdoff from the Trig menu, selecting Time, and then setting the desired
          Holdoff Time.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:HOLDoff:TIMe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:HOLDoff:TIMe?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:HOLDoff:TIMe value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:HOLDoff:TIMe <NR3>
        - TRIGger:A:HOLDoff:TIMe?

    **Info:**
        - ``<NR3>`` specifies the holdoff time in seconds. The range is from 0 seconds through 10
          seconds.
    """


class TriggerAHoldoffBy(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:HOLDoff:BY`` command.

    **Description:**
        - This command sets or queries the type of holdoff for the A trigger. Holdoff types are
          expressed as either user-specified time (TIMe) or by an internally calculated minimum time
          value (DEFAult/AUTO). This command is equivalent to selecting Holdoff from the Trig menu
          and then setting the Holdoff type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:HOLDoff:BY?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:HOLDoff:BY?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:HOLDoff:BY value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:HOLDoff:BY {TIMe|DEFAult|RANDom|AUTO}
        - TRIGger:A:HOLDoff:BY?

    **Info:**
        - ``TIMe`` enables you to set the holdoff time via the ``TRIGGER:A:HOLDOFF:TIME`` command.
        - ``DEFAult`` automatically calculates a holdoff time to use. This time is typically
          equivalent to the greater of 1/2 screen (5 divisions) of time or 250 ns. The maximum value
          is 12 s. For example, if the instrument is set to 1 ms/division then the default holdoff
          will be 1 ms/division x 25 divisions = 25 ms.
        - ``RANDom``
        - ``AUTO``
    """


class TriggerAHoldoffActual(SCPICmdRead):
    """The ``TRIGger:A:HOLDoff:ACTUal`` command.

    **Description:**
        - This query-only command returns the holdoff time actually used (expressed in seconds) by
          the A trigger. This command is equivalent to selecting Holdoff from the Trig menu and then
          viewing the current Trig Holdoff value.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:HOLDoff:ACTUal?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:HOLDoff:ACTUal?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:HOLDoff:ACTUal?
    """


class TriggerAHoldoff(SCPICmdRead):
    """The ``TRIGger:A:HOLDoff`` command.

    **Description:**
        - Returns the A trigger holdoff parameters. These parameters specify the time period during
          which the trigger circuitry is not looking to generate a trigger event.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:HOLDoff?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:HOLDoff?`` query and raise
          an AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:HOLDoff?

    Properties:
        - ``.actual``: The ``TRIGger:A:HOLDoff:ACTUal`` command.
        - ``.by``: The ``TRIGger:A:HOLDoff:BY`` command.
        - ``.time``: The ``TRIGger:A:HOLDoff:TIMe`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._actual = TriggerAHoldoffActual(device, f"{self._cmd_syntax}:ACTUal")
        self._by = TriggerAHoldoffBy(device, f"{self._cmd_syntax}:BY")
        self._time = TriggerAHoldoffTime(device, f"{self._cmd_syntax}:TIMe")

    @property
    def actual(self) -> TriggerAHoldoffActual:
        """Return the ``TRIGger:A:HOLDoff:ACTUal`` command.

        **Description:**
            - This query-only command returns the holdoff time actually used (expressed in seconds)
              by the A trigger. This command is equivalent to selecting Holdoff from the Trig menu
              and then viewing the current Trig Holdoff value.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:HOLDoff:ACTUal?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:HOLDoff:ACTUal?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:HOLDoff:ACTUal?
        """
        return self._actual

    @property
    def by(self) -> TriggerAHoldoffBy:
        """Return the ``TRIGger:A:HOLDoff:BY`` command.

        **Description:**
            - This command sets or queries the type of holdoff for the A trigger. Holdoff types are
              expressed as either user-specified time (TIMe) or by an internally calculated minimum
              time value (DEFAult/AUTO). This command is equivalent to selecting Holdoff from the
              Trig menu and then setting the Holdoff type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:HOLDoff:BY?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:HOLDoff:BY?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:HOLDoff:BY value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:HOLDoff:BY {TIMe|DEFAult|RANDom|AUTO}
            - TRIGger:A:HOLDoff:BY?

        **Info:**
            - ``TIMe`` enables you to set the holdoff time via the ``TRIGGER:A:HOLDOFF:TIME``
              command.
            - ``DEFAult`` automatically calculates a holdoff time to use. This time is typically
              equivalent to the greater of 1/2 screen (5 divisions) of time or 250 ns. The maximum
              value is 12 s. For example, if the instrument is set to 1 ms/division then the default
              holdoff will be 1 ms/division x 25 divisions = 25 ms.
            - ``RANDom``
            - ``AUTO``
        """
        return self._by

    @property
    def time(self) -> TriggerAHoldoffTime:
        """Return the ``TRIGger:A:HOLDoff:TIMe`` command.

        **Description:**
            - This command sets or queries the A trigger holdoff time. This command is equivalent to
              selecting Mode & Holdoff from the Trig menu, selecting Time, and then setting the
              desired Holdoff Time.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:HOLDoff:TIMe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:HOLDoff:TIMe?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:HOLDoff:TIMe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:HOLDoff:TIMe <NR3>
            - TRIGger:A:HOLDoff:TIMe?

        **Info:**
            - ``<NR3>`` specifies the holdoff time in seconds. The range is from 0 seconds through
              10 seconds.
        """
        return self._time


class TriggerAEdgeSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:EDGE:SOUrce`` command.

    **Description:**
        - This command sets or queries the source for the edge trigger. This command is equivalent
          to selecting Event Trigger Setup from the Trig menu and then choosing from the Source
          drop-down list. When an UltraSync stack is in use, the mapped channels are used to both
          acquire waveform data and to trigger the oscilloscope. In the special case of an UltraSync
          stack master, additional channels are available for triggering. These are the unmapped
          channels. For an ATI UltraSync Sstack master, CH2, MCH1, and MCH3 can be used for
          triggering. For a 4-Channel UltraSync stack master, CH1, MCH2, MCH3, and MCH4 are
          available for triggering. The vertical min/max amplitude for these signals must be setup.
          See for more details.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:EDGE:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE:SOUrce?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:EDGE:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:EDGE:SOUrce {AUXiliary|CH<x>|MCH<x>|LINE|D<x>}
        - TRIGger:A:EDGE:SOUrce?

    **Info:**
        - ``AUXiliary`` specifies an external trigger using the Auxiliary Trigger Input. x can be 1,
          2, 3, or 4.
        - ``CH<x>`` specifies one input channel as the edge trigger source.
        - ``MCH<x>`` specifies an unmapped channel on an UltraSync stack master. For more details
          see.
        - ``LINE`` specifies AC line voltage, and is for A Trigger only.
        - ``D<x>`` specifies a digital input as the edge trigger source. x can be 0 through 15.
    """


class TriggerAEdgeSlopeChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:EDGE:SLOpe:CH<x>`` command.

    **Description:**
        - This command sets or queries the slope for the edge trigger for the specified channel.
          This command is equivalent to selecting A Event or B Event Trigger Setup from the Trig
          menu and then choosing the desired Slope.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:EDGE:SLOpe:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE:SLOpe:CH<x>?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:EDGE:SLOpe:CH<x> value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:EDGE:SLOpe:CH<x> {RISe|FALL|EITher}
        - TRIGger:A:EDGE:SLOpe:CH<x>?

    **Info:**
        - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
        - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
        - ``EITher`` specifies to trigger on either the rising or falling edge of a signal. EITHER
          is only available on the DPO7000C and DPO/DSA/MSO70000C/D/DX Series instruments.
    """


class TriggerAEdgeSlopeAux(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:EDGE:SLOpe:AUX`` command.

    **Description:**
        - This command sets or queries the slope for the edge trigger for the AUX In input. This
          command is equivalent to selecting A Event or B Event Trigger Setup from the Trig menu and
          then choosing the desired Slope.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:EDGE:SLOpe:AUX?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE:SLOpe:AUX?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:EDGE:SLOpe:AUX value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:EDGE:SLOpe:AUX {RISe|FALL|EITHER}
        - TRIGger:A:EDGE:SLOpe:AUX?

    **Info:**
        - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
        - ``EITHER`` specifies to trigger on either the rising or falling edge of a signal. EITHER
          is only available on the DPO7000C and DPO/DSA/MSO70000C/D/DX Series instruments.
    """


class TriggerAEdgeSlope(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:EDGE:SLOpe`` command.

    **Description:**
        - This command sets or queries the slope for the edge trigger. This command is equivalent to
          selecting Edge from the Trigger Type drop-down in the Trigger setup context menu, and then
          choosing the desired Slope. This command is also equivalent to pressing the front-panel
          Slope button.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:EDGE:SLOpe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE:SLOpe?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:EDGE:SLOpe value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:EDGE:SLOpe {RISe|FALL|EITher}
        - TRIGger:A:EDGE:SLOpe?

    **Info:**
        - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
        - ``FALL`` specifies to trigger on the falling or negative edge of a signal.

    Properties:
        - ``.aux``: The ``TRIGger:A:EDGE:SLOpe:AUX`` command.
        - ``.ch``: The ``TRIGger:A:EDGE:SLOpe:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._aux = TriggerAEdgeSlopeAux(device, f"{self._cmd_syntax}:AUX")
        self._ch: Dict[int, TriggerAEdgeSlopeChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerAEdgeSlopeChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def aux(self) -> TriggerAEdgeSlopeAux:
        """Return the ``TRIGger:A:EDGE:SLOpe:AUX`` command.

        **Description:**
            - This command sets or queries the slope for the edge trigger for the AUX In input. This
              command is equivalent to selecting A Event or B Event Trigger Setup from the Trig menu
              and then choosing the desired Slope.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:EDGE:SLOpe:AUX?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE:SLOpe:AUX?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:EDGE:SLOpe:AUX value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:EDGE:SLOpe:AUX {RISe|FALL|EITHER}
            - TRIGger:A:EDGE:SLOpe:AUX?

        **Info:**
            - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
            - ``EITHER`` specifies to trigger on either the rising or falling edge of a signal.
              EITHER is only available on the DPO7000C and DPO/DSA/MSO70000C/D/DX Series
              instruments.
        """
        return self._aux

    @property
    def ch(self) -> Dict[int, TriggerAEdgeSlopeChannel]:
        """Return the ``TRIGger:A:EDGE:SLOpe:CH<x>`` command.

        **Description:**
            - This command sets or queries the slope for the edge trigger for the specified channel.
              This command is equivalent to selecting A Event or B Event Trigger Setup from the Trig
              menu and then choosing the desired Slope.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:EDGE:SLOpe:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE:SLOpe:CH<x>?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:EDGE:SLOpe:CH<x> value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:EDGE:SLOpe:CH<x> {RISe|FALL|EITher}
            - TRIGger:A:EDGE:SLOpe:CH<x>?

        **Info:**
            - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
            - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
            - ``EITher`` specifies to trigger on either the rising or falling edge of a signal.
              EITHER is only available on the DPO7000C and DPO/DSA/MSO70000C/D/DX Series
              instruments.
        """
        return self._ch


class TriggerAEdgeCouplingChannel(ValidatedChannel, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:EDGE:COUPling:CH<x>`` command.

    **Description:**
        - This command sets or queries the type of coupling for the A or B trigger for the specified
          channel. This command is equivalent to selecting A or B Trigger Setup from the Trig menu
          and choosing the setting from the Coupling drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:EDGE:COUPling:CH<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE:COUPling:CH<x>?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:EDGE:COUPling:CH<x> value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:EDGE:COUPling:CH<x> {AC|DC|HFRej|LFRej|NOISErej}
        - TRIGger:A:EDGE:COUPling:CH<x>?

    **Info:**
        - ``AC`` selects AC trigger coupling.
        - ``DC`` selects DC trigger coupling.
        - ``HFRej`` selects high frequency low sensitivity.
        - ``LFRej`` selects low frequency low sensitivity.
        - ``NOISErej`` selects DC low sensitivity.
    """


class TriggerAEdgeCoupling(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:EDGE:COUPling`` command.

    **Description:**
        - This command sets or queries the type of coupling for the edge trigger. This command is
          equivalent to selecting Event Trigger Setup from the Trig menu, selecting Edge Trigger,
          and choosing from the Coupling drop-down list.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:EDGE:COUPling?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE:COUPling?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:EDGE:COUPling value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:EDGE:COUPling {AC|DC|HFRej|LFRej|NOISErej|ATRIGger}
        - TRIGger:A:EDGE:COUPling?

    **Info:**
        - ``AC`` selects AC trigger coupling, which passes the input signals above 60 Hz to the
          trigger circuitry.
        - ``DC`` selects DC trigger coupling, which passes all input signals to the trigger
          circuitry.
        - ``HFRej`` coupling attenuates signals above 50 kHz before passing the signals to the
          trigger circuitry.
        - ``LFRej`` coupling attenuates signals below 80 kHz before passing the signals to the
          trigger circuitry.
        - ``NOISErej`` coupling provides stable triggering by increasing the trigger hysteresis.
          Increased hysteresis reduces the trigger sensitivity to noise but can require greater
          trigger signal amplitude.
        - ``ATRIGger`` this B trigger command sets the B trigger coupling to match the setting on
          the A trigger.

    Properties:
        - ``.ch``: The ``TRIGger:A:EDGE:COUPling:CH<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._ch: Dict[int, TriggerAEdgeCouplingChannel] = DefaultDictPassKeyToFactory(
            lambda x: TriggerAEdgeCouplingChannel(device, f"{self._cmd_syntax}:CH{x}")
        )

    @property
    def ch(self) -> Dict[int, TriggerAEdgeCouplingChannel]:
        """Return the ``TRIGger:A:EDGE:COUPling:CH<x>`` command.

        **Description:**
            - This command sets or queries the type of coupling for the A or B trigger for the
              specified channel. This command is equivalent to selecting A or B Trigger Setup from
              the Trig menu and choosing the setting from the Coupling drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:EDGE:COUPling:CH<x>?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE:COUPling:CH<x>?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:EDGE:COUPling:CH<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:EDGE:COUPling:CH<x> {AC|DC|HFRej|LFRej|NOISErej}
            - TRIGger:A:EDGE:COUPling:CH<x>?

        **Info:**
            - ``AC`` selects AC trigger coupling.
            - ``DC`` selects DC trigger coupling.
            - ``HFRej`` selects high frequency low sensitivity.
            - ``LFRej`` selects low frequency low sensitivity.
            - ``NOISErej`` selects DC low sensitivity.
        """
        return self._ch


class TriggerAEdge(SCPICmdRead):
    """The ``TRIGger:A:EDGE`` command.

    **Description:**
        - This query-only command returns the trigger source, coupling, and slope for the specified
          edge trigger. This command is equivalent to selecting Edge Setup from the Trig menu and
          viewing the current setups, or selecting B Event (Delayed) Trigger Setup from the Trig
          menu and viewing the current Source, Slope, and Coupling settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:EDGE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    **SCPI Syntax:**

    ::

        - TRIGger:A:EDGE?

    Properties:
        - ``.coupling``: The ``TRIGger:A:EDGE:COUPling`` command.
        - ``.slope``: The ``TRIGger:A:EDGE:SLOpe`` command.
        - ``.source``: The ``TRIGger:A:EDGE:SOUrce`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._coupling = TriggerAEdgeCoupling(device, f"{self._cmd_syntax}:COUPling")
        self._slope = TriggerAEdgeSlope(device, f"{self._cmd_syntax}:SLOpe")
        self._source = TriggerAEdgeSource(device, f"{self._cmd_syntax}:SOUrce")

    @property
    def coupling(self) -> TriggerAEdgeCoupling:
        """Return the ``TRIGger:A:EDGE:COUPling`` command.

        **Description:**
            - This command sets or queries the type of coupling for the edge trigger. This command
              is equivalent to selecting Event Trigger Setup from the Trig menu, selecting Edge
              Trigger, and choosing from the Coupling drop-down list.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:EDGE:COUPling?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE:COUPling?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:EDGE:COUPling value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:EDGE:COUPling {AC|DC|HFRej|LFRej|NOISErej|ATRIGger}
            - TRIGger:A:EDGE:COUPling?

        **Info:**
            - ``AC`` selects AC trigger coupling, which passes the input signals above 60 Hz to the
              trigger circuitry.
            - ``DC`` selects DC trigger coupling, which passes all input signals to the trigger
              circuitry.
            - ``HFRej`` coupling attenuates signals above 50 kHz before passing the signals to the
              trigger circuitry.
            - ``LFRej`` coupling attenuates signals below 80 kHz before passing the signals to the
              trigger circuitry.
            - ``NOISErej`` coupling provides stable triggering by increasing the trigger hysteresis.
              Increased hysteresis reduces the trigger sensitivity to noise but can require greater
              trigger signal amplitude.
            - ``ATRIGger`` this B trigger command sets the B trigger coupling to match the setting
              on the A trigger.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:EDGE:COUPling:CH<x>`` command.
        """
        return self._coupling

    @property
    def slope(self) -> TriggerAEdgeSlope:
        """Return the ``TRIGger:A:EDGE:SLOpe`` command.

        **Description:**
            - This command sets or queries the slope for the edge trigger. This command is
              equivalent to selecting Edge from the Trigger Type drop-down in the Trigger setup
              context menu, and then choosing the desired Slope. This command is also equivalent to
              pressing the front-panel Slope button.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:EDGE:SLOpe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE:SLOpe?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:EDGE:SLOpe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:EDGE:SLOpe {RISe|FALL|EITher}
            - TRIGger:A:EDGE:SLOpe?

        **Info:**
            - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
            - ``FALL`` specifies to trigger on the falling or negative edge of a signal.

        Sub-properties:
            - ``.aux``: The ``TRIGger:A:EDGE:SLOpe:AUX`` command.
            - ``.ch``: The ``TRIGger:A:EDGE:SLOpe:CH<x>`` command.
        """
        return self._slope

    @property
    def source(self) -> TriggerAEdgeSource:
        """Return the ``TRIGger:A:EDGE:SOUrce`` command.

        **Description:**
            - This command sets or queries the source for the edge trigger. This command is
              equivalent to selecting Event Trigger Setup from the Trig menu and then choosing from
              the Source drop-down list. When an UltraSync stack is in use, the mapped channels are
              used to both acquire waveform data and to trigger the oscilloscope. In the special
              case of an UltraSync stack master, additional channels are available for triggering.
              These are the unmapped channels. For an ATI UltraSync Sstack master, CH2, MCH1, and
              MCH3 can be used for triggering. For a 4-Channel UltraSync stack master, CH1, MCH2,
              MCH3, and MCH4 are available for triggering. The vertical min/max amplitude for these
              signals must be setup. See for more details.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:EDGE:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE:SOUrce?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:EDGE:SOUrce value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:EDGE:SOUrce {AUXiliary|CH<x>|MCH<x>|LINE|D<x>}
            - TRIGger:A:EDGE:SOUrce?

        **Info:**
            - ``AUXiliary`` specifies an external trigger using the Auxiliary Trigger Input. x can
              be 1, 2, 3, or 4.
            - ``CH<x>`` specifies one input channel as the edge trigger source.
            - ``MCH<x>`` specifies an unmapped channel on an UltraSync stack master. For more
              details see.
            - ``LINE`` specifies AC line voltage, and is for A Trigger only.
            - ``D<x>`` specifies a digital input as the edge trigger source. x can be 0 through 15.
        """
        return self._source


class TriggerACommunicationStandard(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:STANdard`` command.

    **Description:**
        - This command sets or queries the standard that identifies the code and bit rate. The bit
          rate is used to compute the Unit Interval, which is the inverse of the bit rate. The Unit
          Interval influences time skew in an Eye Diagram, where you perform post processing on AMI
          isolated pulses, and pulse width settings if CMI.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:STANdard?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:STANdard?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:STANdard value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:STANdard {ATAG<x>|CLOCKCoax| CLOCKSymmetrical|Custom|D<x>|DS0Contra| DS0Double| DS0Single|DS0Timing|DS1|DS1A| DS1C|DS2| DS2RATECoax|DS2RATESymmetrical| DS3|DS4NA|E1|E2|E3|E4|ENET100|ENET1250| ENETXAUI| FC133|FC266|FC531|FC1063|FC2125|FC4250| FST|FW1394BS400B|FW1394BS1600B|HST|INF2_5G| OC1|OC3| OC12|OC48|OC48_FEC|PCIEXPRESS|RATE32Mbit| RATE97Mbit|RIO_500M|RIO_750M| RIO_1G|RIO_2G|RIO_1_5G|RIO_SERIAL_1G| RIO_SERIAL_2G|RIO_SERIAL_3G|SAS1_5|SAS3_?| SFI5_2|SFI5_3|STM0_CMI|STM0_HDBX|STM1E|STS1| STS3| TFI5_2|TFI5_3|VIDEO270|VIDEO292M|VIDEO360|VSROC192}
        - TRIGger:A:COMMunication:STANdard?
    """  # noqa: E501


class TriggerACommunicationSourceType(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:SOUrce:TYPe`` command.

    **Description:**
        - This command sets or queries the source type. This command works only when the Eye Diagram
          pulseform is selected.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:SOUrce:TYPe?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:SOUrce:TYPe?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:SOUrce:TYPe value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:SOUrce:TYPe {DATa|CLOCk|RECOVered}
        - TRIGger:A:COMMunication:SOUrce:TYPe?

    **Info:**
        - ``DATa`` causes the instrument to trigger and shift five unit intervals to form the
          expected eye pattern.
        - ``CLOCk`` causes the instrument to trigger but no shift occurs. The clock type causes
          random triggers with respect to the data channel, which must be one of the other three
          channels.
        - ``RECOVered`` causes the instrument to trigger on the recovered clock from the data signal
          attached to communication source forming an eye pattern on the source.
    """


class TriggerACommunicationSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:SOUrce`` command.

    **Description:**
        - This command sets or queries the source channel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:SOUrce?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:COMMunication:SOUrce value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:SOUrce {CH<x>}
        - TRIGger:A:COMMunication:SOUrce?

    **Info:**
        - ``CH1`` argument selects CH 1 as the source channel.
        - ``CH2`` argument selects CH 2 as the source channel.
        - ``CH3`` argument selects CH 3 as the source channel.
        - ``CH4`` argument selects CH 4 as the source channel.

    Properties:
        - ``.type``: The ``TRIGger:A:COMMunication:SOUrce:TYPe`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._type = TriggerACommunicationSourceType(device, f"{self._cmd_syntax}:TYPe")

    @property
    def type(self) -> TriggerACommunicationSourceType:
        """Return the ``TRIGger:A:COMMunication:SOUrce:TYPe`` command.

        **Description:**
            - This command sets or queries the source type. This command works only when the Eye
              Diagram pulseform is selected.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:SOUrce:TYPe?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:SOUrce:TYPe?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:SOUrce:TYPe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:SOUrce:TYPe {DATa|CLOCk|RECOVered}
            - TRIGger:A:COMMunication:SOUrce:TYPe?

        **Info:**
            - ``DATa`` causes the instrument to trigger and shift five unit intervals to form the
              expected eye pattern.
            - ``CLOCk`` causes the instrument to trigger but no shift occurs. The clock type causes
              random triggers with respect to the data channel, which must be one of the other three
              channels.
            - ``RECOVered`` causes the instrument to trigger on the recovered clock from the data
              signal attached to communication source forming an eye pattern on the source.
        """
        return self._type


class TriggerACommunicationHdb3ThresholdLow(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:HDB3:THReshold:LOW`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. This command
          sets or queries the threshold low level.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:COMMunication:HDB3:THReshold:LOW?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:HDB3:THReshold:LOW?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:HDB3:THReshold:LOW value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:HDB3:THReshold:LOW <NR3>
        - TRIGger:A:COMMunication:HDB3:THReshold:LOW?

    **Info:**
        - ``<NR3>`` specifies the high threshold parameter, expressed in volts.
    """


class TriggerACommunicationHdb3ThresholdHigh(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:HDB3:THReshold:HIGH`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. This command
          sets or queries the threshold high level.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:COMMunication:HDB3:THReshold:HIGH?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:HDB3:THReshold:HIGH?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:HDB3:THReshold:HIGH value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:HDB3:THReshold:HIGH <NR3>
        - TRIGger:A:COMMunication:HDB3:THReshold:HIGH?

    **Info:**
        - ``<NR3>`` is the high threshold parameter expressed in volts.
    """


class TriggerACommunicationHdb3Threshold(SCPICmdRead):
    """The ``TRIGger:A:COMMunication:HDB3:THReshold`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:HDB3:THReshold?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:HDB3:THReshold?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    Properties:
        - ``.high``: The ``TRIGger:A:COMMunication:HDB3:THReshold:HIGH`` command.
        - ``.low``: The ``TRIGger:A:COMMunication:HDB3:THReshold:LOW`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._high = TriggerACommunicationHdb3ThresholdHigh(device, f"{self._cmd_syntax}:HIGH")
        self._low = TriggerACommunicationHdb3ThresholdLow(device, f"{self._cmd_syntax}:LOW")

    @property
    def high(self) -> TriggerACommunicationHdb3ThresholdHigh:
        """Return the ``TRIGger:A:COMMunication:HDB3:THReshold:HIGH`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. This
              command sets or queries the threshold high level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:HDB3:THReshold:HIGH?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:HDB3:THReshold:HIGH?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:HDB3:THReshold:HIGH value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:HDB3:THReshold:HIGH <NR3>
            - TRIGger:A:COMMunication:HDB3:THReshold:HIGH?

        **Info:**
            - ``<NR3>`` is the high threshold parameter expressed in volts.
        """
        return self._high

    @property
    def low(self) -> TriggerACommunicationHdb3ThresholdLow:
        """Return the ``TRIGger:A:COMMunication:HDB3:THReshold:LOW`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. This
              command sets or queries the threshold low level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:HDB3:THReshold:LOW?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:HDB3:THReshold:LOW?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:HDB3:THReshold:LOW value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:HDB3:THReshold:LOW <NR3>
            - TRIGger:A:COMMunication:HDB3:THReshold:LOW?

        **Info:**
            - ``<NR3>`` specifies the high threshold parameter, expressed in volts.
        """
        return self._low


class TriggerACommunicationHdb3Pulseform(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:HDB3:PULSEForm`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. The commands
          set or query the AMI pulse form to one of three possibilities.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:HDB3:PULSEForm?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:HDB3:PULSEForm?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:HDB3:PULSEForm value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:HDB3:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
        - TRIGger:A:COMMunication:HDB3:PULSEForm?

    **Info:**
        - ``PLUSOne`` corresponds to the Isolated +1 on the front panel menu.
        - ``MINUSOne`` corresponds to the Isolated -1 on the front panel menu.
    """


class TriggerACommunicationHdb3(SCPICmdRead):
    """The ``TRIGger:A:COMMunication:HDB3`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:HDB3?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:HDB3?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.pulseform``: The ``TRIGger:A:COMMunication:HDB3:PULSEForm`` command.
        - ``.threshold``: The ``TRIGger:A:COMMunication:HDB3:THReshold`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._pulseform = TriggerACommunicationHdb3Pulseform(
            device, f"{self._cmd_syntax}:PULSEForm"
        )
        self._threshold = TriggerACommunicationHdb3Threshold(
            device, f"{self._cmd_syntax}:THReshold"
        )

    @property
    def pulseform(self) -> TriggerACommunicationHdb3Pulseform:
        """Return the ``TRIGger:A:COMMunication:HDB3:PULSEForm`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. The
              commands set or query the AMI pulse form to one of three possibilities.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:HDB3:PULSEForm?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:HDB3:PULSEForm?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:HDB3:PULSEForm value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:HDB3:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
            - TRIGger:A:COMMunication:HDB3:PULSEForm?

        **Info:**
            - ``PLUSOne`` corresponds to the Isolated +1 on the front panel menu.
            - ``MINUSOne`` corresponds to the Isolated -1 on the front panel menu.
        """
        return self._pulseform

    @property
    def threshold(self) -> TriggerACommunicationHdb3Threshold:
        """Return the ``TRIGger:A:COMMunication:HDB3:THReshold`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:HDB3:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:HDB3:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.high``: The ``TRIGger:A:COMMunication:HDB3:THReshold:HIGH`` command.
            - ``.low``: The ``TRIGger:A:COMMunication:HDB3:THReshold:LOW`` command.
        """
        return self._threshold


class TriggerACommunicationCode(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:CODe`` command.

    **Description:**
        - This command sets or queries the signal code that the communications trigger should expect
          on the incoming signal.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:CODe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:CODe?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:COMMunication:CODe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:CODe {AMI|HDB3|B3ZS|B6ZS|B8ZS|CMI|NRZ|MLT3|MANChester}
        - TRIGger:A:COMMunication:CODe?

    **Info:**
        - ``AMI``
        - ``HDB3``
        - ``B3ZS``
        - ``B6ZS``
        - ``B8ZS``
        - ``CMI``
        - ``NRZ``
        - ``MLT3``
        - ``MANChester``
    """


class TriggerACommunicationCmiPulseform(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:CMI:PULSEForm`` command.

    **Description:**
        - This command sets or queries the CMI pulse form.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:CMI:PULSEForm?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:CMI:PULSEForm?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:CMI:PULSEForm value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:CMI:PULSEForm {PLUSOne|MINUSOne|ZERO|EYEdiagram}
        - TRIGger:A:COMMunication:CMI:PULSEForm?

    **Info:**
        - ``PLUSOne`` triggers on a positive mark.
        - ``MINUSOne`` triggers on a negative mark.
        - ``ZERO`` triggers on the bit representing zero.
        - ``EYEdiagram`` positions the trigger point off screen to display the eye.
    """


class TriggerACommunicationCmi(SCPICmdRead):
    """The ``TRIGger:A:COMMunication:CMI`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:CMI?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:CMI?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.pulseform``: The ``TRIGger:A:COMMunication:CMI:PULSEForm`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._pulseform = TriggerACommunicationCmiPulseform(device, f"{self._cmd_syntax}:PULSEForm")

    @property
    def pulseform(self) -> TriggerACommunicationCmiPulseform:
        """Return the ``TRIGger:A:COMMunication:CMI:PULSEForm`` command.

        **Description:**
            - This command sets or queries the CMI pulse form.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:CMI:PULSEForm?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:CMI:PULSEForm?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:CMI:PULSEForm value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:CMI:PULSEForm {PLUSOne|MINUSOne|ZERO|EYEdiagram}
            - TRIGger:A:COMMunication:CMI:PULSEForm?

        **Info:**
            - ``PLUSOne`` triggers on a positive mark.
            - ``MINUSOne`` triggers on a negative mark.
            - ``ZERO`` triggers on the bit representing zero.
            - ``EYEdiagram`` positions the trigger point off screen to display the eye.
        """
        return self._pulseform


class TriggerACommunicationClockPolarity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:CLOCk:POLarity`` command.

    **Description:**
        - This command sets or queries the communication clock polarity

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:CLOCk:POLarity?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:CLOCk:POLarity?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:CLOCk:POLarity value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:CLOCk:POLarity {RISe|FALL}
        - TRIGger:A:COMMunication:CLOCk:POLarity?

    **Info:**
        - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
        - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
    """


class TriggerACommunicationClock(SCPICmdRead):
    """The ``TRIGger:A:COMMunication:CLOCk`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:CLOCk?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:CLOCk?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.polarity``: The ``TRIGger:A:COMMunication:CLOCk:POLarity`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._polarity = TriggerACommunicationClockPolarity(device, f"{self._cmd_syntax}:POLarity")

    @property
    def polarity(self) -> TriggerACommunicationClockPolarity:
        """Return the ``TRIGger:A:COMMunication:CLOCk:POLarity`` command.

        **Description:**
            - This command sets or queries the communication clock polarity

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:CLOCk:POLarity?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:CLOCk:POLarity?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:CLOCk:POLarity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:CLOCk:POLarity {RISe|FALL}
            - TRIGger:A:COMMunication:CLOCk:POLarity?

        **Info:**
            - ``RISe`` specifies to trigger on the rising or positive edge of a signal.
            - ``FALL`` specifies to trigger on the falling or negative edge of a signal.
        """
        return self._polarity


class TriggerACommunicationBitrate(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:BITRate`` command.

    **Description:**
        - This command sets or queries the bit rate.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:BITRate?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:BITRate?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:COMMunication:BITRate value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:BITRate <NR3>
        - TRIGger:A:COMMunication:BITRate?

    **Info:**
        - ``<NR3>`` is a non-negative number greater than one and expressed as bits per second.
    """


class TriggerACommunicationB8zsThresholdLow(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B8ZS:THReshold:LOW`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. This command
          sets or queries the threshold low level.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:COMMunication:B8ZS:THReshold:LOW?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:B8ZS:THReshold:LOW?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:B8ZS:THReshold:LOW value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:B8ZS:THReshold:LOW <NR3>
        - TRIGger:A:COMMunication:B8ZS:THReshold:LOW?

    **Info:**
        - ``<NR3>`` specifies the high threshold parameter, expressed in volts.
    """


class TriggerACommunicationB8zsThresholdHigh(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B8ZS:THReshold:HIGH`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. This command
          sets or queries the threshold high level.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:COMMunication:B8ZS:THReshold:HIGH?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:B8ZS:THReshold:HIGH?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:B8ZS:THReshold:HIGH value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:B8ZS:THReshold:HIGH <NR3>
        - TRIGger:A:COMMunication:B8ZS:THReshold:HIGH?

    **Info:**
        - ``<NR3>`` is the high threshold parameter expressed in volts.
    """


class TriggerACommunicationB8zsThreshold(SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B8ZS:THReshold`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:B8ZS:THReshold?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:B8ZS:THReshold?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    Properties:
        - ``.high``: The ``TRIGger:A:COMMunication:B8ZS:THReshold:HIGH`` command.
        - ``.low``: The ``TRIGger:A:COMMunication:B8ZS:THReshold:LOW`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._high = TriggerACommunicationB8zsThresholdHigh(device, f"{self._cmd_syntax}:HIGH")
        self._low = TriggerACommunicationB8zsThresholdLow(device, f"{self._cmd_syntax}:LOW")

    @property
    def high(self) -> TriggerACommunicationB8zsThresholdHigh:
        """Return the ``TRIGger:A:COMMunication:B8ZS:THReshold:HIGH`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. This
              command sets or queries the threshold high level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:B8ZS:THReshold:HIGH?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:B8ZS:THReshold:HIGH?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:B8ZS:THReshold:HIGH value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:B8ZS:THReshold:HIGH <NR3>
            - TRIGger:A:COMMunication:B8ZS:THReshold:HIGH?

        **Info:**
            - ``<NR3>`` is the high threshold parameter expressed in volts.
        """
        return self._high

    @property
    def low(self) -> TriggerACommunicationB8zsThresholdLow:
        """Return the ``TRIGger:A:COMMunication:B8ZS:THReshold:LOW`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. This
              command sets or queries the threshold low level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:B8ZS:THReshold:LOW?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:B8ZS:THReshold:LOW?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:B8ZS:THReshold:LOW value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:B8ZS:THReshold:LOW <NR3>
            - TRIGger:A:COMMunication:B8ZS:THReshold:LOW?

        **Info:**
            - ``<NR3>`` specifies the high threshold parameter, expressed in volts.
        """
        return self._low


class TriggerACommunicationB8zsPulseform(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B8ZS:PULSEForm`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. The commands
          set or query the AMI pulse form to one of three possibilities.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:B8ZS:PULSEForm?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:B8ZS:PULSEForm?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:B8ZS:PULSEForm value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:B8ZS:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
        - TRIGger:A:COMMunication:B8ZS:PULSEForm?

    **Info:**
        - ``PLUSOne`` corresponds to the Isolated +1 on the front panel menu.
        - ``MINUSOne`` corresponds to the Isolated -1 on the front panel menu.
    """


class TriggerACommunicationB8zs(SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B8ZS`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:B8ZS?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:B8ZS?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.pulseform``: The ``TRIGger:A:COMMunication:B8ZS:PULSEForm`` command.
        - ``.threshold``: The ``TRIGger:A:COMMunication:B8ZS:THReshold`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._pulseform = TriggerACommunicationB8zsPulseform(
            device, f"{self._cmd_syntax}:PULSEForm"
        )
        self._threshold = TriggerACommunicationB8zsThreshold(
            device, f"{self._cmd_syntax}:THReshold"
        )

    @property
    def pulseform(self) -> TriggerACommunicationB8zsPulseform:
        """Return the ``TRIGger:A:COMMunication:B8ZS:PULSEForm`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. The
              commands set or query the AMI pulse form to one of three possibilities.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:B8ZS:PULSEForm?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:B8ZS:PULSEForm?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:B8ZS:PULSEForm value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:B8ZS:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
            - TRIGger:A:COMMunication:B8ZS:PULSEForm?

        **Info:**
            - ``PLUSOne`` corresponds to the Isolated +1 on the front panel menu.
            - ``MINUSOne`` corresponds to the Isolated -1 on the front panel menu.
        """
        return self._pulseform

    @property
    def threshold(self) -> TriggerACommunicationB8zsThreshold:
        """Return the ``TRIGger:A:COMMunication:B8ZS:THReshold`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:B8ZS:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:B8ZS:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.high``: The ``TRIGger:A:COMMunication:B8ZS:THReshold:HIGH`` command.
            - ``.low``: The ``TRIGger:A:COMMunication:B8ZS:THReshold:LOW`` command.
        """
        return self._threshold


class TriggerACommunicationB6zsThresholdLow(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B6ZS:THReshold:LOW`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. This command
          sets or queries the threshold low level.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:COMMunication:B6ZS:THReshold:LOW?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:B6ZS:THReshold:LOW?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:B6ZS:THReshold:LOW value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:B6ZS:THReshold:LOW <NR3>
        - TRIGger:A:COMMunication:B6ZS:THReshold:LOW?

    **Info:**
        - ``<NR3>`` specifies the high threshold parameter, expressed in volts.
    """


class TriggerACommunicationB6zsThresholdHigh(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B6ZS:THReshold:HIGH`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. This command
          sets or queries the threshold high level.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:COMMunication:B6ZS:THReshold:HIGH?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:B6ZS:THReshold:HIGH?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:B6ZS:THReshold:HIGH value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:B6ZS:THReshold:HIGH <NR3>
        - TRIGger:A:COMMunication:B6ZS:THReshold:HIGH?

    **Info:**
        - ``<NR3>`` is the high threshold parameter expressed in volts.
    """


class TriggerACommunicationB6zsThreshold(SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B6ZS:THReshold`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:B6ZS:THReshold?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:B6ZS:THReshold?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    Properties:
        - ``.high``: The ``TRIGger:A:COMMunication:B6ZS:THReshold:HIGH`` command.
        - ``.low``: The ``TRIGger:A:COMMunication:B6ZS:THReshold:LOW`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._high = TriggerACommunicationB6zsThresholdHigh(device, f"{self._cmd_syntax}:HIGH")
        self._low = TriggerACommunicationB6zsThresholdLow(device, f"{self._cmd_syntax}:LOW")

    @property
    def high(self) -> TriggerACommunicationB6zsThresholdHigh:
        """Return the ``TRIGger:A:COMMunication:B6ZS:THReshold:HIGH`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. This
              command sets or queries the threshold high level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:B6ZS:THReshold:HIGH?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:B6ZS:THReshold:HIGH?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:B6ZS:THReshold:HIGH value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:B6ZS:THReshold:HIGH <NR3>
            - TRIGger:A:COMMunication:B6ZS:THReshold:HIGH?

        **Info:**
            - ``<NR3>`` is the high threshold parameter expressed in volts.
        """
        return self._high

    @property
    def low(self) -> TriggerACommunicationB6zsThresholdLow:
        """Return the ``TRIGger:A:COMMunication:B6ZS:THReshold:LOW`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. This
              command sets or queries the threshold low level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:B6ZS:THReshold:LOW?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:B6ZS:THReshold:LOW?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:B6ZS:THReshold:LOW value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:B6ZS:THReshold:LOW <NR3>
            - TRIGger:A:COMMunication:B6ZS:THReshold:LOW?

        **Info:**
            - ``<NR3>`` specifies the high threshold parameter, expressed in volts.
        """
        return self._low


class TriggerACommunicationB6zsPulseform(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B6ZS:PULSEForm`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. The commands
          set or query the AMI pulse form to one of three possibilities.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:B6ZS:PULSEForm?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:B6ZS:PULSEForm?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:B6ZS:PULSEForm value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:B6ZS:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
        - TRIGger:A:COMMunication:B6ZS:PULSEForm?

    **Info:**
        - ``PLUSOne`` corresponds to the Isolated +1 on the front panel menu.
        - ``MINUSOne`` corresponds to the Isolated -1 on the front panel menu.
    """


class TriggerACommunicationB6zs(SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B6ZS`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:B6ZS?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:B6ZS?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.pulseform``: The ``TRIGger:A:COMMunication:B6ZS:PULSEForm`` command.
        - ``.threshold``: The ``TRIGger:A:COMMunication:B6ZS:THReshold`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._pulseform = TriggerACommunicationB6zsPulseform(
            device, f"{self._cmd_syntax}:PULSEForm"
        )
        self._threshold = TriggerACommunicationB6zsThreshold(
            device, f"{self._cmd_syntax}:THReshold"
        )

    @property
    def pulseform(self) -> TriggerACommunicationB6zsPulseform:
        """Return the ``TRIGger:A:COMMunication:B6ZS:PULSEForm`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. The
              commands set or query the AMI pulse form to one of three possibilities.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:B6ZS:PULSEForm?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:B6ZS:PULSEForm?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:B6ZS:PULSEForm value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:B6ZS:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
            - TRIGger:A:COMMunication:B6ZS:PULSEForm?

        **Info:**
            - ``PLUSOne`` corresponds to the Isolated +1 on the front panel menu.
            - ``MINUSOne`` corresponds to the Isolated -1 on the front panel menu.
        """
        return self._pulseform

    @property
    def threshold(self) -> TriggerACommunicationB6zsThreshold:
        """Return the ``TRIGger:A:COMMunication:B6ZS:THReshold`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:B6ZS:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:B6ZS:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.high``: The ``TRIGger:A:COMMunication:B6ZS:THReshold:HIGH`` command.
            - ``.low``: The ``TRIGger:A:COMMunication:B6ZS:THReshold:LOW`` command.
        """
        return self._threshold


class TriggerACommunicationB3zsThresholdLow(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B3ZS:THReshold:LOW`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. This command
          sets or queries the threshold low level.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:COMMunication:B3ZS:THReshold:LOW?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:B3ZS:THReshold:LOW?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:B3ZS:THReshold:LOW value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:B3ZS:THReshold:LOW <NR3>
        - TRIGger:A:COMMunication:B3ZS:THReshold:LOW?

    **Info:**
        - ``<NR3>`` specifies the high threshold parameter, expressed in volts.
    """


class TriggerACommunicationB3zsThresholdHigh(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B3ZS:THReshold:HIGH`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. This command
          sets or queries the threshold high level.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:COMMunication:B3ZS:THReshold:HIGH?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:B3ZS:THReshold:HIGH?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:B3ZS:THReshold:HIGH value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:B3ZS:THReshold:HIGH <NR3>
        - TRIGger:A:COMMunication:B3ZS:THReshold:HIGH?

    **Info:**
        - ``<NR3>`` is the high threshold parameter expressed in volts.
    """


class TriggerACommunicationB3zsThreshold(SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B3ZS:THReshold`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:B3ZS:THReshold?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:B3ZS:THReshold?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    Properties:
        - ``.high``: The ``TRIGger:A:COMMunication:B3ZS:THReshold:HIGH`` command.
        - ``.low``: The ``TRIGger:A:COMMunication:B3ZS:THReshold:LOW`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._high = TriggerACommunicationB3zsThresholdHigh(device, f"{self._cmd_syntax}:HIGH")
        self._low = TriggerACommunicationB3zsThresholdLow(device, f"{self._cmd_syntax}:LOW")

    @property
    def high(self) -> TriggerACommunicationB3zsThresholdHigh:
        """Return the ``TRIGger:A:COMMunication:B3ZS:THReshold:HIGH`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. This
              command sets or queries the threshold high level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:B3ZS:THReshold:HIGH?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:B3ZS:THReshold:HIGH?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:B3ZS:THReshold:HIGH value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:B3ZS:THReshold:HIGH <NR3>
            - TRIGger:A:COMMunication:B3ZS:THReshold:HIGH?

        **Info:**
            - ``<NR3>`` is the high threshold parameter expressed in volts.
        """
        return self._high

    @property
    def low(self) -> TriggerACommunicationB3zsThresholdLow:
        """Return the ``TRIGger:A:COMMunication:B3ZS:THReshold:LOW`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. This
              command sets or queries the threshold low level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:B3ZS:THReshold:LOW?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:B3ZS:THReshold:LOW?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:B3ZS:THReshold:LOW value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:B3ZS:THReshold:LOW <NR3>
            - TRIGger:A:COMMunication:B3ZS:THReshold:LOW?

        **Info:**
            - ``<NR3>`` specifies the high threshold parameter, expressed in volts.
        """
        return self._low


class TriggerACommunicationB3zsPulseform(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B3ZS:PULSEForm`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. The commands
          set or query the AMI pulse form to one of three possibilities.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:B3ZS:PULSEForm?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:B3ZS:PULSEForm?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:B3ZS:PULSEForm value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:B3ZS:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
        - TRIGger:A:COMMunication:B3ZS:PULSEForm?

    **Info:**
        - ``PLUSOne`` corresponds to the Isolated +1 on the front panel menu.
        - ``MINUSOne`` corresponds to the Isolated -1 on the front panel menu.
    """


class TriggerACommunicationB3zs(SCPICmdRead):
    """The ``TRIGger:A:COMMunication:B3ZS`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:B3ZS?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:B3ZS?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.pulseform``: The ``TRIGger:A:COMMunication:B3ZS:PULSEForm`` command.
        - ``.threshold``: The ``TRIGger:A:COMMunication:B3ZS:THReshold`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._pulseform = TriggerACommunicationB3zsPulseform(
            device, f"{self._cmd_syntax}:PULSEForm"
        )
        self._threshold = TriggerACommunicationB3zsThreshold(
            device, f"{self._cmd_syntax}:THReshold"
        )

    @property
    def pulseform(self) -> TriggerACommunicationB3zsPulseform:
        """Return the ``TRIGger:A:COMMunication:B3ZS:PULSEForm`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. The
              commands set or query the AMI pulse form to one of three possibilities.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:B3ZS:PULSEForm?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:B3ZS:PULSEForm?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:B3ZS:PULSEForm value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:B3ZS:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
            - TRIGger:A:COMMunication:B3ZS:PULSEForm?

        **Info:**
            - ``PLUSOne`` corresponds to the Isolated +1 on the front panel menu.
            - ``MINUSOne`` corresponds to the Isolated -1 on the front panel menu.
        """
        return self._pulseform

    @property
    def threshold(self) -> TriggerACommunicationB3zsThreshold:
        """Return the ``TRIGger:A:COMMunication:B3ZS:THReshold`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:B3ZS:THReshold?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:B3ZS:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.high``: The ``TRIGger:A:COMMunication:B3ZS:THReshold:HIGH`` command.
            - ``.low``: The ``TRIGger:A:COMMunication:B3ZS:THReshold:LOW`` command.
        """
        return self._threshold


class TriggerACommunicationAmiThresholdLow(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:AMI:THReshold:LOW`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. This command
          sets or queries the threshold low level.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:AMI:THReshold:LOW?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:AMI:THReshold:LOW?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:AMI:THReshold:LOW value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:AMI:THReshold:LOW <NR3>
        - TRIGger:A:COMMunication:AMI:THReshold:LOW?

    **Info:**
        - ``<NR3>`` specifies the high threshold parameter, expressed in volts.
    """


class TriggerACommunicationAmiThresholdHigh(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:AMI:THReshold:HIGH`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. This command
          sets or queries the threshold high level.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:COMMunication:AMI:THReshold:HIGH?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:AMI:THReshold:HIGH?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:AMI:THReshold:HIGH value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:AMI:THReshold:HIGH <NR3>
        - TRIGger:A:COMMunication:AMI:THReshold:HIGH?

    **Info:**
        - ``<NR3>`` is the high threshold parameter expressed in volts.
    """


class TriggerACommunicationAmiThreshold(SCPICmdRead):
    """The ``TRIGger:A:COMMunication:AMI:THReshold`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:AMI:THReshold?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:AMI:THReshold?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    Properties:
        - ``.high``: The ``TRIGger:A:COMMunication:AMI:THReshold:HIGH`` command.
        - ``.low``: The ``TRIGger:A:COMMunication:AMI:THReshold:LOW`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._high = TriggerACommunicationAmiThresholdHigh(device, f"{self._cmd_syntax}:HIGH")
        self._low = TriggerACommunicationAmiThresholdLow(device, f"{self._cmd_syntax}:LOW")

    @property
    def high(self) -> TriggerACommunicationAmiThresholdHigh:
        """Return the ``TRIGger:A:COMMunication:AMI:THReshold:HIGH`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. This
              command sets or queries the threshold high level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:AMI:THReshold:HIGH?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:AMI:THReshold:HIGH?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:AMI:THReshold:HIGH value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:AMI:THReshold:HIGH <NR3>
            - TRIGger:A:COMMunication:AMI:THReshold:HIGH?

        **Info:**
            - ``<NR3>`` is the high threshold parameter expressed in volts.
        """
        return self._high

    @property
    def low(self) -> TriggerACommunicationAmiThresholdLow:
        """Return the ``TRIGger:A:COMMunication:AMI:THReshold:LOW`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. This
              command sets or queries the threshold low level.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:COMMunication:AMI:THReshold:LOW?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:AMI:THReshold:LOW?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:AMI:THReshold:LOW value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:AMI:THReshold:LOW <NR3>
            - TRIGger:A:COMMunication:AMI:THReshold:LOW?

        **Info:**
            - ``<NR3>`` specifies the high threshold parameter, expressed in volts.
        """
        return self._low


class TriggerACommunicationAmiPulseform(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:COMMunication:AMI:PULSEForm`` command.

    **Description:**
        - This entry covers five separate commands, one each for AMI and AMI subtypes. The commands
          set or query the AMI pulse form to one of three possibilities.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:AMI:PULSEForm?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:COMMunication:AMI:PULSEForm?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:COMMunication:AMI:PULSEForm value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:COMMunication:AMI:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
        - TRIGger:A:COMMunication:AMI:PULSEForm?

    **Info:**
        - ``PLUSOne`` corresponds to the Isolated +1 on the front panel menu.
        - ``MINUSOne`` corresponds to the Isolated -1 on the front panel menu.
    """


class TriggerACommunicationAmi(SCPICmdRead):
    """The ``TRIGger:A:COMMunication:AMI`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:AMI?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:AMI?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.pulseform``: The ``TRIGger:A:COMMunication:AMI:PULSEForm`` command.
        - ``.threshold``: The ``TRIGger:A:COMMunication:AMI:THReshold`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._pulseform = TriggerACommunicationAmiPulseform(device, f"{self._cmd_syntax}:PULSEForm")
        self._threshold = TriggerACommunicationAmiThreshold(device, f"{self._cmd_syntax}:THReshold")

    @property
    def pulseform(self) -> TriggerACommunicationAmiPulseform:
        """Return the ``TRIGger:A:COMMunication:AMI:PULSEForm`` command.

        **Description:**
            - This entry covers five separate commands, one each for AMI and AMI subtypes. The
              commands set or query the AMI pulse form to one of three possibilities.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:AMI:PULSEForm?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:AMI:PULSEForm?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:AMI:PULSEForm value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:AMI:PULSEForm {PLUSOne|MINUSOne| EYEdiagram}
            - TRIGger:A:COMMunication:AMI:PULSEForm?

        **Info:**
            - ``PLUSOne`` corresponds to the Isolated +1 on the front panel menu.
            - ``MINUSOne`` corresponds to the Isolated -1 on the front panel menu.
        """
        return self._pulseform

    @property
    def threshold(self) -> TriggerACommunicationAmiThreshold:
        """Return the ``TRIGger:A:COMMunication:AMI:THReshold`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:AMI:THReshold?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:AMI:THReshold?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.high``: The ``TRIGger:A:COMMunication:AMI:THReshold:HIGH`` command.
            - ``.low``: The ``TRIGger:A:COMMunication:AMI:THReshold:LOW`` command.
        """
        return self._threshold


#  pylint: disable=too-many-instance-attributes
class TriggerACommunication(SCPICmdRead):
    """The ``TRIGger:A:COMMunication`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.bitrate``: The ``TRIGger:A:COMMunication:BITRate`` command.
        - ``.clock``: The ``TRIGger:A:COMMunication:CLOCk`` command tree.
        - ``.cmi``: The ``TRIGger:A:COMMunication:CMI`` command tree.
        - ``.code``: The ``TRIGger:A:COMMunication:CODe`` command.
        - ``.source``: The ``TRIGger:A:COMMunication:SOUrce`` command.
        - ``.standard``: The ``TRIGger:A:COMMunication:STANdard`` command.
        - ``.ami``: The ``TRIGger:A:COMMunication:AMI`` command tree.
        - ``.hdb3``: The ``TRIGger:A:COMMunication:HDB3`` command tree.
        - ``.b3zs``: The ``TRIGger:A:COMMunication:B3ZS`` command tree.
        - ``.b6zs``: The ``TRIGger:A:COMMunication:B6ZS`` command tree.
        - ``.b8zs``: The ``TRIGger:A:COMMunication:B8ZS`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._bitrate = TriggerACommunicationBitrate(device, f"{self._cmd_syntax}:BITRate")
        self._clock = TriggerACommunicationClock(device, f"{self._cmd_syntax}:CLOCk")
        self._cmi = TriggerACommunicationCmi(device, f"{self._cmd_syntax}:CMI")
        self._code = TriggerACommunicationCode(device, f"{self._cmd_syntax}:CODe")
        self._source = TriggerACommunicationSource(device, f"{self._cmd_syntax}:SOUrce")
        self._standard = TriggerACommunicationStandard(device, f"{self._cmd_syntax}:STANdard")
        self._ami = TriggerACommunicationAmi(device, f"{self._cmd_syntax}:AMI")
        self._hdb3 = TriggerACommunicationHdb3(device, f"{self._cmd_syntax}:HDB3")
        self._b3zs = TriggerACommunicationB3zs(device, f"{self._cmd_syntax}:B3ZS")
        self._b6zs = TriggerACommunicationB6zs(device, f"{self._cmd_syntax}:B6ZS")
        self._b8zs = TriggerACommunicationB8zs(device, f"{self._cmd_syntax}:B8ZS")

    @property
    def bitrate(self) -> TriggerACommunicationBitrate:
        """Return the ``TRIGger:A:COMMunication:BITRate`` command.

        **Description:**
            - This command sets or queries the bit rate.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:BITRate?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:BITRate?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:BITRate value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:BITRate <NR3>
            - TRIGger:A:COMMunication:BITRate?

        **Info:**
            - ``<NR3>`` is a non-negative number greater than one and expressed as bits per second.
        """
        return self._bitrate

    @property
    def clock(self) -> TriggerACommunicationClock:
        """Return the ``TRIGger:A:COMMunication:CLOCk`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:CLOCk?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:CLOCk?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.polarity``: The ``TRIGger:A:COMMunication:CLOCk:POLarity`` command.
        """
        return self._clock

    @property
    def cmi(self) -> TriggerACommunicationCmi:
        """Return the ``TRIGger:A:COMMunication:CMI`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:CMI?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:CMI?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.pulseform``: The ``TRIGger:A:COMMunication:CMI:PULSEForm`` command.
        """
        return self._cmi

    @property
    def code(self) -> TriggerACommunicationCode:
        """Return the ``TRIGger:A:COMMunication:CODe`` command.

        **Description:**
            - This command sets or queries the signal code that the communications trigger should
              expect on the incoming signal.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:CODe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:CODe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:CODe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:CODe {AMI|HDB3|B3ZS|B6ZS|B8ZS|CMI|NRZ|MLT3|MANChester}
            - TRIGger:A:COMMunication:CODe?

        **Info:**
            - ``AMI``
            - ``HDB3``
            - ``B3ZS``
            - ``B6ZS``
            - ``B8ZS``
            - ``CMI``
            - ``NRZ``
            - ``MLT3``
            - ``MANChester``
        """
        return self._code

    @property
    def source(self) -> TriggerACommunicationSource:
        """Return the ``TRIGger:A:COMMunication:SOUrce`` command.

        **Description:**
            - This command sets or queries the source channel.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:SOUrce?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:SOUrce value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:SOUrce {CH<x>}
            - TRIGger:A:COMMunication:SOUrce?

        **Info:**
            - ``CH1`` argument selects CH 1 as the source channel.
            - ``CH2`` argument selects CH 2 as the source channel.
            - ``CH3`` argument selects CH 3 as the source channel.
            - ``CH4`` argument selects CH 4 as the source channel.

        Sub-properties:
            - ``.type``: The ``TRIGger:A:COMMunication:SOUrce:TYPe`` command.
        """
        return self._source

    @property
    def standard(self) -> TriggerACommunicationStandard:
        """Return the ``TRIGger:A:COMMunication:STANdard`` command.

        **Description:**
            - This command sets or queries the standard that identifies the code and bit rate. The
              bit rate is used to compute the Unit Interval, which is the inverse of the bit rate.
              The Unit Interval influences time skew in an Eye Diagram, where you perform post
              processing on AMI isolated pulses, and pulse width settings if CMI.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:STANdard?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:COMMunication:STANdard?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:COMMunication:STANdard value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:COMMunication:STANdard {ATAG<x>|CLOCKCoax| CLOCKSymmetrical|Custom|D<x>|DS0Contra| DS0Double| DS0Single|DS0Timing|DS1|DS1A| DS1C|DS2| DS2RATECoax|DS2RATESymmetrical| DS3|DS4NA|E1|E2|E3|E4|ENET100|ENET1250| ENETXAUI| FC133|FC266|FC531|FC1063|FC2125|FC4250| FST|FW1394BS400B|FW1394BS1600B|HST|INF2_5G| OC1|OC3| OC12|OC48|OC48_FEC|PCIEXPRESS|RATE32Mbit| RATE97Mbit|RIO_500M|RIO_750M| RIO_1G|RIO_2G|RIO_1_5G|RIO_SERIAL_1G| RIO_SERIAL_2G|RIO_SERIAL_3G|SAS1_5|SAS3_?| SFI5_2|SFI5_3|STM0_CMI|STM0_HDBX|STM1E|STS1| STS3| TFI5_2|TFI5_3|VIDEO270|VIDEO292M|VIDEO360|VSROC192}
            - TRIGger:A:COMMunication:STANdard?
        """  # noqa: E501
        return self._standard

    @property
    def ami(self) -> TriggerACommunicationAmi:
        """Return the ``TRIGger:A:COMMunication:AMI`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:AMI?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:AMI?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.pulseform``: The ``TRIGger:A:COMMunication:AMI:PULSEForm`` command.
            - ``.threshold``: The ``TRIGger:A:COMMunication:AMI:THReshold`` command tree.
        """
        return self._ami

    @property
    def hdb3(self) -> TriggerACommunicationHdb3:
        """Return the ``TRIGger:A:COMMunication:HDB3`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:HDB3?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:HDB3?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.pulseform``: The ``TRIGger:A:COMMunication:HDB3:PULSEForm`` command.
            - ``.threshold``: The ``TRIGger:A:COMMunication:HDB3:THReshold`` command tree.
        """
        return self._hdb3

    @property
    def b3zs(self) -> TriggerACommunicationB3zs:
        """Return the ``TRIGger:A:COMMunication:B3ZS`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:B3ZS?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:B3ZS?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.pulseform``: The ``TRIGger:A:COMMunication:B3ZS:PULSEForm`` command.
            - ``.threshold``: The ``TRIGger:A:COMMunication:B3ZS:THReshold`` command tree.
        """
        return self._b3zs

    @property
    def b6zs(self) -> TriggerACommunicationB6zs:
        """Return the ``TRIGger:A:COMMunication:B6ZS`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:B6ZS?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:B6ZS?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.pulseform``: The ``TRIGger:A:COMMunication:B6ZS:PULSEForm`` command.
            - ``.threshold``: The ``TRIGger:A:COMMunication:B6ZS:THReshold`` command tree.
        """
        return self._b6zs

    @property
    def b8zs(self) -> TriggerACommunicationB8zs:
        """Return the ``TRIGger:A:COMMunication:B8ZS`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication:B8ZS?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication:B8ZS?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.pulseform``: The ``TRIGger:A:COMMunication:B8ZS:PULSEForm`` command.
            - ``.threshold``: The ``TRIGger:A:COMMunication:B8ZS:THReshold`` command tree.
        """
        return self._b8zs


class TriggerACanSpeed(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:CAN:SPEed`` command.

    **Description:**
        - CAN option only: This command sets or queries the bit rate of the CAN system.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN:SPEed?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:SPEed?`` query and raise
          an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:SPEed value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:CAN:SPEed <NR3>
        - TRIGger:A:CAN:SPEed?

    **Info:**
        - ``<NR3>`` specifies the bit rate of the CAN system. Possible values are 1M, 800K, 500K,
          250K, 125K, 100K, 83.3K, 62,5K, 50K, 33K, 20K, and 10K.
    """


class TriggerACanProbe(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:CAN:PROBE`` command.

    **Description:**
        - CAN option only: This command sets or queries the probing method used to probe the CAN
          signal.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN:PROBE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:PROBE?`` query and raise
          an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:PROBE value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:CAN:PROBE {CANL|CANH|DIFFerential|TX|RX}
        - TRIGger:A:CAN:PROBE?

    **Info:**
        - ``CANL`` specifies that the probing method is CANL.
        - ``CANH`` specifies that the probing method is CANH.
        - ``DIFFerential`` specifies that the probing method used is differential.
        - ``TX`` specifies that the probing method is TX.
        - ``RX`` specifies that the probing method is RX.
    """


class TriggerACanIdentifierValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:CAN:IDENTifier:VALue`` command.

    **Description:**
        - CAN option only: This command sets or queries the binary address string used for the CAN
          trigger if the trigger condition is ID or IDANDDATA.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN:IDENTifier:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:IDENTifier:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:IDENTifier:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:CAN:IDENTifier:VALue <QString>
        - TRIGger:A:CAN:IDENTifier:VALue?

    **Info:**
        - ``<QString>`` is up to 29 bits specifying the CAN identifier value.
    """

    _WRAP_ARG_WITH_QUOTES = True


class TriggerACanIdentifierMode(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:CAN:IDENTifier:MODe`` command.

    **Description:**
        - CAN option only: This command sets or queries the CAN trigger identifier mode.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN:IDENTifier:MODe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:IDENTifier:MODe?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:IDENTifier:MODe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:CAN:IDENTifier:MODe {STANdard|EXTENded}
        - TRIGger:A:CAN:IDENTifier:MODe?

    **Info:**
        - ``STANdard`` sets the CAN trigger identifier mode to standard mode.
        - ``EXTENded`` sets the CAN trigger identifier mode to extended mode.
    """


class TriggerACanIdentifier(SCPICmdRead):
    """The ``TRIGger:A:CAN:IDENTifier`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN:IDENTifier?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:IDENTifier?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.mode``: The ``TRIGger:A:CAN:IDENTifier:MODe`` command.
        - ``.value``: The ``TRIGger:A:CAN:IDENTifier:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._mode = TriggerACanIdentifierMode(device, f"{self._cmd_syntax}:MODe")
        self._value = TriggerACanIdentifierValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def mode(self) -> TriggerACanIdentifierMode:
        """Return the ``TRIGger:A:CAN:IDENTifier:MODe`` command.

        **Description:**
            - CAN option only: This command sets or queries the CAN trigger identifier mode.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN:IDENTifier:MODe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:IDENTifier:MODe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:CAN:IDENTifier:MODe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:CAN:IDENTifier:MODe {STANdard|EXTENded}
            - TRIGger:A:CAN:IDENTifier:MODe?

        **Info:**
            - ``STANdard`` sets the CAN trigger identifier mode to standard mode.
            - ``EXTENded`` sets the CAN trigger identifier mode to extended mode.
        """
        return self._mode

    @property
    def value(self) -> TriggerACanIdentifierValue:
        """Return the ``TRIGger:A:CAN:IDENTifier:VALue`` command.

        **Description:**
            - CAN option only: This command sets or queries the binary address string used for the
              CAN trigger if the trigger condition is ID or IDANDDATA.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN:IDENTifier:VALue?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:IDENTifier:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:CAN:IDENTifier:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:CAN:IDENTifier:VALue <QString>
            - TRIGger:A:CAN:IDENTifier:VALue?

        **Info:**
            - ``<QString>`` is up to 29 bits specifying the CAN identifier value.
        """
        return self._value


class TriggerACanFrametype(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:CAN:FRAMEtype`` command.

    **Description:**
        - CAN option only: This command sets or queries the CAN trigger frame type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN:FRAMEtype?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:FRAMEtype?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:FRAMEtype value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:CAN:FRAMEtype {DATA|REMote|ERROR|OVERLOAD}
        - TRIGger:A:CAN:FRAMEtype?

    **Info:**
        - ``DATA`` specifies a data frame type.
        - ``REMote`` specifies a remote frame type.
        - ``ERROR`` specifies an error frame type.
        - ``OVERLOAD`` specifies an overload frame type.
    """


class TriggerACanFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:CAN:FORMat`` command.

    **Description:**
        - CAN option only: This command sets or queries the CAN data format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:FORMat?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:CAN:FORMat {BINary|HEX}
        - TRIGger:A:CAN:FORMat?

    **Info:**
        - ``BINary`` specifies binary as the CAN data format.
        - ``HEX`` specifies hexadecimal as the CAN data format.
    """


class TriggerACanDataValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:CAN:DATa:VALue`` command.

    **Description:**
        - CAN option only: This command sets or quires the binary data string used for CAN Trigger
          if the trigger condition is ID or IDANDDATA.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN:DATa:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:DATa:VALue?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:DATa:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:CAN:DATa:VALue <QString>
        - TRIGger:A:CAN:DATa:VALue?

    **Info:**
        - ``<QString>`` is up to 32 bits specifying the CAN data value.
    """

    _WRAP_ARG_WITH_QUOTES = True


class TriggerACanDataSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:CAN:DATa:SOUrce`` command.

    **Description:**
        - CAN option only: This command sets or queries the CAN data source.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN:DATa:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:DATa:SOUrce?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:DATa:SOUrce value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:CAN:DATa:SOUrce CH<x>
        - TRIGger:A:CAN:DATa:SOUrce?

    **Info:**
        - ``CH<x>`` specifies the source for the CAN trigger. x can be 1, 2, 3, or 4.
    """


class TriggerACanDataLevel(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:CAN:DATa:LEVel`` command.

    **Description:**
        - CAN option only: This command sets or queries the CAN Trigger threshold for the CAN data
          source.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN:DATa:LEVel?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:DATa:LEVel?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:DATa:LEVel value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:CAN:DATa:LEVel <NR3>
        - TRIGger:A:CAN:DATa:LEVel?

    **Info:**
        - ``<NR3>`` specifies the CAN trigger data level. The level can be ±12.0 divisions.
    """


class TriggerACanDataDirection(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:CAN:DATa:DIRection`` command.

    **Description:**
        - CAN option only: This command sets or queries the CAN trigger condition to be valid on a
          READ, WRITE, or either.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN:DATa:DIRection?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:DATa:DIRection?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:DATa:DIRection value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:CAN:DATa:DIRection {READ|WRITE|NOCARE}
        - TRIGger:A:CAN:DATa:DIRection?

    **Info:**
        - ``READ`` sets the CAN data direction to Read.
        - ``WRITE`` sets the CAN data direction to Write.
        - ``NOCARE`` sets the CAN data direction to either.
    """


class TriggerACanData(SCPICmdRead):
    """The ``TRIGger:A:CAN:DATa`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:DATa?`` query and raise
          an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.direction``: The ``TRIGger:A:CAN:DATa:DIRection`` command.
        - ``.level``: The ``TRIGger:A:CAN:DATa:LEVel`` command.
        - ``.source``: The ``TRIGger:A:CAN:DATa:SOUrce`` command.
        - ``.value``: The ``TRIGger:A:CAN:DATa:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._direction = TriggerACanDataDirection(device, f"{self._cmd_syntax}:DIRection")
        self._level = TriggerACanDataLevel(device, f"{self._cmd_syntax}:LEVel")
        self._source = TriggerACanDataSource(device, f"{self._cmd_syntax}:SOUrce")
        self._value = TriggerACanDataValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def direction(self) -> TriggerACanDataDirection:
        """Return the ``TRIGger:A:CAN:DATa:DIRection`` command.

        **Description:**
            - CAN option only: This command sets or queries the CAN trigger condition to be valid on
              a READ, WRITE, or either.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN:DATa:DIRection?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:DATa:DIRection?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:CAN:DATa:DIRection value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:CAN:DATa:DIRection {READ|WRITE|NOCARE}
            - TRIGger:A:CAN:DATa:DIRection?

        **Info:**
            - ``READ`` sets the CAN data direction to Read.
            - ``WRITE`` sets the CAN data direction to Write.
            - ``NOCARE`` sets the CAN data direction to either.
        """
        return self._direction

    @property
    def level(self) -> TriggerACanDataLevel:
        """Return the ``TRIGger:A:CAN:DATa:LEVel`` command.

        **Description:**
            - CAN option only: This command sets or queries the CAN Trigger threshold for the CAN
              data source.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN:DATa:LEVel?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:DATa:LEVel?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:DATa:LEVel value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:CAN:DATa:LEVel <NR3>
            - TRIGger:A:CAN:DATa:LEVel?

        **Info:**
            - ``<NR3>`` specifies the CAN trigger data level. The level can be ±12.0 divisions.
        """
        return self._level

    @property
    def source(self) -> TriggerACanDataSource:
        """Return the ``TRIGger:A:CAN:DATa:SOUrce`` command.

        **Description:**
            - CAN option only: This command sets or queries the CAN data source.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN:DATa:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:DATa:SOUrce?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:DATa:SOUrce value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:CAN:DATa:SOUrce CH<x>
            - TRIGger:A:CAN:DATa:SOUrce?

        **Info:**
            - ``CH<x>`` specifies the source for the CAN trigger. x can be 1, 2, 3, or 4.
        """
        return self._source

    @property
    def value(self) -> TriggerACanDataValue:
        """Return the ``TRIGger:A:CAN:DATa:VALue`` command.

        **Description:**
            - CAN option only: This command sets or quires the binary data string used for CAN
              Trigger if the trigger condition is ID or IDANDDATA.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN:DATa:VALue?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:DATa:VALue?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:DATa:VALue value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:CAN:DATa:VALue <QString>
            - TRIGger:A:CAN:DATa:VALue?

        **Info:**
            - ``<QString>`` is up to 32 bits specifying the CAN data value.
        """
        return self._value


class TriggerACanCondition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:CAN:CONDition`` command.

    **Description:**
        - CAN option only: This command sets or returns the CAN condition.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN:CONDition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:CONDition?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:CONDition value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:CAN:CONDition {SOF|FRAMEtype|IDENTifier|DATA|IDANDDATA|EOF|ACKMISS}
        - TRIGger:A:CAN:CONDition?

    **Info:**
        - ``SOF`` enables triggering on the start of frame.
        - ``FRAMEtype`` enables triggering on the type of frame.
        - ``IDENTifier`` enables triggering on a matching identifier.
        - ``DATA`` enables triggering on matching data.
        - ``IDANDDATA`` enables triggering on a matching identifier and matching data.
        - ``EOF`` enables triggering on the end of frame.
        - ``ACKMISS`` enables triggering on a missing acknowledge.
        - ``ERROR`` enables triggering on an error within a frame.
    """


class TriggerACan(SCPICmdRead):
    """The ``TRIGger:A:CAN`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:CAN?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.condition``: The ``TRIGger:A:CAN:CONDition`` command.
        - ``.data``: The ``TRIGger:A:CAN:DATa`` command tree.
        - ``.format``: The ``TRIGger:A:CAN:FORMat`` command.
        - ``.frametype``: The ``TRIGger:A:CAN:FRAMEtype`` command.
        - ``.identifier``: The ``TRIGger:A:CAN:IDENTifier`` command tree.
        - ``.probe``: The ``TRIGger:A:CAN:PROBE`` command.
        - ``.speed``: The ``TRIGger:A:CAN:SPEed`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._condition = TriggerACanCondition(device, f"{self._cmd_syntax}:CONDition")
        self._data = TriggerACanData(device, f"{self._cmd_syntax}:DATa")
        self._format = TriggerACanFormat(device, f"{self._cmd_syntax}:FORMat")
        self._frametype = TriggerACanFrametype(device, f"{self._cmd_syntax}:FRAMEtype")
        self._identifier = TriggerACanIdentifier(device, f"{self._cmd_syntax}:IDENTifier")
        self._probe = TriggerACanProbe(device, f"{self._cmd_syntax}:PROBE")
        self._speed = TriggerACanSpeed(device, f"{self._cmd_syntax}:SPEed")

    @property
    def condition(self) -> TriggerACanCondition:
        """Return the ``TRIGger:A:CAN:CONDition`` command.

        **Description:**
            - CAN option only: This command sets or returns the CAN condition.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN:CONDition?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:CONDition?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:CONDition value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:CAN:CONDition {SOF|FRAMEtype|IDENTifier|DATA|IDANDDATA|EOF|ACKMISS}
            - TRIGger:A:CAN:CONDition?

        **Info:**
            - ``SOF`` enables triggering on the start of frame.
            - ``FRAMEtype`` enables triggering on the type of frame.
            - ``IDENTifier`` enables triggering on a matching identifier.
            - ``DATA`` enables triggering on matching data.
            - ``IDANDDATA`` enables triggering on a matching identifier and matching data.
            - ``EOF`` enables triggering on the end of frame.
            - ``ACKMISS`` enables triggering on a missing acknowledge.
            - ``ERROR`` enables triggering on an error within a frame.
        """
        return self._condition

    @property
    def data(self) -> TriggerACanData:
        """Return the ``TRIGger:A:CAN:DATa`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:DATa?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.direction``: The ``TRIGger:A:CAN:DATa:DIRection`` command.
            - ``.level``: The ``TRIGger:A:CAN:DATa:LEVel`` command.
            - ``.source``: The ``TRIGger:A:CAN:DATa:SOUrce`` command.
            - ``.value``: The ``TRIGger:A:CAN:DATa:VALue`` command.
        """
        return self._data

    @property
    def format(self) -> TriggerACanFormat:
        """Return the ``TRIGger:A:CAN:FORMat`` command.

        **Description:**
            - CAN option only: This command sets or queries the CAN data format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:FORMat?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:FORMat value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:CAN:FORMat {BINary|HEX}
            - TRIGger:A:CAN:FORMat?

        **Info:**
            - ``BINary`` specifies binary as the CAN data format.
            - ``HEX`` specifies hexadecimal as the CAN data format.
        """
        return self._format

    @property
    def frametype(self) -> TriggerACanFrametype:
        """Return the ``TRIGger:A:CAN:FRAMEtype`` command.

        **Description:**
            - CAN option only: This command sets or queries the CAN trigger frame type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN:FRAMEtype?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:FRAMEtype?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:FRAMEtype value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:CAN:FRAMEtype {DATA|REMote|ERROR|OVERLOAD}
            - TRIGger:A:CAN:FRAMEtype?

        **Info:**
            - ``DATA`` specifies a data frame type.
            - ``REMote`` specifies a remote frame type.
            - ``ERROR`` specifies an error frame type.
            - ``OVERLOAD`` specifies an overload frame type.
        """
        return self._frametype

    @property
    def identifier(self) -> TriggerACanIdentifier:
        """Return the ``TRIGger:A:CAN:IDENTifier`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN:IDENTifier?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:IDENTifier?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.mode``: The ``TRIGger:A:CAN:IDENTifier:MODe`` command.
            - ``.value``: The ``TRIGger:A:CAN:IDENTifier:VALue`` command.
        """
        return self._identifier

    @property
    def probe(self) -> TriggerACanProbe:
        """Return the ``TRIGger:A:CAN:PROBE`` command.

        **Description:**
            - CAN option only: This command sets or queries the probing method used to probe the CAN
              signal.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN:PROBE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:PROBE?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:PROBE value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:CAN:PROBE {CANL|CANH|DIFFerential|TX|RX}
            - TRIGger:A:CAN:PROBE?

        **Info:**
            - ``CANL`` specifies that the probing method is CANL.
            - ``CANH`` specifies that the probing method is CANH.
            - ``DIFFerential`` specifies that the probing method used is differential.
            - ``TX`` specifies that the probing method is TX.
            - ``RX`` specifies that the probing method is RX.
        """
        return self._probe

    @property
    def speed(self) -> TriggerACanSpeed:
        """Return the ``TRIGger:A:CAN:SPEed`` command.

        **Description:**
            - CAN option only: This command sets or queries the bit rate of the CAN system.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN:SPEed?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN:SPEed?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:CAN:SPEed value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:CAN:SPEed <NR3>
            - TRIGger:A:CAN:SPEed?

        **Info:**
            - ``<NR3>`` specifies the bit rate of the CAN system. Possible values are 1M, 800K,
              500K, 250K, 125K, 100K, 83.3K, 62,5K, 50K, 33K, 20K, and 10K.
        """
        return self._speed


class TriggerABusUsbTokentype(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:TOKENType`` command.

    **Description:**
        - This command sets or queries the Token Type when USB Trigger condition is set to Token
          (Address) Packet.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:TOKENType?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:TOKENType?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:TOKENType value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:TOKENType {ANY|IN|OUT|SOF|SETUP}
        - TRIGger:A:BUS:USB:TOKENType?

    **Info:**
        - ``ANY`` specifies ANY (XX01) token type.
        - ``IN`` specifies IN (1001) token type.
        - ``OUT`` specifies OUT (0001) token type.
        - ``SOF`` specifies SOF (0101) token type.
        - ``SETUP`` specifies SETUP (1101) token type.
    """


class TriggerABusUsbSplitSeValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPLIT:SE:VALue`` command.

    **Description:**
        - This command sets or queries the Start/End value for the USB bus trigger on split token
          field. The USB Speed is set to High (480 Mbps) and the Trigger condition is set to Special
          Packet.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SE:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SE:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:SPLIT:SE:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:SPLIT:SE:VALue {DONTCare|FULLSPeed|LOWSPeed|ISOMID|ISOEND|ISOSTART|ISOALL}
        - TRIGger:A:BUS:USB:SPLIT:SE:VALue?

    **Info:**
        - ``DONTCARE`` specifies the Start/End bit value as don't care (X).
        - ``FULLSPeed`` specifies the Start/End bit value as Control/Bulk/Interrupt Full Speed
          device (0X).
        - ``LOWSPeed`` specifies the Start/End bit value as Control/Bulk/Interrupt Low Speed device
          (1X).
        - ``ISOMID`` specifies the Start/End bit value as Isochronous Data is Middle (00).
        - ``ISOEND`` specifies the Start/End bit value as Isochronous Data is End (01).
        - ``ISOSTART`` specifies the Start/End bit value as Isochronous Data is Start (10).
        - ``ISOALL`` specifies the Start/End bit value as Isochronous Data is All (11).
    """  # noqa: E501


class TriggerABusUsbSplitSe(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPLIT:SE`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SE?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.value``: The ``TRIGger:A:BUS:USB:SPLIT:SE:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._value = TriggerABusUsbSplitSeValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def value(self) -> TriggerABusUsbSplitSeValue:
        """Return the ``TRIGger:A:BUS:USB:SPLIT:SE:VALue`` command.

        **Description:**
            - This command sets or queries the Start/End value for the USB bus trigger on split
              token field. The USB Speed is set to High (480 Mbps) and the Trigger condition is set
              to Special Packet.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SE:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:SE:VALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:SE:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:SPLIT:SE:VALue {DONTCare|FULLSPeed|LOWSPeed|ISOMID|ISOEND|ISOSTART|ISOALL}
            - TRIGger:A:BUS:USB:SPLIT:SE:VALue?

        **Info:**
            - ``DONTCARE`` specifies the Start/End bit value as don't care (X).
            - ``FULLSPeed`` specifies the Start/End bit value as Control/Bulk/Interrupt Full Speed
              device (0X).
            - ``LOWSPeed`` specifies the Start/End bit value as Control/Bulk/Interrupt Low Speed
              device (1X).
            - ``ISOMID`` specifies the Start/End bit value as Isochronous Data is Middle (00).
            - ``ISOEND`` specifies the Start/End bit value as Isochronous Data is End (01).
            - ``ISOSTART`` specifies the Start/End bit value as Isochronous Data is Start (10).
            - ``ISOALL`` specifies the Start/End bit value as Isochronous Data is All (11).
        """  # noqa: E501
        return self._value


class TriggerABusUsbSplitScValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPLIT:SC:VALue`` command.

    **Description:**
        - This command sets or queries the Start/Complete value for the USB bus trigger on split
          token field. The USB Speed is set to High (480 Mbps) and the Trigger condition is set to
          Special Packet.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SC:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SC:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:SPLIT:SC:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:SPLIT:SC:VALue {CSPLIT|SSPLIT|DONTcare}
        - TRIGger:A:BUS:USB:SPLIT:SC:VALue?

    **Info:**
        - ``DONTcare`` specifies the Start/Complete value as don't care (X).
        - ``SSPLIT`` specifies the Start/Complete value as Start (SSPLIT) (0).
        - ``CSPLIT`` specifies the Start/Complete value as Complete (CSPLIT)(1).
    """


class TriggerABusUsbSplitSc(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPLIT:SC`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SC?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SC?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.value``: The ``TRIGger:A:BUS:USB:SPLIT:SC:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._value = TriggerABusUsbSplitScValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def value(self) -> TriggerABusUsbSplitScValue:
        """Return the ``TRIGger:A:BUS:USB:SPLIT:SC:VALue`` command.

        **Description:**
            - This command sets or queries the Start/Complete value for the USB bus trigger on split
              token field. The USB Speed is set to High (480 Mbps) and the Trigger condition is set
              to Special Packet.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SC:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:SC:VALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:SC:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:SPLIT:SC:VALue {CSPLIT|SSPLIT|DONTcare}
            - TRIGger:A:BUS:USB:SPLIT:SC:VALue?

        **Info:**
            - ``DONTcare`` specifies the Start/Complete value as don't care (X).
            - ``SSPLIT`` specifies the Start/Complete value as Start (SSPLIT) (0).
            - ``CSPLIT`` specifies the Start/Complete value as Complete (CSPLIT)(1).
        """
        return self._value


class TriggerABusUsbSplitPortValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPLIT:PORT:VALue`` command.

    **Description:**
        - This command sets or queries the port address for the USB bus trigger on split token
          field. The USB Speed is set to High (480 Mbps) and the Trigger condition is set to Special
          Packet.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:PORT:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:PORT:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:SPLIT:PORT:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:SPLIT:PORT:VALue <string>
        - TRIGger:A:BUS:USB:SPLIT:PORT:VALue?

    **Info:**
        - ``<string>`` specifies the port address in the specified valid format.
    """


class TriggerABusUsbSplitPortFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPLIT:PORT:FORMat`` command.

    **Description:**
        - This command sets the port address format for the USB bus trigger on split token field.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:PORT:FORMat?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:PORT:FORMat?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:SPLIT:PORT:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:SPLIT:PORT:FORMat {BINary|HEXadecimal}
        - TRIGger:A:BUS:USB:SPLIT:PORT:FORMat?

    **Info:**
        - ``BINary`` sets the port address format to Binary.
        - ``HEXadecimal`` sets the port address format to Hexadecimal.
    """


class TriggerABusUsbSplitPort(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPLIT:PORT`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:PORT?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:PORT?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:USB:SPLIT:PORT:FORMat`` command.
        - ``.value``: The ``TRIGger:A:BUS:USB:SPLIT:PORT:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusUsbSplitPortFormat(device, f"{self._cmd_syntax}:FORMat")
        self._value = TriggerABusUsbSplitPortValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusUsbSplitPortFormat:
        """Return the ``TRIGger:A:BUS:USB:SPLIT:PORT:FORMat`` command.

        **Description:**
            - This command sets the port address format for the USB bus trigger on split token
              field.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:PORT:FORMat?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:PORT:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:PORT:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:SPLIT:PORT:FORMat {BINary|HEXadecimal}
            - TRIGger:A:BUS:USB:SPLIT:PORT:FORMat?

        **Info:**
            - ``BINary`` sets the port address format to Binary.
            - ``HEXadecimal`` sets the port address format to Hexadecimal.
        """
        return self._format

    @property
    def value(self) -> TriggerABusUsbSplitPortValue:
        """Return the ``TRIGger:A:BUS:USB:SPLIT:PORT:VALue`` command.

        **Description:**
            - This command sets or queries the port address for the USB bus trigger on split token
              field. The USB Speed is set to High (480 Mbps) and the Trigger condition is set to
              Special Packet.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:PORT:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:PORT:VALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:PORT:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:SPLIT:PORT:VALue <string>
            - TRIGger:A:BUS:USB:SPLIT:PORT:VALue?

        **Info:**
            - ``<string>`` specifies the port address in the specified valid format.
        """
        return self._value


class TriggerABusUsbSplitHubValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPLIT:HUB:VALue`` command.

    **Description:**
        - This command sets or queries the hub address of the USB bus trigger on split token field.
          The USB Speed is set to High (480 Mbps) and the Trigger condition is set to Special
          Packet.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:HUB:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:HUB:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:SPLIT:HUB:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:SPLIT:HUB:VALue <string>
        - TRIGger:A:BUS:USB:SPLIT:HUB:VALue?

    **Info:**
        - ``<string>`` specifies the hub address in the specified valid format.
    """


class TriggerABusUsbSplitHubFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPLIT:HUB:FORMat`` command.

    **Description:**
        - This command sets or queries the format for the hub address of the USB bus trigger on
          split token field.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:HUB:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:HUB:FORMat?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:SPLIT:HUB:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:SPLIT:HUB:FORMat {BINary|HEXadecimal}
        - TRIGger:A:BUS:USB:SPLIT:HUB:FORMat?

    **Info:**
        - ``BINary`` specifies hub address format as Binary.
        - ``HEXadecimal`` specifies hub address format as Hexadecimal.
    """


class TriggerABusUsbSplitHub(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPLIT:HUB`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:HUB?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:HUB?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:USB:SPLIT:HUB:FORMat`` command.
        - ``.value``: The ``TRIGger:A:BUS:USB:SPLIT:HUB:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusUsbSplitHubFormat(device, f"{self._cmd_syntax}:FORMat")
        self._value = TriggerABusUsbSplitHubValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusUsbSplitHubFormat:
        """Return the ``TRIGger:A:BUS:USB:SPLIT:HUB:FORMat`` command.

        **Description:**
            - This command sets or queries the format for the hub address of the USB bus trigger on
              split token field.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:HUB:FORMat?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:HUB:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:HUB:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:SPLIT:HUB:FORMat {BINary|HEXadecimal}
            - TRIGger:A:BUS:USB:SPLIT:HUB:FORMat?

        **Info:**
            - ``BINary`` specifies hub address format as Binary.
            - ``HEXadecimal`` specifies hub address format as Hexadecimal.
        """
        return self._format

    @property
    def value(self) -> TriggerABusUsbSplitHubValue:
        """Return the ``TRIGger:A:BUS:USB:SPLIT:HUB:VALue`` command.

        **Description:**
            - This command sets or queries the hub address of the USB bus trigger on split token
              field. The USB Speed is set to High (480 Mbps) and the Trigger condition is set to
              Special Packet.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:HUB:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:HUB:VALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:HUB:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:SPLIT:HUB:VALue <string>
            - TRIGger:A:BUS:USB:SPLIT:HUB:VALue?

        **Info:**
            - ``<string>`` specifies the hub address in the specified valid format.
        """
        return self._value


class TriggerABusUsbSplitEtValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPLIT:ET:VALue`` command.

    **Description:**
        - This command sets or queries the Endpoint Type value for SPLIT token. The USB Speed is set
          to High (480 Mbps) and the Trigger condition is set to Special Packet.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:ET:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:ET:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:SPLIT:ET:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:SPLIT:ET:VALue {DONTcare|CONTRol|ISOchronous|BULK|INTERRUPT}
        - TRIGger:A:BUS:USB:SPLIT:ET:VALue?

    **Info:**
        - ``DONTCare`` specifies the End Point Type value as don't care (XX).
        - ``CONTRol`` specifies the End Point Type value as Control (00).
        - ``ISOchronous`` specifies the End Point Type value as Isochronous (01).
        - ``BULK`` specifies the End Point Type value as Bulk (10).
        - ``INTERRUPT`` specifies the End Point Type value as Interrupt (11).
    """


class TriggerABusUsbSplitEt(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPLIT:ET`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:ET?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:ET?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.value``: The ``TRIGger:A:BUS:USB:SPLIT:ET:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._value = TriggerABusUsbSplitEtValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def value(self) -> TriggerABusUsbSplitEtValue:
        """Return the ``TRIGger:A:BUS:USB:SPLIT:ET:VALue`` command.

        **Description:**
            - This command sets or queries the Endpoint Type value for SPLIT token. The USB Speed is
              set to High (480 Mbps) and the Trigger condition is set to Special Packet.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:ET:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:ET:VALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPLIT:ET:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:SPLIT:ET:VALue {DONTcare|CONTRol|ISOchronous|BULK|INTERRUPT}
            - TRIGger:A:BUS:USB:SPLIT:ET:VALue?

        **Info:**
            - ``DONTCare`` specifies the End Point Type value as don't care (XX).
            - ``CONTRol`` specifies the End Point Type value as Control (00).
            - ``ISOchronous`` specifies the End Point Type value as Isochronous (01).
            - ``BULK`` specifies the End Point Type value as Bulk (10).
            - ``INTERRUPT`` specifies the End Point Type value as Interrupt (11).
        """
        return self._value


class TriggerABusUsbSplit(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPLIT`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.et``: The ``TRIGger:A:BUS:USB:SPLIT:ET`` command tree.
        - ``.hub``: The ``TRIGger:A:BUS:USB:SPLIT:HUB`` command tree.
        - ``.port``: The ``TRIGger:A:BUS:USB:SPLIT:PORT`` command tree.
        - ``.sc``: The ``TRIGger:A:BUS:USB:SPLIT:SC`` command tree.
        - ``.se``: The ``TRIGger:A:BUS:USB:SPLIT:SE`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._et = TriggerABusUsbSplitEt(device, f"{self._cmd_syntax}:ET")
        self._hub = TriggerABusUsbSplitHub(device, f"{self._cmd_syntax}:HUB")
        self._port = TriggerABusUsbSplitPort(device, f"{self._cmd_syntax}:PORT")
        self._sc = TriggerABusUsbSplitSc(device, f"{self._cmd_syntax}:SC")
        self._se = TriggerABusUsbSplitSe(device, f"{self._cmd_syntax}:SE")

    @property
    def et(self) -> TriggerABusUsbSplitEt:
        """Return the ``TRIGger:A:BUS:USB:SPLIT:ET`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:ET?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:ET?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.value``: The ``TRIGger:A:BUS:USB:SPLIT:ET:VALue`` command.
        """
        return self._et

    @property
    def hub(self) -> TriggerABusUsbSplitHub:
        """Return the ``TRIGger:A:BUS:USB:SPLIT:HUB`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:HUB?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:HUB?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:USB:SPLIT:HUB:FORMat`` command.
            - ``.value``: The ``TRIGger:A:BUS:USB:SPLIT:HUB:VALue`` command.
        """
        return self._hub

    @property
    def port(self) -> TriggerABusUsbSplitPort:
        """Return the ``TRIGger:A:BUS:USB:SPLIT:PORT`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:PORT?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:PORT?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:USB:SPLIT:PORT:FORMat`` command.
            - ``.value``: The ``TRIGger:A:BUS:USB:SPLIT:PORT:VALue`` command.
        """
        return self._port

    @property
    def sc(self) -> TriggerABusUsbSplitSc:
        """Return the ``TRIGger:A:BUS:USB:SPLIT:SC`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SC?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SC?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.value``: The ``TRIGger:A:BUS:USB:SPLIT:SC:VALue`` command.
        """
        return self._sc

    @property
    def se(self) -> TriggerABusUsbSplitSe:
        """Return the ``TRIGger:A:BUS:USB:SPLIT:SE`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT:SE?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.value``: The ``TRIGger:A:BUS:USB:SPLIT:SE:VALue`` command.
        """
        return self._se


class TriggerABusUsbSpecialtype(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SPECIALType`` command.

    **Description:**
        - This command sets or queries the PID value when USB bus Trigger on condition is set to
          Special Packet.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPECIALType?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPECIALType?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:SPECIALType value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:SPECIALType {ANY|ERR|PING|PRE|RESERVED|SPLIT}
        - TRIGger:A:BUS:USB:SPECIALType?

    **Info:**
        - ``ANY`` specifies Any (XX00) PID value.
        - ``ERR`` specifies ERR (1100) PID value.
        - ``PING`` specifies PING (0100) PID value.
        - ``PRE`` specifies PRE (1100) PID value.
        - ``RESERVED`` specifies Reserved (0000) PID value.
        - ``SPLIT`` specifies Split (1000) PID value.
    """


class TriggerABusUsbSofFramenumber(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SOF:FRAMENUMber`` command.

    **Description:**
        - This command sets frame number for the USB bus trigger when the condition is Start of
          Frame (SOF).

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SOF:FRAMENUMber?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SOF:FRAMENUMber?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:SOF:FRAMENUMber value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:SOF:FRAMENUMber <string>
        - TRIGger:A:BUS:USB:SOF:FRAMENUMber?

    **Info:**
        - ``<string>`` specifies the frame number for the SOF in the specified valid format.
    """


class TriggerABusUsbSofFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SOF:FORMat`` command.

    **Description:**
        - This command sets or queries the format for the Start of Frame frame number.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SOF:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SOF:FORMat?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:SOF:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:SOF:FORMat {BINary|HEXadecimal|SYMBolic}
        - TRIGger:A:BUS:USB:SOF:FORMat?

    **Info:**
        - ``BINary`` specifies the Start of Frame frame number format as Binary.
        - ``HEXadecimal`` specifies the Start of Frame frame number format as Hexadecimal.
        - ``SYMBolic`` specifies the Start of Frame frame number format as Symbolic.
    """


class TriggerABusUsbSof(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:SOF`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SOF?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SOF?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:USB:SOF:FORMat`` command.
        - ``.framenumber``: The ``TRIGger:A:BUS:USB:SOF:FRAMENUMber`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusUsbSofFormat(device, f"{self._cmd_syntax}:FORMat")
        self._framenumber = TriggerABusUsbSofFramenumber(device, f"{self._cmd_syntax}:FRAMENUMber")

    @property
    def format(self) -> TriggerABusUsbSofFormat:
        """Return the ``TRIGger:A:BUS:USB:SOF:FORMat`` command.

        **Description:**
            - This command sets or queries the format for the Start of Frame frame number.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SOF:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SOF:FORMat?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:SOF:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:SOF:FORMat {BINary|HEXadecimal|SYMBolic}
            - TRIGger:A:BUS:USB:SOF:FORMat?

        **Info:**
            - ``BINary`` specifies the Start of Frame frame number format as Binary.
            - ``HEXadecimal`` specifies the Start of Frame frame number format as Hexadecimal.
            - ``SYMBolic`` specifies the Start of Frame frame number format as Symbolic.
        """
        return self._format

    @property
    def framenumber(self) -> TriggerABusUsbSofFramenumber:
        """Return the ``TRIGger:A:BUS:USB:SOF:FRAMENUMber`` command.

        **Description:**
            - This command sets frame number for the USB bus trigger when the condition is Start of
              Frame (SOF).

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SOF:FRAMENUMber?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:SOF:FRAMENUMber?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:SOF:FRAMENUMber value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:SOF:FRAMENUMber <string>
            - TRIGger:A:BUS:USB:SOF:FRAMENUMber?

        **Info:**
            - ``<string>`` specifies the frame number for the SOF in the specified valid format.
        """
        return self._framenumber


class TriggerABusUsbQualifier(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:QUAlifier`` command.

    **Description:**
        - This command sets or queries the USB bus trigger qualifier for address, endpoint, and
          data.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:QUAlifier?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:QUAlifier?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:QUAlifier value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:QUAlifier {EQUal|INrange|LESSEQual|MOREEQual|OUTrange|UNEQual| LESSThan|MOREThan}
        - TRIGger:A:BUS:USB:QUAlifier?

    **Info:**
        - ``EQUal`` specifies = trigger qualifier.
        - ``INrange`` specifies Inside Range trigger qualifier.
        - ``LESSEQual`` specifies <= trigger qualifier.
        - ``MOREEQual`` specifies >= trigger qualifier.
        - ``OUTrange`` specifies = trigger qualifier.
        - ``UNEQual`` specifies != trigger qualifier.
        - ``LESSThan`` specifies < trigger qualifier.
        - ``MOREThan`` specifies > trigger qualifier.
    """  # noqa: E501


class TriggerABusUsbPatternSymbolPlusItem(ValidatedDynamicNumberCmd, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x>`` command.

    **Description:**
        - Sets or queries the specified character bit pattern (positive disparity) when the Trigger
          Condition is set to Pattern.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x> <string>
        - TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x>?

    **Info:**
        - ``<string>`` is the specified character bit pattern.
    """


class TriggerABusUsbPatternSymbolMinusItem(ValidatedDynamicNumberCmd, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x>`` command.

    **Description:**
        - Sets or queries the specified character bit pattern (negative disparity) when the Trigger
          Condition is set to Pattern.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x> <string>
        - TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x>?

    **Info:**
        - ``<string>`` is the specified character bit pattern.
    """


class TriggerABusUsbPatternSymbol(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:PATtern:SYMbol`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:PATtern:SYMbol?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:PATtern:SYMbol?``
          query and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.minus``: The ``TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x>`` command.
        - ``.plus``: The ``TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._minus: Dict[int, TriggerABusUsbPatternSymbolMinusItem] = DefaultDictPassKeyToFactory(
            lambda x: TriggerABusUsbPatternSymbolMinusItem(device, f"{self._cmd_syntax}:MINus{x}")
        )
        self._plus: Dict[int, TriggerABusUsbPatternSymbolPlusItem] = DefaultDictPassKeyToFactory(
            lambda x: TriggerABusUsbPatternSymbolPlusItem(device, f"{self._cmd_syntax}:PLUS{x}")
        )

    @property
    def minus(self) -> Dict[int, TriggerABusUsbPatternSymbolMinusItem]:
        """Return the ``TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x>`` command.

        **Description:**
            - Sets or queries the specified character bit pattern (negative disparity) when the
              Trigger Condition is set to Pattern.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x>?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x> <string>
            - TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x>?

        **Info:**
            - ``<string>`` is the specified character bit pattern.
        """
        return self._minus

    @property
    def plus(self) -> Dict[int, TriggerABusUsbPatternSymbolPlusItem]:
        """Return the ``TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x>`` command.

        **Description:**
            - Sets or queries the specified character bit pattern (positive disparity) when the
              Trigger Condition is set to Pattern.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x> <string>
            - TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x>?

        **Info:**
            - ``<string>`` is the specified character bit pattern.
        """
        return self._plus


class TriggerABusUsbPatternOrderedset(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:PATtern:ORDERedset`` command.

    **Description:**
        - This command sets or queries the state of triggering on an ordered set.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:PATtern:ORDERedset?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:USB:PATtern:ORDERedset?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:PATtern:ORDERedset value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:PATtern:ORDERedset {OFF|ON|0|1}
        - TRIGger:A:BUS:USB:PATtern:ORDERedset?

    **Info:**
        - ``OFF`` disables triggering on an ordered set.
        - ``ON`` enables triggering on an ordered set.
        - ``0`` disables triggering on an ordered set.
        - ``1`` enables triggering on an ordered set.
    """


class TriggerABusUsbPatternNumsymbols(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:PATtern:NUMSymbols`` command.

    **Description:**
        - Sets or queries the number of symbols to trigger on when USB trigger type is in pattern
          mode.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:PATtern:NUMSymbols?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:USB:PATtern:NUMSymbols?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:PATtern:NUMSymbols value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:PATtern:NUMSymbols <NR1>
        - TRIGger:A:BUS:USB:PATtern:NUMSymbols?
    """


class TriggerABusUsbPatternCharItem(ValidatedDynamicNumberCmd, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:PATtern:CHAR<x>`` command.

    **Description:**
        - Sets or queries the specified character when the Trigger Condition is set to Pattern.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:PATtern:CHAR<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:PATtern:CHAR<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:PATtern:CHAR<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:PATtern:CHAR<x> <string>
        - TRIGger:A:BUS:USB:PATtern:CHAR<x>?

    **Info:**
        - ``<string>`` is the specified character.
    """


class TriggerABusUsbPattern(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:PATtern`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:PATtern?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:PATtern?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.char``: The ``TRIGger:A:BUS:USB:PATtern:CHAR<x>`` command.
        - ``.numsymbols``: The ``TRIGger:A:BUS:USB:PATtern:NUMSymbols`` command.
        - ``.orderedset``: The ``TRIGger:A:BUS:USB:PATtern:ORDERedset`` command.
        - ``.symbol``: The ``TRIGger:A:BUS:USB:PATtern:SYMbol`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._char: Dict[int, TriggerABusUsbPatternCharItem] = DefaultDictPassKeyToFactory(
            lambda x: TriggerABusUsbPatternCharItem(device, f"{self._cmd_syntax}:CHAR{x}")
        )
        self._numsymbols = TriggerABusUsbPatternNumsymbols(device, f"{self._cmd_syntax}:NUMSymbols")
        self._orderedset = TriggerABusUsbPatternOrderedset(device, f"{self._cmd_syntax}:ORDERedset")
        self._symbol = TriggerABusUsbPatternSymbol(device, f"{self._cmd_syntax}:SYMbol")

    @property
    def char(self) -> Dict[int, TriggerABusUsbPatternCharItem]:
        """Return the ``TRIGger:A:BUS:USB:PATtern:CHAR<x>`` command.

        **Description:**
            - Sets or queries the specified character when the Trigger Condition is set to Pattern.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:PATtern:CHAR<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:PATtern:CHAR<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:PATtern:CHAR<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:PATtern:CHAR<x> <string>
            - TRIGger:A:BUS:USB:PATtern:CHAR<x>?

        **Info:**
            - ``<string>`` is the specified character.
        """
        return self._char

    @property
    def numsymbols(self) -> TriggerABusUsbPatternNumsymbols:
        """Return the ``TRIGger:A:BUS:USB:PATtern:NUMSymbols`` command.

        **Description:**
            - Sets or queries the number of symbols to trigger on when USB trigger type is in
              pattern mode.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:PATtern:NUMSymbols?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:PATtern:NUMSymbols?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:PATtern:NUMSymbols value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:PATtern:NUMSymbols <NR1>
            - TRIGger:A:BUS:USB:PATtern:NUMSymbols?
        """
        return self._numsymbols

    @property
    def orderedset(self) -> TriggerABusUsbPatternOrderedset:
        """Return the ``TRIGger:A:BUS:USB:PATtern:ORDERedset`` command.

        **Description:**
            - This command sets or queries the state of triggering on an ordered set.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:PATtern:ORDERedset?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:PATtern:ORDERedset?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:PATtern:ORDERedset value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:PATtern:ORDERedset {OFF|ON|0|1}
            - TRIGger:A:BUS:USB:PATtern:ORDERedset?

        **Info:**
            - ``OFF`` disables triggering on an ordered set.
            - ``ON`` enables triggering on an ordered set.
            - ``0`` disables triggering on an ordered set.
            - ``1`` enables triggering on an ordered set.
        """
        return self._orderedset

    @property
    def symbol(self) -> TriggerABusUsbPatternSymbol:
        """Return the ``TRIGger:A:BUS:USB:PATtern:SYMbol`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:PATtern:SYMbol?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:PATtern:SYMbol?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.minus``: The ``TRIGger:A:BUS:USB:PATtern:SYMbol:MINus<x>`` command.
            - ``.plus``: The ``TRIGger:A:BUS:USB:PATtern:SYMbol:PLUS<x>`` command.
        """
        return self._symbol


class TriggerABusUsbHandshaketype(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:HANDShaketype`` command.

    **Description:**
        - This command sets or queries the handshake type when USB bus trigger on condition is set
          to Handshake Packet.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:HANDShaketype?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:HANDShaketype?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:HANDShaketype value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:HANDShaketype {ACK|ANY|NAK|NYET|STALL}
        - TRIGger:A:BUS:USB:HANDShaketype?

    **Info:**
        - ``ACK`` specifies the handshake type as Acknowledge (XX10).
        - ``ANY`` specifies the handshake type as Any (0010).
        - ``NAK`` specifies the handshake type as Negative Acknowledge (1010).
        - ``NYET`` specifies the handshake type as No response Yet (0110).
        - ``STALL`` specifies the handshake type as Stall (1110).
    """


class TriggerABusUsbFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:FORMat`` command.

    **Description:**
        - Sets or queries the pattern editing format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:FORMat?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:FORMat {CHAR|SYMbol}
        - TRIGger:A:BUS:USB:FORMat?

    **Info:**
        - ``CHAR`` indicates that the pattern editing format is set to character.
        - ``SYMBOL`` indicates that the pattern editing format is set to symbol.
    """


class TriggerABusUsbErrtype(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:ERRTYPE`` command.

    **Description:**
        - This command sets or queries the error type when USB bus trigger on condition is set to
          Error.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ERRTYPE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ERRTYPE?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:ERRTYPE value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:ERRTYPE {BITSTUFFing|CRC5|CRC16|PID}
        - TRIGger:A:BUS:USB:ERRTYPE?

    **Info:**
        - ``BITSTUFFing`` specifies the error type Bit Stuffing .
        - ``CRC5`` specifies the error type as Token CRC5 (Cyclic Redundancy Check 5).
        - ``CRC16`` specifies the error type as Data CRC16 (Cyclic Redundancy Check 16).
        - ``PID`` specifies the error type as PID Check Bits.
    """


class TriggerABusUsbError(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:ERROR`` command.

    **Description:**
        - Sets or queries whether the oscilloscope will trigger on a character error or a disparity
          error.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ERROR?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ERROR?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:ERROR value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:ERROR {CHARacter|DISParity}
        - TRIGger:A:BUS:USB:ERROR?

    **Info:**
        - ``CHARACTER`` sets the oscilloscope to trigger on a character error.
        - ``DISPARITY`` sets the oscilloscope to trigger on a disparity error.
    """


class TriggerABusUsbEndpointValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:ENDPoint:VALue`` command.

    **Description:**
        - This command sets or queries the endpoint value for normal token.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ENDPoint:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ENDPoint:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:ENDPoint:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:ENDPoint:VALue <string>
        - TRIGger:A:BUS:USB:ENDPoint:VALue?

    **Info:**
        - ``<string>`` specifies the data value in the specified valid format (binary, hex, or
          symbolic).
    """


class TriggerABusUsbEndpointHivalue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:ENDPoint:HIVALue`` command.

    **Description:**
        - This command sets or queries the endpoint value for data token to be used with in range
          and out of range qualifiers. The VALue and HIVALue set a range that the INrange and
          OUTrange qualifiers used to decide when to trigger. For example, if the QUALIFIER is set
          to INrange, and the address is within the range set by VALue and HIVALue, then a trigger
          can be generated.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ENDPoint:HIVALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ENDPoint:HIVALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:ENDPoint:HIVALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:ENDPoint:HIVALue <string>
        - TRIGger:A:BUS:USB:ENDPoint:HIVALue?

    **Info:**
        - ``<string>`` specifies the endpoint value in the specified valid format (binary, hex, or
          symbolic).
    """


class TriggerABusUsbEndpointFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:ENDPoint:FORMat`` command.

    **Description:**
        - This command sets or queries the endpoint format for data token to be used with in range
          and out of range qualifiers.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ENDPoint:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ENDPoint:FORMat?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:ENDPoint:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:ENDPoint:FORMat {BINary|HEXadecimal}
        - TRIGger:A:BUS:USB:ENDPoint:FORMat?

    **Info:**
        - ``BINary`` specifies the endpoint format for data token as Binary.
        - ``HEXadecimal`` specifies the endpoint format for data token as Hexadecimal.
    """


class TriggerABusUsbEndpoint(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:ENDPoint`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ENDPoint?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ENDPoint?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:USB:ENDPoint:FORMat`` command.
        - ``.hivalue``: The ``TRIGger:A:BUS:USB:ENDPoint:HIVALue`` command.
        - ``.value``: The ``TRIGger:A:BUS:USB:ENDPoint:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusUsbEndpointFormat(device, f"{self._cmd_syntax}:FORMat")
        self._hivalue = TriggerABusUsbEndpointHivalue(device, f"{self._cmd_syntax}:HIVALue")
        self._value = TriggerABusUsbEndpointValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusUsbEndpointFormat:
        """Return the ``TRIGger:A:BUS:USB:ENDPoint:FORMat`` command.

        **Description:**
            - This command sets or queries the endpoint format for data token to be used with in
              range and out of range qualifiers.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ENDPoint:FORMat?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:ENDPoint:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:ENDPoint:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:ENDPoint:FORMat {BINary|HEXadecimal}
            - TRIGger:A:BUS:USB:ENDPoint:FORMat?

        **Info:**
            - ``BINary`` specifies the endpoint format for data token as Binary.
            - ``HEXadecimal`` specifies the endpoint format for data token as Hexadecimal.
        """
        return self._format

    @property
    def hivalue(self) -> TriggerABusUsbEndpointHivalue:
        """Return the ``TRIGger:A:BUS:USB:ENDPoint:HIVALue`` command.

        **Description:**
            - This command sets or queries the endpoint value for data token to be used with in
              range and out of range qualifiers. The VALue and HIVALue set a range that the INrange
              and OUTrange qualifiers used to decide when to trigger. For example, if the QUALIFIER
              is set to INrange, and the address is within the range set by VALue and HIVALue, then
              a trigger can be generated.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ENDPoint:HIVALue?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:ENDPoint:HIVALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:ENDPoint:HIVALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:ENDPoint:HIVALue <string>
            - TRIGger:A:BUS:USB:ENDPoint:HIVALue?

        **Info:**
            - ``<string>`` specifies the endpoint value in the specified valid format (binary, hex,
              or symbolic).
        """
        return self._hivalue

    @property
    def value(self) -> TriggerABusUsbEndpointValue:
        """Return the ``TRIGger:A:BUS:USB:ENDPoint:VALue`` command.

        **Description:**
            - This command sets or queries the endpoint value for normal token.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ENDPoint:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:ENDPoint:VALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:ENDPoint:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:ENDPoint:VALue <string>
            - TRIGger:A:BUS:USB:ENDPoint:VALue?

        **Info:**
            - ``<string>`` specifies the data value in the specified valid format (binary, hex, or
              symbolic).
        """
        return self._value


class TriggerABusUsbDisparity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:DISParity`` command.

    **Description:**
        - Sets or queries the type of disparity that the bus will trigger on.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DISParity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DISParity?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:DISParity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:DISParity {NEGAtive|POSITIVe|EITher}
        - TRIGger:A:BUS:USB:DISParity?

    **Info:**
        - ``NEGative`` specifies negative disparity.
        - ``POSITIVe`` specifies positive disparity.
        - ``EITher`` specifies either disparity.
    """


class TriggerABusUsbDataValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:DATa:VALue`` command.

    **Description:**
        - This command sets or queries the USB bus trigger data value for data token.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:VALue?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:DATa:VALue <string>
        - TRIGger:A:BUS:USB:DATa:VALue?

    **Info:**
        - ``<string>`` specifies the data value. The valid characters are 0, 1, or X representing a
          binary number.
    """


class TriggerABusUsbDataType(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:DATa:TYPe`` command.

    **Description:**
        - This command sets or queries the data packet type when USB bus trigger condition is Data
          Packet.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa:TYPe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:TYPe?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:TYPe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:DATa:TYPe {ANY|DATA<x>|MDATA}
        - TRIGger:A:BUS:USB:DATa:TYPe?

    **Info:**
        - ``ANY`` specifies the data packet type to ANY.
        - ``DATA0`` specifies the data packet type to DATA0.
        - ``DATA1`` specifies the data packet type to DATA1.
        - ``DATA2`` specifies the data packet type to DATA2.
        - ``MDATA`` specifies the data packet type to MDATA.
    """


class TriggerABusUsbDataSize(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:DATa:SIZe`` command.

    **Description:**
        - This command sets or queries the number of contiguous data bytes to USB bus trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa:SIZe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:SIZe?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:SIZe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:DATa:SIZe <NR3>
        - TRIGger:A:BUS:USB:DATa:SIZe?

    **Info:**
        - ``<NR3>`` specifies the data size in bytes.
    """


class TriggerABusUsbDataOffset(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:DATa:OFFSet`` command.

    **Description:**
        - This command sets or queries data offset for the USB bus trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa:OFFSet?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:OFFSet?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:OFFSet value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:DATa:OFFSet {<NR3>|DONTCare}
        - TRIGger:A:BUS:USB:DATa:OFFSet?

    **Info:**
        - ``<NR3>`` specifies the data offset in bytes.
        - ``DONTCare`` specifies the data offset as Don't Care.
    """


class TriggerABusUsbDataHivalue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:DATa:HIVALue`` command.

    **Description:**
        - This command sets or queries data value for data token to be used with In Range and Out of
          Range qualifiers. The Trigger on Condition is set to Data Packet. The VALue and HIVALue
          set a range that the INrange and OUTrange qualifiers used to decide when to trigger. For
          example, if the QUALIFER is set to INrange, and the address is within the range set by
          VALue and HIVALue, then a trigger can be generated.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa:HIVALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:HIVALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:HIVALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:DATa:HIVALue <string>
        - TRIGger:A:BUS:USB:DATa:HIVALue?

    **Info:**
        - ``<string>`` specifies the data value in the specified valid format (binary, hex, or
          decimal).
    """


class TriggerABusUsbDataFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:DATa:FORMat`` command.

    **Description:**
        - This command sets or queries the data format for the USB bus trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:FORMat?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:DATa:FORMat {BINary|HEXadecimal}
        - TRIGger:A:BUS:USB:DATa:FORMat?

    **Info:**
        - ``BINary`` specifies the data format for the USB bus trigger as Binary.
        - ``HEXadecimal`` specifies the data format for the USB bus trigger as Hexadecimal.
    """


class TriggerABusUsbData(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:DATa`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:USB:DATa:FORMat`` command.
        - ``.hivalue``: The ``TRIGger:A:BUS:USB:DATa:HIVALue`` command.
        - ``.offset``: The ``TRIGger:A:BUS:USB:DATa:OFFSet`` command.
        - ``.size``: The ``TRIGger:A:BUS:USB:DATa:SIZe`` command.
        - ``.type``: The ``TRIGger:A:BUS:USB:DATa:TYPe`` command.
        - ``.value``: The ``TRIGger:A:BUS:USB:DATa:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusUsbDataFormat(device, f"{self._cmd_syntax}:FORMat")
        self._hivalue = TriggerABusUsbDataHivalue(device, f"{self._cmd_syntax}:HIVALue")
        self._offset = TriggerABusUsbDataOffset(device, f"{self._cmd_syntax}:OFFSet")
        self._size = TriggerABusUsbDataSize(device, f"{self._cmd_syntax}:SIZe")
        self._type = TriggerABusUsbDataType(device, f"{self._cmd_syntax}:TYPe")
        self._value = TriggerABusUsbDataValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusUsbDataFormat:
        """Return the ``TRIGger:A:BUS:USB:DATa:FORMat`` command.

        **Description:**
            - This command sets or queries the data format for the USB bus trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:FORMat?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:DATa:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:DATa:FORMat {BINary|HEXadecimal}
            - TRIGger:A:BUS:USB:DATa:FORMat?

        **Info:**
            - ``BINary`` specifies the data format for the USB bus trigger as Binary.
            - ``HEXadecimal`` specifies the data format for the USB bus trigger as Hexadecimal.
        """
        return self._format

    @property
    def hivalue(self) -> TriggerABusUsbDataHivalue:
        """Return the ``TRIGger:A:BUS:USB:DATa:HIVALue`` command.

        **Description:**
            - This command sets or queries data value for data token to be used with In Range and
              Out of Range qualifiers. The Trigger on Condition is set to Data Packet. The VALue and
              HIVALue set a range that the INrange and OUTrange qualifiers used to decide when to
              trigger. For example, if the QUALIFER is set to INrange, and the address is within the
              range set by VALue and HIVALue, then a trigger can be generated.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa:HIVALue?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:HIVALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:DATa:HIVALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:DATa:HIVALue <string>
            - TRIGger:A:BUS:USB:DATa:HIVALue?

        **Info:**
            - ``<string>`` specifies the data value in the specified valid format (binary, hex, or
              decimal).
        """
        return self._hivalue

    @property
    def offset(self) -> TriggerABusUsbDataOffset:
        """Return the ``TRIGger:A:BUS:USB:DATa:OFFSet`` command.

        **Description:**
            - This command sets or queries data offset for the USB bus trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa:OFFSet?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:OFFSet?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:DATa:OFFSet value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:DATa:OFFSet {<NR3>|DONTCare}
            - TRIGger:A:BUS:USB:DATa:OFFSet?

        **Info:**
            - ``<NR3>`` specifies the data offset in bytes.
            - ``DONTCare`` specifies the data offset as Don't Care.
        """
        return self._offset

    @property
    def size(self) -> TriggerABusUsbDataSize:
        """Return the ``TRIGger:A:BUS:USB:DATa:SIZe`` command.

        **Description:**
            - This command sets or queries the number of contiguous data bytes to USB bus trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa:SIZe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:SIZe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:SIZe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:DATa:SIZe <NR3>
            - TRIGger:A:BUS:USB:DATa:SIZe?

        **Info:**
            - ``<NR3>`` specifies the data size in bytes.
        """
        return self._size

    @property
    def type(self) -> TriggerABusUsbDataType:
        """Return the ``TRIGger:A:BUS:USB:DATa:TYPe`` command.

        **Description:**
            - This command sets or queries the data packet type when USB bus trigger condition is
              Data Packet.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa:TYPe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:TYPe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:TYPe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:DATa:TYPe {ANY|DATA<x>|MDATA}
            - TRIGger:A:BUS:USB:DATa:TYPe?

        **Info:**
            - ``ANY`` specifies the data packet type to ANY.
            - ``DATA0`` specifies the data packet type to DATA0.
            - ``DATA1`` specifies the data packet type to DATA1.
            - ``DATA2`` specifies the data packet type to DATA2.
            - ``MDATA`` specifies the data packet type to MDATA.
        """
        return self._type

    @property
    def value(self) -> TriggerABusUsbDataValue:
        """Return the ``TRIGger:A:BUS:USB:DATa:VALue`` command.

        **Description:**
            - This command sets or queries the USB bus trigger data value for data token.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa:VALue?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:DATa:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:DATa:VALue <string>
            - TRIGger:A:BUS:USB:DATa:VALue?

        **Info:**
            - ``<string>`` specifies the data value. The valid characters are 0, 1, or X
              representing a binary number.
        """
        return self._value


class TriggerABusUsbCondition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:CONDition`` command.

    **Description:**
        - This command sets or returns the condition for a USB trigger, where x is the Trigger on
          condition..

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:CONDition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:CONDition?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:CONDition value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:CONDition {DATAPacket|EOP|ERROR|HANDSHAKEPacket|RESET|RESUME| SPECIALPacket|SUSPEND|SYNC|TOKENPacket}
        - TRIGger:A:BUS:USB:CONDition?

    **Info:**
        - ``DATAPacket`` sets the Trigger on condition to Data Packet.
        - ``EOP`` sets the Trigger on condition to End of Packet.
        - ``ERROR`` sets the Trigger on condition to Error.
        - ``HANDSHAKEPacket`` sets the Trigger on condition to Handshake Packet.
        - ``RESET`` sets the Trigger on condition to Reset.
        - ``RESUME`` sets the Trigger on condition to Resume.
        - ``SPECIALPacket`` sets the Trigger on condition to Special Packet.
        - ``SUSPEND`` sets the Trigger on condition to Suspend.
        - ``SYNC`` sets the Trigger on condition to Sync.
        - ``TOKENPacket`` sets the Trigger on condition to Token (Address) Packet.
    """  # noqa: E501


class TriggerABusUsbCharacterSymbolPlus(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS`` command.

    **Description:**
        - Sets or queries the Character bit pattern (positive disparity view) when the Trigger
          Condition is set to Character.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS <string>
        - TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS?

    **Info:**
        - ``<string>`` is the character bit pattern.
    """


class TriggerABusUsbCharacterSymbolMinus(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus`` command.

    **Description:**
        - Sets or queries the character bit pattern (negative disparity) when the Trigger Condition
          is set to Character.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus <string>
        - TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus?
    """


class TriggerABusUsbCharacterSymbol(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:CHARacter:SYMbol`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:CHARacter:SYMbol?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:CHARacter:SYMbol?``
          query and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.minus``: The ``TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus`` command.
        - ``.plus``: The ``TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._minus = TriggerABusUsbCharacterSymbolMinus(device, f"{self._cmd_syntax}:MINus")
        self._plus = TriggerABusUsbCharacterSymbolPlus(device, f"{self._cmd_syntax}:PLUS")

    @property
    def minus(self) -> TriggerABusUsbCharacterSymbolMinus:
        """Return the ``TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus`` command.

        **Description:**
            - Sets or queries the character bit pattern (negative disparity) when the Trigger
              Condition is set to Character.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus <string>
            - TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus?
        """
        return self._minus

    @property
    def plus(self) -> TriggerABusUsbCharacterSymbolPlus:
        """Return the ``TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS`` command.

        **Description:**
            - Sets or queries the Character bit pattern (positive disparity view) when the Trigger
              Condition is set to Character.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS <string>
            - TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS?

        **Info:**
            - ``<string>`` is the character bit pattern.
        """
        return self._plus


class TriggerABusUsbCharacterChar(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:CHARacter:CHAR`` command.

    **Description:**
        - Sets or queries the USB character when the Trigger Condition is set to Character.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:CHARacter:CHAR?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:CHARacter:CHAR?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:CHARacter:CHAR value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:CHARacter:CHAR <string>
        - TRIGger:A:BUS:USB:CHARacter:CHAR?
    """


class TriggerABusUsbCharacter(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:CHARacter`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:CHARacter?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:CHARacter?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.char``: The ``TRIGger:A:BUS:USB:CHARacter:CHAR`` command.
        - ``.symbol``: The ``TRIGger:A:BUS:USB:CHARacter:SYMbol`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._char = TriggerABusUsbCharacterChar(device, f"{self._cmd_syntax}:CHAR")
        self._symbol = TriggerABusUsbCharacterSymbol(device, f"{self._cmd_syntax}:SYMbol")

    @property
    def char(self) -> TriggerABusUsbCharacterChar:
        """Return the ``TRIGger:A:BUS:USB:CHARacter:CHAR`` command.

        **Description:**
            - Sets or queries the USB character when the Trigger Condition is set to Character.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:CHARacter:CHAR?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:CHARacter:CHAR?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:CHARacter:CHAR value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:CHARacter:CHAR <string>
            - TRIGger:A:BUS:USB:CHARacter:CHAR?
        """
        return self._char

    @property
    def symbol(self) -> TriggerABusUsbCharacterSymbol:
        """Return the ``TRIGger:A:BUS:USB:CHARacter:SYMbol`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:CHARacter:SYMbol?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:CHARacter:SYMbol?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.minus``: The ``TRIGger:A:BUS:USB:CHARacter:SYMbol:MINus`` command.
            - ``.plus``: The ``TRIGger:A:BUS:USB:CHARacter:SYMbol:PLUS`` command.
        """
        return self._symbol


class TriggerABusUsbAddressValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:ADDress:VALue`` command.

    **Description:**
        - This command sets or queries the address value for normal token.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ADDress:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ADDress:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:ADDress:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:ADDress:VALue <string>
        - TRIGger:A:BUS:USB:ADDress:VALue?

    **Info:**
        - ``<string>`` specifies the data value in the specified valid format (binary, hex, or
          symbolic).
    """


class TriggerABusUsbAddressHivalue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:ADDress:HIVALue`` command.

    **Description:**
        - This command sets or queries the address value for normal token to be used with In Range
          and Out of Range qualifiers. The Trigger on Condition is set to Token (Address) Packet.
          The VALue and HIVALue set a range that the INrange and OUTrange qualifiers used to decide
          when to trigger. For example, if the QUALIFER is set to INrange, and the address is within
          the range set by VALue and HIVALue, then a trigger can be generated.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ADDress:HIVALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ADDress:HIVALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:ADDress:HIVALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:ADDress:HIVALue <string>
        - TRIGger:A:BUS:USB:ADDress:HIVALue?

    **Info:**
        - ``<string>`` specifies the data value in the specified valid format (binary, hex, or
          decimal).
    """


class TriggerABusUsbAddressFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:ADDress:FORMat`` command.

    **Description:**
        - This command sets or queries the address format for the USB bus trigger normal token.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ADDress:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ADDress:FORMat?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:USB:ADDress:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:USB:ADDress:FORMat {BINary|HEXadecimal|SYMBolic}
        - TRIGger:A:BUS:USB:ADDress:FORMat?

    **Info:**
        - ``BINary`` specifies the address format for the normal token as Binary.
        - ``HEXadecimal`` specifies the address format for the normal token as Hexadecimal.
        - ``SYMBolic`` specifies the address format for the normal token as Symbolic.
    """


class TriggerABusUsbAddress(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB:ADDress`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ADDress?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ADDress?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:USB:ADDress:FORMat`` command.
        - ``.hivalue``: The ``TRIGger:A:BUS:USB:ADDress:HIVALue`` command.
        - ``.value``: The ``TRIGger:A:BUS:USB:ADDress:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusUsbAddressFormat(device, f"{self._cmd_syntax}:FORMat")
        self._hivalue = TriggerABusUsbAddressHivalue(device, f"{self._cmd_syntax}:HIVALue")
        self._value = TriggerABusUsbAddressValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusUsbAddressFormat:
        """Return the ``TRIGger:A:BUS:USB:ADDress:FORMat`` command.

        **Description:**
            - This command sets or queries the address format for the USB bus trigger normal token.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ADDress:FORMat?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:ADDress:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:ADDress:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:ADDress:FORMat {BINary|HEXadecimal|SYMBolic}
            - TRIGger:A:BUS:USB:ADDress:FORMat?

        **Info:**
            - ``BINary`` specifies the address format for the normal token as Binary.
            - ``HEXadecimal`` specifies the address format for the normal token as Hexadecimal.
            - ``SYMBolic`` specifies the address format for the normal token as Symbolic.
        """
        return self._format

    @property
    def hivalue(self) -> TriggerABusUsbAddressHivalue:
        """Return the ``TRIGger:A:BUS:USB:ADDress:HIVALue`` command.

        **Description:**
            - This command sets or queries the address value for normal token to be used with In
              Range and Out of Range qualifiers. The Trigger on Condition is set to Token (Address)
              Packet. The VALue and HIVALue set a range that the INrange and OUTrange qualifiers
              used to decide when to trigger. For example, if the QUALIFER is set to INrange, and
              the address is within the range set by VALue and HIVALue, then a trigger can be
              generated.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ADDress:HIVALue?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:USB:ADDress:HIVALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:ADDress:HIVALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:ADDress:HIVALue <string>
            - TRIGger:A:BUS:USB:ADDress:HIVALue?

        **Info:**
            - ``<string>`` specifies the data value in the specified valid format (binary, hex, or
              decimal).
        """
        return self._hivalue

    @property
    def value(self) -> TriggerABusUsbAddressValue:
        """Return the ``TRIGger:A:BUS:USB:ADDress:VALue`` command.

        **Description:**
            - This command sets or queries the address value for normal token.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ADDress:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ADDress:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:ADDress:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:ADDress:VALue <string>
            - TRIGger:A:BUS:USB:ADDress:VALue?

        **Info:**
            - ``<string>`` specifies the data value in the specified valid format (binary, hex, or
              symbolic).
        """
        return self._value


#  pylint: disable=too-many-instance-attributes
class TriggerABusUsb(SCPICmdRead):
    """The ``TRIGger:A:BUS:USB`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB?`` query and raise
          an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.address``: The ``TRIGger:A:BUS:USB:ADDress`` command tree.
        - ``.character``: The ``TRIGger:A:BUS:USB:CHARacter`` command tree.
        - ``.condition``: The ``TRIGger:A:BUS:USB:CONDition`` command.
        - ``.data``: The ``TRIGger:A:BUS:USB:DATa`` command tree.
        - ``.disparity``: The ``TRIGger:A:BUS:USB:DISParity`` command.
        - ``.endpoint``: The ``TRIGger:A:BUS:USB:ENDPoint`` command tree.
        - ``.error``: The ``TRIGger:A:BUS:USB:ERROR`` command.
        - ``.errtype``: The ``TRIGger:A:BUS:USB:ERRTYPE`` command.
        - ``.format``: The ``TRIGger:A:BUS:USB:FORMat`` command.
        - ``.handshaketype``: The ``TRIGger:A:BUS:USB:HANDShaketype`` command.
        - ``.pattern``: The ``TRIGger:A:BUS:USB:PATtern`` command tree.
        - ``.qualifier``: The ``TRIGger:A:BUS:USB:QUAlifier`` command.
        - ``.sof``: The ``TRIGger:A:BUS:USB:SOF`` command tree.
        - ``.specialtype``: The ``TRIGger:A:BUS:USB:SPECIALType`` command.
        - ``.split``: The ``TRIGger:A:BUS:USB:SPLIT`` command tree.
        - ``.tokentype``: The ``TRIGger:A:BUS:USB:TOKENType`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._address = TriggerABusUsbAddress(device, f"{self._cmd_syntax}:ADDress")
        self._character = TriggerABusUsbCharacter(device, f"{self._cmd_syntax}:CHARacter")
        self._condition = TriggerABusUsbCondition(device, f"{self._cmd_syntax}:CONDition")
        self._data = TriggerABusUsbData(device, f"{self._cmd_syntax}:DATa")
        self._disparity = TriggerABusUsbDisparity(device, f"{self._cmd_syntax}:DISParity")
        self._endpoint = TriggerABusUsbEndpoint(device, f"{self._cmd_syntax}:ENDPoint")
        self._error = TriggerABusUsbError(device, f"{self._cmd_syntax}:ERROR")
        self._errtype = TriggerABusUsbErrtype(device, f"{self._cmd_syntax}:ERRTYPE")
        self._format = TriggerABusUsbFormat(device, f"{self._cmd_syntax}:FORMat")
        self._handshaketype = TriggerABusUsbHandshaketype(
            device, f"{self._cmd_syntax}:HANDShaketype"
        )
        self._pattern = TriggerABusUsbPattern(device, f"{self._cmd_syntax}:PATtern")
        self._qualifier = TriggerABusUsbQualifier(device, f"{self._cmd_syntax}:QUAlifier")
        self._sof = TriggerABusUsbSof(device, f"{self._cmd_syntax}:SOF")
        self._specialtype = TriggerABusUsbSpecialtype(device, f"{self._cmd_syntax}:SPECIALType")
        self._split = TriggerABusUsbSplit(device, f"{self._cmd_syntax}:SPLIT")
        self._tokentype = TriggerABusUsbTokentype(device, f"{self._cmd_syntax}:TOKENType")

    @property
    def address(self) -> TriggerABusUsbAddress:
        """Return the ``TRIGger:A:BUS:USB:ADDress`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ADDress?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ADDress?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:USB:ADDress:FORMat`` command.
            - ``.hivalue``: The ``TRIGger:A:BUS:USB:ADDress:HIVALue`` command.
            - ``.value``: The ``TRIGger:A:BUS:USB:ADDress:VALue`` command.
        """
        return self._address

    @property
    def character(self) -> TriggerABusUsbCharacter:
        """Return the ``TRIGger:A:BUS:USB:CHARacter`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:CHARacter?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:CHARacter?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.char``: The ``TRIGger:A:BUS:USB:CHARacter:CHAR`` command.
            - ``.symbol``: The ``TRIGger:A:BUS:USB:CHARacter:SYMbol`` command tree.
        """
        return self._character

    @property
    def condition(self) -> TriggerABusUsbCondition:
        """Return the ``TRIGger:A:BUS:USB:CONDition`` command.

        **Description:**
            - This command sets or returns the condition for a USB trigger, where x is the Trigger
              on condition..

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:CONDition?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:CONDition?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:CONDition value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:CONDition {DATAPacket|EOP|ERROR|HANDSHAKEPacket|RESET|RESUME| SPECIALPacket|SUSPEND|SYNC|TOKENPacket}
            - TRIGger:A:BUS:USB:CONDition?

        **Info:**
            - ``DATAPacket`` sets the Trigger on condition to Data Packet.
            - ``EOP`` sets the Trigger on condition to End of Packet.
            - ``ERROR`` sets the Trigger on condition to Error.
            - ``HANDSHAKEPacket`` sets the Trigger on condition to Handshake Packet.
            - ``RESET`` sets the Trigger on condition to Reset.
            - ``RESUME`` sets the Trigger on condition to Resume.
            - ``SPECIALPacket`` sets the Trigger on condition to Special Packet.
            - ``SUSPEND`` sets the Trigger on condition to Suspend.
            - ``SYNC`` sets the Trigger on condition to Sync.
            - ``TOKENPacket`` sets the Trigger on condition to Token (Address) Packet.
        """  # noqa: E501
        return self._condition

    @property
    def data(self) -> TriggerABusUsbData:
        """Return the ``TRIGger:A:BUS:USB:DATa`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DATa?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:USB:DATa:FORMat`` command.
            - ``.hivalue``: The ``TRIGger:A:BUS:USB:DATa:HIVALue`` command.
            - ``.offset``: The ``TRIGger:A:BUS:USB:DATa:OFFSet`` command.
            - ``.size``: The ``TRIGger:A:BUS:USB:DATa:SIZe`` command.
            - ``.type``: The ``TRIGger:A:BUS:USB:DATa:TYPe`` command.
            - ``.value``: The ``TRIGger:A:BUS:USB:DATa:VALue`` command.
        """
        return self._data

    @property
    def disparity(self) -> TriggerABusUsbDisparity:
        """Return the ``TRIGger:A:BUS:USB:DISParity`` command.

        **Description:**
            - Sets or queries the type of disparity that the bus will trigger on.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:DISParity?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:DISParity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:DISParity value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:DISParity {NEGAtive|POSITIVe|EITher}
            - TRIGger:A:BUS:USB:DISParity?

        **Info:**
            - ``NEGative`` specifies negative disparity.
            - ``POSITIVe`` specifies positive disparity.
            - ``EITher`` specifies either disparity.
        """
        return self._disparity

    @property
    def endpoint(self) -> TriggerABusUsbEndpoint:
        """Return the ``TRIGger:A:BUS:USB:ENDPoint`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ENDPoint?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ENDPoint?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:USB:ENDPoint:FORMat`` command.
            - ``.hivalue``: The ``TRIGger:A:BUS:USB:ENDPoint:HIVALue`` command.
            - ``.value``: The ``TRIGger:A:BUS:USB:ENDPoint:VALue`` command.
        """
        return self._endpoint

    @property
    def error(self) -> TriggerABusUsbError:
        """Return the ``TRIGger:A:BUS:USB:ERROR`` command.

        **Description:**
            - Sets or queries whether the oscilloscope will trigger on a character error or a
              disparity error.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ERROR?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ERROR?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:ERROR value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:ERROR {CHARacter|DISParity}
            - TRIGger:A:BUS:USB:ERROR?

        **Info:**
            - ``CHARACTER`` sets the oscilloscope to trigger on a character error.
            - ``DISPARITY`` sets the oscilloscope to trigger on a disparity error.
        """
        return self._error

    @property
    def errtype(self) -> TriggerABusUsbErrtype:
        """Return the ``TRIGger:A:BUS:USB:ERRTYPE`` command.

        **Description:**
            - This command sets or queries the error type when USB bus trigger on condition is set
              to Error.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:ERRTYPE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:ERRTYPE?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:ERRTYPE value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:ERRTYPE {BITSTUFFing|CRC5|CRC16|PID}
            - TRIGger:A:BUS:USB:ERRTYPE?

        **Info:**
            - ``BITSTUFFing`` specifies the error type Bit Stuffing .
            - ``CRC5`` specifies the error type as Token CRC5 (Cyclic Redundancy Check 5).
            - ``CRC16`` specifies the error type as Data CRC16 (Cyclic Redundancy Check 16).
            - ``PID`` specifies the error type as PID Check Bits.
        """
        return self._errtype

    @property
    def format(self) -> TriggerABusUsbFormat:
        """Return the ``TRIGger:A:BUS:USB:FORMat`` command.

        **Description:**
            - Sets or queries the pattern editing format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:FORMat?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:FORMat value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:FORMat {CHAR|SYMbol}
            - TRIGger:A:BUS:USB:FORMat?

        **Info:**
            - ``CHAR`` indicates that the pattern editing format is set to character.
            - ``SYMBOL`` indicates that the pattern editing format is set to symbol.
        """
        return self._format

    @property
    def handshaketype(self) -> TriggerABusUsbHandshaketype:
        """Return the ``TRIGger:A:BUS:USB:HANDShaketype`` command.

        **Description:**
            - This command sets or queries the handshake type when USB bus trigger on condition is
              set to Handshake Packet.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:HANDShaketype?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:HANDShaketype?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:HANDShaketype value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:HANDShaketype {ACK|ANY|NAK|NYET|STALL}
            - TRIGger:A:BUS:USB:HANDShaketype?

        **Info:**
            - ``ACK`` specifies the handshake type as Acknowledge (XX10).
            - ``ANY`` specifies the handshake type as Any (0010).
            - ``NAK`` specifies the handshake type as Negative Acknowledge (1010).
            - ``NYET`` specifies the handshake type as No response Yet (0110).
            - ``STALL`` specifies the handshake type as Stall (1110).
        """
        return self._handshaketype

    @property
    def pattern(self) -> TriggerABusUsbPattern:
        """Return the ``TRIGger:A:BUS:USB:PATtern`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:PATtern?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:PATtern?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.char``: The ``TRIGger:A:BUS:USB:PATtern:CHAR<x>`` command.
            - ``.numsymbols``: The ``TRIGger:A:BUS:USB:PATtern:NUMSymbols`` command.
            - ``.orderedset``: The ``TRIGger:A:BUS:USB:PATtern:ORDERedset`` command.
            - ``.symbol``: The ``TRIGger:A:BUS:USB:PATtern:SYMbol`` command tree.
        """
        return self._pattern

    @property
    def qualifier(self) -> TriggerABusUsbQualifier:
        """Return the ``TRIGger:A:BUS:USB:QUAlifier`` command.

        **Description:**
            - This command sets or queries the USB bus trigger qualifier for address, endpoint, and
              data.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:QUAlifier?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:QUAlifier?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:QUAlifier value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:QUAlifier {EQUal|INrange|LESSEQual|MOREEQual|OUTrange|UNEQual| LESSThan|MOREThan}
            - TRIGger:A:BUS:USB:QUAlifier?

        **Info:**
            - ``EQUal`` specifies = trigger qualifier.
            - ``INrange`` specifies Inside Range trigger qualifier.
            - ``LESSEQual`` specifies <= trigger qualifier.
            - ``MOREEQual`` specifies >= trigger qualifier.
            - ``OUTrange`` specifies = trigger qualifier.
            - ``UNEQual`` specifies != trigger qualifier.
            - ``LESSThan`` specifies < trigger qualifier.
            - ``MOREThan`` specifies > trigger qualifier.
        """  # noqa: E501
        return self._qualifier

    @property
    def sof(self) -> TriggerABusUsbSof:
        """Return the ``TRIGger:A:BUS:USB:SOF`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SOF?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SOF?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:USB:SOF:FORMat`` command.
            - ``.framenumber``: The ``TRIGger:A:BUS:USB:SOF:FRAMENUMber`` command.
        """
        return self._sof

    @property
    def specialtype(self) -> TriggerABusUsbSpecialtype:
        """Return the ``TRIGger:A:BUS:USB:SPECIALType`` command.

        **Description:**
            - This command sets or queries the PID value when USB bus Trigger on condition is set to
              Special Packet.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPECIALType?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPECIALType?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:USB:SPECIALType value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:SPECIALType {ANY|ERR|PING|PRE|RESERVED|SPLIT}
            - TRIGger:A:BUS:USB:SPECIALType?

        **Info:**
            - ``ANY`` specifies Any (XX00) PID value.
            - ``ERR`` specifies ERR (1100) PID value.
            - ``PING`` specifies PING (0100) PID value.
            - ``PRE`` specifies PRE (1100) PID value.
            - ``RESERVED`` specifies Reserved (0000) PID value.
            - ``SPLIT`` specifies Split (1000) PID value.
        """
        return self._specialtype

    @property
    def split(self) -> TriggerABusUsbSplit:
        """Return the ``TRIGger:A:BUS:USB:SPLIT`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:SPLIT?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:SPLIT?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.et``: The ``TRIGger:A:BUS:USB:SPLIT:ET`` command tree.
            - ``.hub``: The ``TRIGger:A:BUS:USB:SPLIT:HUB`` command tree.
            - ``.port``: The ``TRIGger:A:BUS:USB:SPLIT:PORT`` command tree.
            - ``.sc``: The ``TRIGger:A:BUS:USB:SPLIT:SC`` command tree.
            - ``.se``: The ``TRIGger:A:BUS:USB:SPLIT:SE`` command tree.
        """
        return self._split

    @property
    def tokentype(self) -> TriggerABusUsbTokentype:
        """Return the ``TRIGger:A:BUS:USB:TOKENType`` command.

        **Description:**
            - This command sets or queries the Token Type when USB Trigger condition is set to Token
              (Address) Packet.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB:TOKENType?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB:TOKENType?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:USB:TOKENType value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:USB:TOKENType {ANY|IN|OUT|SOF|SETUP}
            - TRIGger:A:BUS:USB:TOKENType?

        **Info:**
            - ``ANY`` specifies ANY (XX01) token type.
            - ``IN`` specifies IN (1001) token type.
            - ``OUT`` specifies OUT (0001) token type.
            - ``SOF`` specifies SOF (0101) token type.
            - ``SETUP`` specifies SETUP (1101) token type.
        """
        return self._tokentype


class TriggerABusSpiDataValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:SPI:DATa:VALue`` command.

    **Description:**
        - This command sets or queries the data value of the data token for an SPI trigger when the
          trigger condition is Data.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SPI:DATa:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SPI:DATa:VALue?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:SPI:DATa:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:SPI:DATa:VALue <string>
        - TRIGger:A:BUS:SPI:DATa:VALue?

    **Info:**
        - ``<string>`` specifies the data value in the specified valid format. The valid characters
          are 0-9, A-F, and X for hexadecimal format; and 0, 1, and X for a binary number.
    """


class TriggerABusSpiDataSize(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:SPI:DATa:SIZe`` command.

    **Description:**
        - This command sets or queries the length of the data string in bytes to be used for an SPI
          trigger when the trigger condition is Data.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SPI:DATa:SIZe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SPI:DATa:SIZe?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:SPI:DATa:SIZe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:SPI:DATa:SIZe <NR3>
        - TRIGger:A:BUS:SPI:DATa:SIZe?

    **Info:**
        - ``<NR3>`` specifies the number of contiguous data bytes to trigger on.
    """


class TriggerABusSpiDataFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:SPI:DATa:FORMat`` command.

    **Description:**
        - This command sets or queries the format of the data to be used for an SPI trigger when the
          trigger condition is Data.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SPI:DATa:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SPI:DATa:FORMat?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:SPI:DATa:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:SPI:DATa:FORMat {BINary|HEXadecimal}
        - TRIGger:A:BUS:SPI:DATa:FORMat?

    **Info:**
        - ``BINary`` specifies binary as the data format for the SPI bus.
        - ``HEXadecimal`` specifies hexadecimal as the data format for the SPI bus.
    """


class TriggerABusSpiData(SCPICmdRead):
    """The ``TRIGger:A:BUS:SPI:DATa`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SPI:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SPI:DATa?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:SPI:DATa:FORMat`` command.
        - ``.size``: The ``TRIGger:A:BUS:SPI:DATa:SIZe`` command.
        - ``.value``: The ``TRIGger:A:BUS:SPI:DATa:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusSpiDataFormat(device, f"{self._cmd_syntax}:FORMat")
        self._size = TriggerABusSpiDataSize(device, f"{self._cmd_syntax}:SIZe")
        self._value = TriggerABusSpiDataValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusSpiDataFormat:
        """Return the ``TRIGger:A:BUS:SPI:DATa:FORMat`` command.

        **Description:**
            - This command sets or queries the format of the data to be used for an SPI trigger when
              the trigger condition is Data.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SPI:DATa:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SPI:DATa:FORMat?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:SPI:DATa:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:SPI:DATa:FORMat {BINary|HEXadecimal}
            - TRIGger:A:BUS:SPI:DATa:FORMat?

        **Info:**
            - ``BINary`` specifies binary as the data format for the SPI bus.
            - ``HEXadecimal`` specifies hexadecimal as the data format for the SPI bus.
        """
        return self._format

    @property
    def size(self) -> TriggerABusSpiDataSize:
        """Return the ``TRIGger:A:BUS:SPI:DATa:SIZe`` command.

        **Description:**
            - This command sets or queries the length of the data string in bytes to be used for an
              SPI trigger when the trigger condition is Data.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SPI:DATa:SIZe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SPI:DATa:SIZe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:SPI:DATa:SIZe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:SPI:DATa:SIZe <NR3>
            - TRIGger:A:BUS:SPI:DATa:SIZe?

        **Info:**
            - ``<NR3>`` specifies the number of contiguous data bytes to trigger on.
        """
        return self._size

    @property
    def value(self) -> TriggerABusSpiDataValue:
        """Return the ``TRIGger:A:BUS:SPI:DATa:VALue`` command.

        **Description:**
            - This command sets or queries the data value of the data token for an SPI trigger when
              the trigger condition is Data.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SPI:DATa:VALue?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SPI:DATa:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:SPI:DATa:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:SPI:DATa:VALue <string>
            - TRIGger:A:BUS:SPI:DATa:VALue?

        **Info:**
            - ``<string>`` specifies the data value in the specified valid format. The valid
              characters are 0-9, A-F, and X for hexadecimal format; and 0, 1, and X for a binary
              number.
        """
        return self._value


class TriggerABusSpiCondition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:SPI:CONDition`` command.

    **Description:**
        - This command sets or queries the trigger condition for the SPI bus.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SPI:CONDition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SPI:CONDition?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:SPI:CONDition value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:SPI:CONDition {DATA|SS}
        - TRIGger:A:BUS:SPI:CONDition?

    **Info:**
        - ``DATA`` sets the trigger condition to Master-In Slave-Out and Master-Out Slave-In.
        - ``SS`` sets the trigger condition to Slave selection.
    """


class TriggerABusSpi(SCPICmdRead):
    """The ``TRIGger:A:BUS:SPI`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SPI?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SPI?`` query and raise
          an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.condition``: The ``TRIGger:A:BUS:SPI:CONDition`` command.
        - ``.data``: The ``TRIGger:A:BUS:SPI:DATa`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._condition = TriggerABusSpiCondition(device, f"{self._cmd_syntax}:CONDition")
        self._data = TriggerABusSpiData(device, f"{self._cmd_syntax}:DATa")

    @property
    def condition(self) -> TriggerABusSpiCondition:
        """Return the ``TRIGger:A:BUS:SPI:CONDition`` command.

        **Description:**
            - This command sets or queries the trigger condition for the SPI bus.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SPI:CONDition?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SPI:CONDition?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:SPI:CONDition value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:SPI:CONDition {DATA|SS}
            - TRIGger:A:BUS:SPI:CONDition?

        **Info:**
            - ``DATA`` sets the trigger condition to Master-In Slave-Out and Master-Out Slave-In.
            - ``SS`` sets the trigger condition to Slave selection.
        """
        return self._condition

    @property
    def data(self) -> TriggerABusSpiData:
        """Return the ``TRIGger:A:BUS:SPI:DATa`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SPI:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SPI:DATa?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:SPI:DATa:FORMat`` command.
            - ``.size``: The ``TRIGger:A:BUS:SPI:DATa:SIZe`` command.
            - ``.value``: The ``TRIGger:A:BUS:SPI:DATa:VALue`` command.
        """
        return self._data


class TriggerABusSource(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:SOUrce`` command.

    **Description:**
        - This command sets or returns the source for a bus trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SOUrce?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SOUrce?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:SOUrce value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:SOUrce {B1|B2|B3|B4|B5|B6|B7|B8|B9|B10|B11|B12| B13|B14|B15|B16}
        - TRIGger:A:BUS:SOUrce?

    **Info:**
        - ``B<x>`` sets the selected source to the bus. x has a minimum of 1 and a maximum of 16.
    """


class TriggerABusS8b10bPatternSymbolPlusItem(ValidatedDynamicNumberCmd, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x>`` command.

    **Description:**
        - Sets or queries the specified 8B10B character bit pattern (positive disparity) when the
          Trigger Condition is set to Pattern.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x>?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x> <string>
        - TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x>?

    **Info:**
        - ``<string>`` is the character bit pattern.
    """


class TriggerABusS8b10bPatternSymbolMinusItem(ValidatedDynamicNumberCmd, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x>`` command.

    **Description:**
        - Sets or queries the specified 8B10B character bit pattern (negative disparity) when the
          Trigger Condition is set to Pattern.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x>?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x> <string>
        - TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x>?

    **Info:**
        - ``<string>`` is the character bit pattern.
    """


class TriggerABusS8b10bPatternSymbol(SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol?``
          query and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.minus``: The ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x>`` command.
        - ``.plus``: The ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._minus: Dict[
            int, TriggerABusS8b10bPatternSymbolMinusItem
        ] = DefaultDictPassKeyToFactory(
            lambda x: TriggerABusS8b10bPatternSymbolMinusItem(
                device, f"{self._cmd_syntax}:MINus{x}"
            )
        )
        self._plus: Dict[int, TriggerABusS8b10bPatternSymbolPlusItem] = DefaultDictPassKeyToFactory(
            lambda x: TriggerABusS8b10bPatternSymbolPlusItem(device, f"{self._cmd_syntax}:PLUS{x}")
        )

    @property
    def minus(self) -> Dict[int, TriggerABusS8b10bPatternSymbolMinusItem]:
        """Return the ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x>`` command.

        **Description:**
            - Sets or queries the specified 8B10B character bit pattern (negative disparity) when
              the Trigger Condition is set to Pattern.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x>?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x> <string>
            - TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x>?

        **Info:**
            - ``<string>`` is the character bit pattern.
        """
        return self._minus

    @property
    def plus(self) -> Dict[int, TriggerABusS8b10bPatternSymbolPlusItem]:
        """Return the ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x>`` command.

        **Description:**
            - Sets or queries the specified 8B10B character bit pattern (positive disparity) when
              the Trigger Condition is set to Pattern.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x>?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x> <string>
            - TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x>?

        **Info:**
            - ``<string>`` is the character bit pattern.
        """
        return self._plus


class TriggerABusS8b10bPatternCharItem(ValidatedDynamicNumberCmd, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:PATtern:CHAR<x>`` command.

    **Description:**
        - Sets or queries the specified 8B10B character when the Trigger Condition is set to
          Pattern.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:PATtern:CHAR<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S8B10B:PATtern:CHAR<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S8B10B:PATtern:CHAR<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S8B10B:PATtern:CHAR<x> <string>
        - TRIGger:A:BUS:S8B10B:PATtern:CHAR<x>?

    **Info:**
        - ``<string>`` is the character.
    """


class TriggerABusS8b10bPattern(SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:PATtern`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:PATtern?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:PATtern?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.char``: The ``TRIGger:A:BUS:S8B10B:PATtern:CHAR<x>`` command.
        - ``.symbol``: The ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._char: Dict[int, TriggerABusS8b10bPatternCharItem] = DefaultDictPassKeyToFactory(
            lambda x: TriggerABusS8b10bPatternCharItem(device, f"{self._cmd_syntax}:CHAR{x}")
        )
        self._symbol = TriggerABusS8b10bPatternSymbol(device, f"{self._cmd_syntax}:SYMbol")

    @property
    def char(self) -> Dict[int, TriggerABusS8b10bPatternCharItem]:
        """Return the ``TRIGger:A:BUS:S8B10B:PATtern:CHAR<x>`` command.

        **Description:**
            - Sets or queries the specified 8B10B character when the Trigger Condition is set to
              Pattern.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:PATtern:CHAR<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:PATtern:CHAR<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:PATtern:CHAR<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S8B10B:PATtern:CHAR<x> <string>
            - TRIGger:A:BUS:S8B10B:PATtern:CHAR<x>?

        **Info:**
            - ``<string>`` is the character.
        """
        return self._char

    @property
    def symbol(self) -> TriggerABusS8b10bPatternSymbol:
        """Return the ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.minus``: The ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:MINus<x>`` command.
            - ``.plus``: The ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol:PLUS<x>`` command.
        """
        return self._symbol


class TriggerABusS8b10bFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:FORMat`` command.

    **Description:**
        - Sets or queries the pattern editing format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:FORMat?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:S8B10B:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S8B10B:FORMat {CHAR|SYMbol}
        - TRIGger:A:BUS:S8B10B:FORMat?

    **Info:**
        - ``CHAR`` indicates that the pattern editing format is set to character.
        - ``SYMBOL`` indicates that the pattern editing format is set to symbol.
    """


class TriggerABusS8b10bError(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:ERROR`` command.

    **Description:**
        - Sets or queries whether the oscilloscope will trigger on a character error or a disparity
          error.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:ERROR?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:ERROR?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:S8B10B:ERROR value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S8B10B:ERROR {CHARacter|DISParity}
        - TRIGger:A:BUS:S8B10B:ERROR?

    **Info:**
        - ``CHARACTER`` sets the oscilloscope to trigger on a character error.
        - ``DISPARITY`` sets the oscilloscope to trigger on a disparity error.
    """


class TriggerABusS8b10bDisparity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:DISParity`` command.

    **Description:**
        - Sets or queries the type of disparity that the 8B10B bus will trigger on.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:DISParity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:DISParity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:S8B10B:DISParity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S8B10B:DISParity {NEGAtive|POSITIVe|EITher}
        - TRIGger:A:BUS:S8B10B:DISParity?

    **Info:**
        - ``NEGative`` specifies negative disparity.
        - ``POSITIVe`` specifies positive disparity.
        - ``EITher`` specifies either disparity.
    """


class TriggerABusS8b10bCondition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:CONDition`` command.

    **Description:**
        - Sets or queries the trigger condition for the 8B10B bus.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:CONDition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:CONDition?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:S8B10B:CONDition value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S8B10B:CONDition {ANYControl|CHARacter|ERROR|PATtern}
        - TRIGger:A:BUS:S8B10B:CONDition?

    **Info:**
        - ``ANYControl``
        - ``CHARacter``
        - ``ERROR``
        - ``PATtern``
    """


class TriggerABusS8b10bCharacterSymbolPlus(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS`` command.

    **Description:**
        - Sets or queries the Character bit pattern (positive disparity view) when the Trigger
          Condition is set to Character.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS <string>
        - TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS?

    **Info:**
        - ``<string>`` is the 8B10B character bit pattern.
    """


class TriggerABusS8b10bCharacterSymbolMinus(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus`` command.

    **Description:**
        - Sets or queries the 8B10B character bit pattern (negative disparity) when the Trigger
          Condition is set to Character.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus <string>
        - TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus?

    **Info:**
        - ``<string>`` is the 8B10B character bit pattern.
    """


class TriggerABusS8b10bCharacterSymbol(SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    Properties:
        - ``.minus``: The ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus`` command.
        - ``.plus``: The ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._minus = TriggerABusS8b10bCharacterSymbolMinus(device, f"{self._cmd_syntax}:MINus")
        self._plus = TriggerABusS8b10bCharacterSymbolPlus(device, f"{self._cmd_syntax}:PLUS")

    @property
    def minus(self) -> TriggerABusS8b10bCharacterSymbolMinus:
        """Return the ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus`` command.

        **Description:**
            - Sets or queries the 8B10B character bit pattern (negative disparity) when the Trigger
              Condition is set to Character.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus <string>
            - TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus?

        **Info:**
            - ``<string>`` is the 8B10B character bit pattern.
        """
        return self._minus

    @property
    def plus(self) -> TriggerABusS8b10bCharacterSymbolPlus:
        """Return the ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS`` command.

        **Description:**
            - Sets or queries the Character bit pattern (positive disparity view) when the Trigger
              Condition is set to Character.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS <string>
            - TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS?

        **Info:**
            - ``<string>`` is the 8B10B character bit pattern.
        """
        return self._plus


class TriggerABusS8b10bCharacterChar(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:CHARacter:CHAR`` command.

    **Description:**
        - Sets or queries the 8B10B character when the Trigger Condition is set to Character.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:CHARacter:CHAR?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:CHARacter:CHAR?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S8B10B:CHARacter:CHAR value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S8B10B:CHARacter:CHAR <string>
        - TRIGger:A:BUS:S8B10B:CHARacter:CHAR?

    **Info:**
        - ``<string>`` is the 8B10B character.
    """


class TriggerABusS8b10bCharacter(SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B:CHARacter`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:CHARacter?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:CHARacter?``
          query and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.char``: The ``TRIGger:A:BUS:S8B10B:CHARacter:CHAR`` command.
        - ``.symbol``: The ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._char = TriggerABusS8b10bCharacterChar(device, f"{self._cmd_syntax}:CHAR")
        self._symbol = TriggerABusS8b10bCharacterSymbol(device, f"{self._cmd_syntax}:SYMbol")

    @property
    def char(self) -> TriggerABusS8b10bCharacterChar:
        """Return the ``TRIGger:A:BUS:S8B10B:CHARacter:CHAR`` command.

        **Description:**
            - Sets or queries the 8B10B character when the Trigger Condition is set to Character.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:CHARacter:CHAR?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:CHARacter:CHAR?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:CHARacter:CHAR value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S8B10B:CHARacter:CHAR <string>
            - TRIGger:A:BUS:S8B10B:CHARacter:CHAR?

        **Info:**
            - ``<string>`` is the 8B10B character.
        """
        return self._char

    @property
    def symbol(self) -> TriggerABusS8b10bCharacterSymbol:
        """Return the ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.minus``: The ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:MINus`` command.
            - ``.plus``: The ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol:PLUS`` command.
        """
        return self._symbol


class TriggerABusS8b10b(SCPICmdRead):
    """The ``TRIGger:A:BUS:S8B10B`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.character``: The ``TRIGger:A:BUS:S8B10B:CHARacter`` command tree.
        - ``.condition``: The ``TRIGger:A:BUS:S8B10B:CONDition`` command.
        - ``.disparity``: The ``TRIGger:A:BUS:S8B10B:DISParity`` command.
        - ``.error``: The ``TRIGger:A:BUS:S8B10B:ERROR`` command.
        - ``.format``: The ``TRIGger:A:BUS:S8B10B:FORMat`` command.
        - ``.pattern``: The ``TRIGger:A:BUS:S8B10B:PATtern`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._character = TriggerABusS8b10bCharacter(device, f"{self._cmd_syntax}:CHARacter")
        self._condition = TriggerABusS8b10bCondition(device, f"{self._cmd_syntax}:CONDition")
        self._disparity = TriggerABusS8b10bDisparity(device, f"{self._cmd_syntax}:DISParity")
        self._error = TriggerABusS8b10bError(device, f"{self._cmd_syntax}:ERROR")
        self._format = TriggerABusS8b10bFormat(device, f"{self._cmd_syntax}:FORMat")
        self._pattern = TriggerABusS8b10bPattern(device, f"{self._cmd_syntax}:PATtern")

    @property
    def character(self) -> TriggerABusS8b10bCharacter:
        """Return the ``TRIGger:A:BUS:S8B10B:CHARacter`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:CHARacter?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:CHARacter?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.char``: The ``TRIGger:A:BUS:S8B10B:CHARacter:CHAR`` command.
            - ``.symbol``: The ``TRIGger:A:BUS:S8B10B:CHARacter:SYMbol`` command tree.
        """
        return self._character

    @property
    def condition(self) -> TriggerABusS8b10bCondition:
        """Return the ``TRIGger:A:BUS:S8B10B:CONDition`` command.

        **Description:**
            - Sets or queries the trigger condition for the 8B10B bus.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:CONDition?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:CONDition?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:CONDition value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S8B10B:CONDition {ANYControl|CHARacter|ERROR|PATtern}
            - TRIGger:A:BUS:S8B10B:CONDition?

        **Info:**
            - ``ANYControl``
            - ``CHARacter``
            - ``ERROR``
            - ``PATtern``
        """
        return self._condition

    @property
    def disparity(self) -> TriggerABusS8b10bDisparity:
        """Return the ``TRIGger:A:BUS:S8B10B:DISParity`` command.

        **Description:**
            - Sets or queries the type of disparity that the 8B10B bus will trigger on.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:DISParity?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:DISParity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S8B10B:DISParity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S8B10B:DISParity {NEGAtive|POSITIVe|EITher}
            - TRIGger:A:BUS:S8B10B:DISParity?

        **Info:**
            - ``NEGative`` specifies negative disparity.
            - ``POSITIVe`` specifies positive disparity.
            - ``EITher`` specifies either disparity.
        """
        return self._disparity

    @property
    def error(self) -> TriggerABusS8b10bError:
        """Return the ``TRIGger:A:BUS:S8B10B:ERROR`` command.

        **Description:**
            - Sets or queries whether the oscilloscope will trigger on a character error or a
              disparity error.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:ERROR?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:ERROR?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:S8B10B:ERROR value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S8B10B:ERROR {CHARacter|DISParity}
            - TRIGger:A:BUS:S8B10B:ERROR?

        **Info:**
            - ``CHARACTER`` sets the oscilloscope to trigger on a character error.
            - ``DISPARITY`` sets the oscilloscope to trigger on a disparity error.
        """
        return self._error

    @property
    def format(self) -> TriggerABusS8b10bFormat:
        """Return the ``TRIGger:A:BUS:S8B10B:FORMat`` command.

        **Description:**
            - Sets or queries the pattern editing format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:FORMat?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:S8B10B:FORMat value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S8B10B:FORMat {CHAR|SYMbol}
            - TRIGger:A:BUS:S8B10B:FORMat?

        **Info:**
            - ``CHAR`` indicates that the pattern editing format is set to character.
            - ``SYMBOL`` indicates that the pattern editing format is set to symbol.
        """
        return self._format

    @property
    def pattern(self) -> TriggerABusS8b10bPattern:
        """Return the ``TRIGger:A:BUS:S8B10B:PATtern`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B:PATtern?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B:PATtern?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.char``: The ``TRIGger:A:BUS:S8B10B:PATtern:CHAR<x>`` command.
            - ``.symbol``: The ``TRIGger:A:BUS:S8B10B:PATtern:SYMbol`` command tree.
        """
        return self._pattern


class TriggerABusS64b66bCondition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:CONDition`` command.

    **Description:**
        - Set or query the S64S66B block trigger is set to 'Block' (single block) or 'Block1Then2'
          (block1 pattern followed by a block2 pattern).

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S64B66B:CONDition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S64B66B:CONDition?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:S64B66B:CONDition value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S64B66B:CONDition { BLOCK | BLOCK1THEN2 }
        - TRIGger:A:BUS:S64B66B:CONDition?

    **Info:**
        - ``BLOCK`` sets a single block trigger.
        - ``BLOCK1THEN2`` sets the block1 pattern followed by the block2 pattern.
    """


class TriggerABusS64b66bBlockonethentwoPatterntwoValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue`` command.

    **Description:**
        - Set or query the pattern format for the block2 pattern.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue <string>
        - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue?

    **Info:**
        - ``<string>`` is 64 bits wide.
    """


class TriggerABusS64b66bBlockonethentwoPatterntwoSync(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC`` command.

    **Description:**
        - Set or query the sync value of block2.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC <string>
        - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC?

    **Info:**
        - ``<string>`` is two bits wide.
    """


class TriggerABusS64b66bBlockonethentwoPatterntwo(SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo?`` query and raise an AssertionError if
          the returned value does not match ``value``.

    Properties:
        - ``.sync``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC`` command.
        - ``.value``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._sync = TriggerABusS64b66bBlockonethentwoPatterntwoSync(
            device, f"{self._cmd_syntax}:SYNC"
        )
        self._value = TriggerABusS64b66bBlockonethentwoPatterntwoValue(
            device, f"{self._cmd_syntax}:VALue"
        )

    @property
    def sync(self) -> TriggerABusS64b66bBlockonethentwoPatterntwoSync:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC`` command.

        **Description:**
            - Set or query the sync value of block2.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC?`` query and raise an
              AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC <string>
            - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC?

        **Info:**
            - ``<string>`` is two bits wide.
        """
        return self._sync

    @property
    def value(self) -> TriggerABusS64b66bBlockonethentwoPatterntwoValue:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue`` command.

        **Description:**
            - Set or query the pattern format for the block2 pattern.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue?`` query and raise an
              AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue <string>
            - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue?

        **Info:**
            - ``<string>`` is 64 bits wide.
        """
        return self._value


class TriggerABusS64b66bBlockonethentwoPatternoneValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue`` command.

    **Description:**
        - Set or query the pattern format for the block1 pattern.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue <string>
        - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue?

    **Info:**
        - ``<string>`` is 64 bits wide.
    """


class TriggerABusS64b66bBlockonethentwoPatternoneSync(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC`` command.

    **Description:**
        - Set or query the sync value of block1.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC <string>
        - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC?

    **Info:**
        - ``<string>`` is two bits wide.
    """


class TriggerABusS64b66bBlockonethentwoPatternone(SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne?`` query and raise an AssertionError if
          the returned value does not match ``value``.

    Properties:
        - ``.sync``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC`` command.
        - ``.value``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._sync = TriggerABusS64b66bBlockonethentwoPatternoneSync(
            device, f"{self._cmd_syntax}:SYNC"
        )
        self._value = TriggerABusS64b66bBlockonethentwoPatternoneValue(
            device, f"{self._cmd_syntax}:VALue"
        )

    @property
    def sync(self) -> TriggerABusS64b66bBlockonethentwoPatternoneSync:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC`` command.

        **Description:**
            - Set or query the sync value of block1.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC?`` query and raise an
              AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC <string>
            - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC?

        **Info:**
            - ``<string>`` is two bits wide.
        """
        return self._sync

    @property
    def value(self) -> TriggerABusS64b66bBlockonethentwoPatternoneValue:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue`` command.

        **Description:**
            - Set or query the pattern format for the block1 pattern.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue?`` query and raise an
              AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue <string>
            - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue?

        **Info:**
            - ``<string>`` is 64 bits wide.
        """
        return self._value


class TriggerABusS64b66bBlockonethentwoFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat`` command.

    **Description:**
        - Set or query the pattern format of Block1Then2 (block1 pattern followed by block2
          pattern).

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat { Binary | HEX }
        - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat?

    **Info:**
        - ``Binary`` indicates the binary pattern format.
        - ``HEX`` indicates the hex pattern format.
    """


class TriggerABusS64b66bBlockonethentwo(SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat`` command.
        - ``.patternone``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne`` command tree.
        - ``.patterntwo``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusS64b66bBlockonethentwoFormat(device, f"{self._cmd_syntax}:FORMat")
        self._patternone = TriggerABusS64b66bBlockonethentwoPatternone(
            device, f"{self._cmd_syntax}:PATTERNOne"
        )
        self._patterntwo = TriggerABusS64b66bBlockonethentwoPatterntwo(
            device, f"{self._cmd_syntax}:PATTERNTwo"
        )

    @property
    def format(self) -> TriggerABusS64b66bBlockonethentwoFormat:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat`` command.

        **Description:**
            - Set or query the pattern format of Block1Then2 (block1 pattern followed by block2
              pattern).

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat { Binary | HEX }
            - TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat?

        **Info:**
            - ``Binary`` indicates the binary pattern format.
            - ``HEX`` indicates the hex pattern format.
        """
        return self._format

    @property
    def patternone(self) -> TriggerABusS64b66bBlockonethentwoPatternone:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne?`` query and raise an
              AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.sync``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:SYNC`` command.
            - ``.value``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne:VALue`` command.
        """
        return self._patternone

    @property
    def patterntwo(self) -> TriggerABusS64b66bBlockonethentwoPatterntwo:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo?`` query and raise an
              AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.sync``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:SYNC`` command.
            - ``.value``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo:VALue`` command.
        """
        return self._patterntwo


class TriggerABusS64b66bBlockonePatternValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue`` command.

    **Description:**
        - Set or query the pattern when trigger on block is set to Pattern.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue <string>
        - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue?

    **Info:**
        - ``<string>`` is 64 bits wide.
    """


class TriggerABusS64b66bBlockonePatternSync(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC`` command.

    **Description:**
        - Set or query the sync value of the block.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC <string>
        - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC?

    **Info:**
        - ``<string>`` is two bits wide.
    """


class TriggerABusS64b66bBlockonePatternFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat`` command.

    **Description:**
        - Set or query the pattern format when trigger on block is set to Pattern.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat?`` query and raise an AssertionError if
          the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat { Binary | HEX }
        - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat?

    **Info:**
        - ``Binary`` indicates the binary pattern format.
        - ``HEX`` indicates the hex pattern format.
    """


class TriggerABusS64b66bBlockonePattern(SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat`` command.
        - ``.sync``: The ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC`` command.
        - ``.value``: The ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusS64b66bBlockonePatternFormat(device, f"{self._cmd_syntax}:FORMat")
        self._sync = TriggerABusS64b66bBlockonePatternSync(device, f"{self._cmd_syntax}:SYNC")
        self._value = TriggerABusS64b66bBlockonePatternValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusS64b66bBlockonePatternFormat:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat`` command.

        **Description:**
            - Set or query the pattern format when trigger on block is set to Pattern.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat?`` query and raise an AssertionError
              if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat { Binary | HEX }
            - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat?

        **Info:**
            - ``Binary`` indicates the binary pattern format.
            - ``HEX`` indicates the hex pattern format.
        """
        return self._format

    @property
    def sync(self) -> TriggerABusS64b66bBlockonePatternSync:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC`` command.

        **Description:**
            - Set or query the sync value of the block.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC <string>
            - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC?

        **Info:**
            - ``<string>`` is two bits wide.
        """
        return self._sync

    @property
    def value(self) -> TriggerABusS64b66bBlockonePatternValue:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue`` command.

        **Description:**
            - Set or query the pattern when trigger on block is set to Pattern.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue <string>
            - TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue?

        **Info:**
            - ``<string>`` is 64 bits wide.
        """
        return self._value


class TriggerABusS64b66bBlockoneBlocktype(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType`` command.

    **Description:**
        - Set or query the control block type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType { NONe | X1E | X2D | X33 | X66 | X55 | X78 | X4B | X87 | X99 | XB4 | XCC | XD2 | XE1 | XFF }
        - TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType?

    **Info:**
        - ``NONe``
        - ``X1E``
        - ``X2D``
        - ``X33``
        - ``X66``
        - ``X55``
        - ``X78``
        - ``X4B``
        - ``X87``
        - ``X99``
        - ``XB4``
        - ``XCC``
        - ``XD2``
        - ``XE1``
        - ``XFF``
    """  # noqa: E501


class TriggerABusS64b66bBlockone(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B:BLOCKONE`` command.

    **Description:**
        - Set or query the S64B66B block trigger settings.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S64B66B:BLOCKONE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S64B66B:BLOCKONE?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:S64B66B:BLOCKONE value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:S64B66B:BLOCKONE { SYNC | INVSYNC | BLOCKtype | PATtern }
        - TRIGger:A:BUS:S64B66B:BLOCKONE?

    **Info:**
        - ``SYNC``
        - ``INVSYNC``
        - ``BLOCKtype``
        - ``PATtern``

    Properties:
        - ``.blocktype``: The ``TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType`` command.
        - ``.pattern``: The ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._blocktype = TriggerABusS64b66bBlockoneBlocktype(
            device, f"{self._cmd_syntax}:BLOCKType"
        )
        self._pattern = TriggerABusS64b66bBlockonePattern(device, f"{self._cmd_syntax}:PATtern")

    @property
    def blocktype(self) -> TriggerABusS64b66bBlockoneBlocktype:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType`` command.

        **Description:**
            - Set or query the control block type.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType { NONe | X1E | X2D | X33 | X66 | X55 | X78 | X4B | X87 | X99 | XB4 | XCC | XD2 | XE1 | XFF }
            - TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType?

        **Info:**
            - ``NONe``
            - ``X1E``
            - ``X2D``
            - ``X33``
            - ``X66``
            - ``X55``
            - ``X78``
            - ``X4B``
            - ``X87``
            - ``X99``
            - ``XB4``
            - ``XCC``
            - ``XD2``
            - ``XE1``
            - ``XFF``
        """  # noqa: E501
        return self._blocktype

    @property
    def pattern(self) -> TriggerABusS64b66bBlockonePattern:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:FORMat`` command.
            - ``.sync``: The ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:SYNC`` command.
            - ``.value``: The ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern:VALue`` command.
        """
        return self._pattern


class TriggerABusS64b66b(SCPICmdRead):
    """The ``TRIGger:A:BUS:S64B66B`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S64B66B?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S64B66B?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.blockone``: The ``TRIGger:A:BUS:S64B66B:BLOCKONE`` command.
        - ``.blockonethentwo``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO`` command tree.
        - ``.condition``: The ``TRIGger:A:BUS:S64B66B:CONDition`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._blockone = TriggerABusS64b66bBlockone(device, f"{self._cmd_syntax}:BLOCKONE")
        self._blockonethentwo = TriggerABusS64b66bBlockonethentwo(
            device, f"{self._cmd_syntax}:BLOCKONETHENTWO"
        )
        self._condition = TriggerABusS64b66bCondition(device, f"{self._cmd_syntax}:CONDition")

    @property
    def blockone(self) -> TriggerABusS64b66bBlockone:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONE`` command.

        **Description:**
            - Set or query the S64B66B block trigger settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S64B66B:BLOCKONE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S64B66B:BLOCKONE?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONE value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S64B66B:BLOCKONE { SYNC | INVSYNC | BLOCKtype | PATtern }
            - TRIGger:A:BUS:S64B66B:BLOCKONE?

        **Info:**
            - ``SYNC``
            - ``INVSYNC``
            - ``BLOCKtype``
            - ``PATtern``

        Sub-properties:
            - ``.blocktype``: The ``TRIGger:A:BUS:S64B66B:BLOCKONE:BLOCKType`` command.
            - ``.pattern``: The ``TRIGger:A:BUS:S64B66B:BLOCKONE:PATtern`` command tree.
        """
        return self._blockone

    @property
    def blockonethentwo(self) -> TriggerABusS64b66bBlockonethentwo:
        """Return the ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:FORMat`` command.
            - ``.patternone``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNOne`` command
              tree.
            - ``.patterntwo``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO:PATTERNTwo`` command
              tree.
        """
        return self._blockonethentwo

    @property
    def condition(self) -> TriggerABusS64b66bCondition:
        """Return the ``TRIGger:A:BUS:S64B66B:CONDition`` command.

        **Description:**
            - Set or query the S64S66B block trigger is set to 'Block' (single block) or
              'Block1Then2' (block1 pattern followed by a block2 pattern).

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S64B66B:CONDition?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S64B66B:CONDition?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:S64B66B:CONDition value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:S64B66B:CONDition { BLOCK | BLOCK1THEN2 }
            - TRIGger:A:BUS:S64B66B:CONDition?

        **Info:**
            - ``BLOCK`` sets a single block trigger.
            - ``BLOCK1THEN2`` sets the block1 pattern followed by the block2 pattern.
        """
        return self._condition


class TriggerABusRs232cDataValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:RS232C:DATa:VALue`` command.

    **Description:**
        - This command sets or queries the data address string used for the RS-232 bus trigger when
          the trigger condition is set to Data.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:RS232C:DATa:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:RS232C:DATa:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:RS232C:DATa:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:RS232C:DATa:VALue <string>
        - TRIGger:A:BUS:RS232C:DATa:VALue?

    **Info:**
        - ``<string>`` specifies the address value. The argument is a string of 0, 1, or X
          representing a binary number.
    """


class TriggerABusRs232cDataSize(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:RS232C:DATa:SIZe`` command.

    **Description:**
        - This command sets or queries the length of the data string in bytes to be used for an
          RS-232C trigger when the trigger condition is Data.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:RS232C:DATa:SIZe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:RS232C:DATa:SIZe?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:RS232C:DATa:SIZe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:RS232C:DATa:SIZe <NR3>
        - TRIGger:A:BUS:RS232C:DATa:SIZe?

    **Info:**
        - ``<NR3>`` specifies the data size in bytes.
    """


class TriggerABusRs232cDataFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:RS232C:DATa:FORMat`` command.

    **Description:**
        - This command sets or queries the data format for the RS232C bus trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:RS232C:DATa:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:RS232C:DATa:FORMat?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:RS232C:DATa:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:RS232C:DATa:FORMat {BINary|HEXadecimal}
        - TRIGger:A:BUS:RS232C:DATa:FORMat?

    **Info:**
        - ``BINary`` specifies that the data format for the RS232C bus trigger is Binary.
        - ``HEXadecimal`` specifies that the data format for the RS232C bus trigger is Hexadecimal.
    """


class TriggerABusRs232cData(SCPICmdRead):
    """The ``TRIGger:A:BUS:RS232C:DATa`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:RS232C:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:RS232C:DATa?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:RS232C:DATa:FORMat`` command.
        - ``.size``: The ``TRIGger:A:BUS:RS232C:DATa:SIZe`` command.
        - ``.value``: The ``TRIGger:A:BUS:RS232C:DATa:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusRs232cDataFormat(device, f"{self._cmd_syntax}:FORMat")
        self._size = TriggerABusRs232cDataSize(device, f"{self._cmd_syntax}:SIZe")
        self._value = TriggerABusRs232cDataValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusRs232cDataFormat:
        """Return the ``TRIGger:A:BUS:RS232C:DATa:FORMat`` command.

        **Description:**
            - This command sets or queries the data format for the RS232C bus trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:RS232C:DATa:FORMat?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:RS232C:DATa:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:RS232C:DATa:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:RS232C:DATa:FORMat {BINary|HEXadecimal}
            - TRIGger:A:BUS:RS232C:DATa:FORMat?

        **Info:**
            - ``BINary`` specifies that the data format for the RS232C bus trigger is Binary.
            - ``HEXadecimal`` specifies that the data format for the RS232C bus trigger is
              Hexadecimal.
        """
        return self._format

    @property
    def size(self) -> TriggerABusRs232cDataSize:
        """Return the ``TRIGger:A:BUS:RS232C:DATa:SIZe`` command.

        **Description:**
            - This command sets or queries the length of the data string in bytes to be used for an
              RS-232C trigger when the trigger condition is Data.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:RS232C:DATa:SIZe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:RS232C:DATa:SIZe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:RS232C:DATa:SIZe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:RS232C:DATa:SIZe <NR3>
            - TRIGger:A:BUS:RS232C:DATa:SIZe?

        **Info:**
            - ``<NR3>`` specifies the data size in bytes.
        """
        return self._size

    @property
    def value(self) -> TriggerABusRs232cDataValue:
        """Return the ``TRIGger:A:BUS:RS232C:DATa:VALue`` command.

        **Description:**
            - This command sets or queries the data address string used for the RS-232 bus trigger
              when the trigger condition is set to Data.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:RS232C:DATa:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:RS232C:DATa:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:RS232C:DATa:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:RS232C:DATa:VALue <string>
            - TRIGger:A:BUS:RS232C:DATa:VALue?

        **Info:**
            - ``<string>`` specifies the address value. The argument is a string of 0, 1, or X
              representing a binary number.
        """
        return self._value


class TriggerABusRs232cCondition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:RS232C:CONDition`` command.

    **Description:**
        - This command sets or queries the condition for an RS-232C bus trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:RS232C:CONDition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:RS232C:CONDition?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:RS232C:CONDition value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:RS232C:CONDition {DATa|EOp|PARItyerror|STARt}
        - TRIGger:A:BUS:RS232C:CONDition?

    **Info:**
        - ``DATa`` sets the Trigger on condition to Data.
        - ``EOp`` sets the Trigger on condition to End of Packet.
        - ``PARItyerror`` sets the Trigger on condition to Parity Error.
        - ``STARt`` sets the Trigger on condition to Start.
    """


class TriggerABusRs232c(SCPICmdRead):
    """The ``TRIGger:A:BUS:RS232C`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:RS232C?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:RS232C?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.condition``: The ``TRIGger:A:BUS:RS232C:CONDition`` command.
        - ``.data``: The ``TRIGger:A:BUS:RS232C:DATa`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._condition = TriggerABusRs232cCondition(device, f"{self._cmd_syntax}:CONDition")
        self._data = TriggerABusRs232cData(device, f"{self._cmd_syntax}:DATa")

    @property
    def condition(self) -> TriggerABusRs232cCondition:
        """Return the ``TRIGger:A:BUS:RS232C:CONDition`` command.

        **Description:**
            - This command sets or queries the condition for an RS-232C bus trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:RS232C:CONDition?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:RS232C:CONDition?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:RS232C:CONDition value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:RS232C:CONDition {DATa|EOp|PARItyerror|STARt}
            - TRIGger:A:BUS:RS232C:CONDition?

        **Info:**
            - ``DATa`` sets the Trigger on condition to Data.
            - ``EOp`` sets the Trigger on condition to End of Packet.
            - ``PARItyerror`` sets the Trigger on condition to Parity Error.
            - ``STARt`` sets the Trigger on condition to Start.
        """
        return self._condition

    @property
    def data(self) -> TriggerABusRs232cData:
        """Return the ``TRIGger:A:BUS:RS232C:DATa`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:RS232C:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:RS232C:DATa?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:RS232C:DATa:FORMat`` command.
            - ``.size``: The ``TRIGger:A:BUS:RS232C:DATa:SIZe`` command.
            - ``.value``: The ``TRIGger:A:BUS:RS232C:DATa:VALue`` command.
        """
        return self._data


class TriggerABusPciePatternSymbolPlusItem(ValidatedDynamicNumberCmd, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x>`` command.

    **Description:**
        - This command sets or queries the PCIE bus trigger pattern plus symbol (positive
          disparity). The x specifies the plus character and can be 1 through 4.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x>?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x> <string>
        - TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x>?

    **Info:**
        - ``<string>`` specifies the pattern symbol plus.
    """


class TriggerABusPciePatternSymbolMinusItem(ValidatedDynamicNumberCmd, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x>`` command.

    **Description:**
        - This command sets or queries the PCIE bus trigger pattern symbol minus (negative
          disparity). The x specifies the minus character and can be 1 through 4.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x>?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x>?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x> <string>
        - TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x>?

    **Info:**
        - ``<string>`` specifies the trigger pattern minus symbol.
    """


class TriggerABusPciePatternSymbol(SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:PATtern:SYMbol`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:PATtern:SYMbol?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:PATtern:SYMbol?``
          query and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.minus``: The ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x>`` command.
        - ``.plus``: The ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x>`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._minus: Dict[int, TriggerABusPciePatternSymbolMinusItem] = DefaultDictPassKeyToFactory(
            lambda x: TriggerABusPciePatternSymbolMinusItem(device, f"{self._cmd_syntax}:MINus{x}")
        )
        self._plus: Dict[int, TriggerABusPciePatternSymbolPlusItem] = DefaultDictPassKeyToFactory(
            lambda x: TriggerABusPciePatternSymbolPlusItem(device, f"{self._cmd_syntax}:PLUS{x}")
        )

    @property
    def minus(self) -> Dict[int, TriggerABusPciePatternSymbolMinusItem]:
        """Return the ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x>`` command.

        **Description:**
            - This command sets or queries the PCIE bus trigger pattern symbol minus (negative
              disparity). The x specifies the minus character and can be 1 through 4.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x>?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x> <string>
            - TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x>?

        **Info:**
            - ``<string>`` specifies the trigger pattern minus symbol.
        """
        return self._minus

    @property
    def plus(self) -> Dict[int, TriggerABusPciePatternSymbolPlusItem]:
        """Return the ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x>`` command.

        **Description:**
            - This command sets or queries the PCIE bus trigger pattern plus symbol (positive
              disparity). The x specifies the plus character and can be 1 through 4.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x>?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x>?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x> <string>
            - TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x>?

        **Info:**
            - ``<string>`` specifies the pattern symbol plus.
        """
        return self._plus


class TriggerABusPciePatternOrderedset(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:PATtern:ORDERedset`` command.

    **Description:**
        - This command sets or queries the PCIE bus trigger pattern ordered set.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:PATtern:ORDERedset?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:PCIE:PATtern:ORDERedset?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:PCIE:PATtern:ORDERedset value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:PCIE:PATtern:ORDERedset {EI|FTS|SKP}
        - TRIGger:A:BUS:PCIE:PATtern:ORDERedset?

    **Info:**
        - ``INVALID`` is an additional argument that can be returned by a query.
    """


class TriggerABusPciePatternCharItem(ValidatedDynamicNumberCmd, SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:PATtern:CHAR<x>`` command.

    **Description:**
        - This command sets or queries the PCIE bus trigger pattern character. The x specifies the
          character and can be 1 through 4.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:PATtern:CHAR<x>?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:PATtern:CHAR<x>?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:PCIE:PATtern:CHAR<x> value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:PCIE:PATtern:CHAR<x> <string>
        - TRIGger:A:BUS:PCIE:PATtern:CHAR<x>?

    **Info:**
        - ``<string>`` specifies the trigger pattern character. Valid characters are any valid
          PCIe/8b10b character (KCodes, DCodes, and KCode mnemonics like COM and SKP) or X, the
          don't care character.
    """


class TriggerABusPciePattern(SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:PATtern`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:PATtern?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:PATtern?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.char``: The ``TRIGger:A:BUS:PCIE:PATtern:CHAR<x>`` command.
        - ``.orderedset``: The ``TRIGger:A:BUS:PCIE:PATtern:ORDERedset`` command.
        - ``.symbol``: The ``TRIGger:A:BUS:PCIE:PATtern:SYMbol`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._char: Dict[int, TriggerABusPciePatternCharItem] = DefaultDictPassKeyToFactory(
            lambda x: TriggerABusPciePatternCharItem(device, f"{self._cmd_syntax}:CHAR{x}")
        )
        self._orderedset = TriggerABusPciePatternOrderedset(
            device, f"{self._cmd_syntax}:ORDERedset"
        )
        self._symbol = TriggerABusPciePatternSymbol(device, f"{self._cmd_syntax}:SYMbol")

    @property
    def char(self) -> Dict[int, TriggerABusPciePatternCharItem]:
        """Return the ``TRIGger:A:BUS:PCIE:PATtern:CHAR<x>`` command.

        **Description:**
            - This command sets or queries the PCIE bus trigger pattern character. The x specifies
              the character and can be 1 through 4.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:PATtern:CHAR<x>?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:PATtern:CHAR<x>?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:PATtern:CHAR<x> value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:PCIE:PATtern:CHAR<x> <string>
            - TRIGger:A:BUS:PCIE:PATtern:CHAR<x>?

        **Info:**
            - ``<string>`` specifies the trigger pattern character. Valid characters are any valid
              PCIe/8b10b character (KCodes, DCodes, and KCode mnemonics like COM and SKP) or X, the
              don't care character.
        """
        return self._char

    @property
    def orderedset(self) -> TriggerABusPciePatternOrderedset:
        """Return the ``TRIGger:A:BUS:PCIE:PATtern:ORDERedset`` command.

        **Description:**
            - This command sets or queries the PCIE bus trigger pattern ordered set.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:PATtern:ORDERedset?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:PATtern:ORDERedset?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:PATtern:ORDERedset value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:PCIE:PATtern:ORDERedset {EI|FTS|SKP}
            - TRIGger:A:BUS:PCIE:PATtern:ORDERedset?

        **Info:**
            - ``INVALID`` is an additional argument that can be returned by a query.
        """
        return self._orderedset

    @property
    def symbol(self) -> TriggerABusPciePatternSymbol:
        """Return the ``TRIGger:A:BUS:PCIE:PATtern:SYMbol`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:PATtern:SYMbol?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:PATtern:SYMbol?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.minus``: The ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:MINus<x>`` command.
            - ``.plus``: The ``TRIGger:A:BUS:PCIE:PATtern:SYMbol:PLUS<x>`` command.
        """
        return self._symbol


class TriggerABusPcieFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:FORMat`` command.

    **Description:**
        - This command sets or queries the PCIe bus trigger format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:FORMat?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:PCIE:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:PCIE:FORMat {ORDERedset|SYMbol|CHAR}
        - TRIGger:A:BUS:PCIE:FORMat?
    """


class TriggerABusPcieError(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:ERROR`` command.

    **Description:**
        - This command sets or queries the PCIE bus trigger error.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:ERROR?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:ERROR?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:PCIE:ERROR value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:PCIE:ERROR {CHARacter|DISParity}
        - TRIGger:A:BUS:PCIE:ERROR?

    **Info:**
        - ``CHARACTER`` sets the instrument to trigger on a character error.
        - ``DISPARITY`` sets the instrument to trigger on a disparity error.
    """


class TriggerABusPcieDisparity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:DISParity`` command.

    **Description:**
        - This command sets or queries the PCIE bus trigger disparity.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:DISParity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:DISParity?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:PCIE:DISParity value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:PCIE:DISParity {EITher|NEGAtive|POSITIVe}
        - TRIGger:A:BUS:PCIE:DISParity?

    **Info:**
        - ``NEGative`` specifies negative disparity.
        - ``POSITIVe`` specifies positive disparity.
        - ``EITher`` specifies either disparity.
    """


class TriggerABusPcieCondition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:CONDition`` command.

    **Description:**
        - This command sets or queries the PCIE bus trigger condition.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:CONDition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:CONDition?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:PCIE:CONDition value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:PCIE:CONDition {ANYControl|CHARacter|ERROR|PATtern}
        - TRIGger:A:BUS:PCIE:CONDition?
    """


class TriggerABusPcieCharacterSymbolPlus(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS`` command.

    **Description:**
        - This command sets or queries PCIE bus trigger character symbol plus (positive disparity).

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS <string>
        - TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS?

    **Info:**
        - ``<string>`` specifies the character symbol plus.
    """


class TriggerABusPcieCharacterSymbolMinus(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus`` command.

    **Description:**
        - This command sets or queries the PCIE bus trigger character symbol minus (negative
          disparity).

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus <string>
        - TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus?

    **Info:**
        - ``<string>`` specifies the minus character symbol.
    """


class TriggerABusPcieCharacterSymbol(SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol?``
          query and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.minus``: The ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus`` command.
        - ``.plus``: The ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._minus = TriggerABusPcieCharacterSymbolMinus(device, f"{self._cmd_syntax}:MINus")
        self._plus = TriggerABusPcieCharacterSymbolPlus(device, f"{self._cmd_syntax}:PLUS")

    @property
    def minus(self) -> TriggerABusPcieCharacterSymbolMinus:
        """Return the ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus`` command.

        **Description:**
            - This command sets or queries the PCIE bus trigger character symbol minus (negative
              disparity).

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus <string>
            - TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus?

        **Info:**
            - ``<string>`` specifies the minus character symbol.
        """
        return self._minus

    @property
    def plus(self) -> TriggerABusPcieCharacterSymbolPlus:
        """Return the ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS`` command.

        **Description:**
            - This command sets or queries PCIE bus trigger character symbol plus (positive
              disparity).

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS <string>
            - TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS?

        **Info:**
            - ``<string>`` specifies the character symbol plus.
        """
        return self._plus


class TriggerABusPcieCharacterChar(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:CHARacter:CHAR`` command.

    **Description:**
        - This command sets or queries the PCIE bus trigger character.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:CHARacter:CHAR?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:CHARacter:CHAR?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:PCIE:CHARacter:CHAR value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:PCIE:CHARacter:CHAR <string>
        - TRIGger:A:BUS:PCIE:CHARacter:CHAR?

    **Info:**
        - ``<string>`` specifies the trigger character.
    """


class TriggerABusPcieCharacter(SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE:CHARacter`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:CHARacter?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:CHARacter?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.char``: The ``TRIGger:A:BUS:PCIE:CHARacter:CHAR`` command.
        - ``.symbol``: The ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._char = TriggerABusPcieCharacterChar(device, f"{self._cmd_syntax}:CHAR")
        self._symbol = TriggerABusPcieCharacterSymbol(device, f"{self._cmd_syntax}:SYMbol")

    @property
    def char(self) -> TriggerABusPcieCharacterChar:
        """Return the ``TRIGger:A:BUS:PCIE:CHARacter:CHAR`` command.

        **Description:**
            - This command sets or queries the PCIE bus trigger character.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:CHARacter:CHAR?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:CHARacter:CHAR?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:CHARacter:CHAR value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:PCIE:CHARacter:CHAR <string>
            - TRIGger:A:BUS:PCIE:CHARacter:CHAR?

        **Info:**
            - ``<string>`` specifies the trigger character.
        """
        return self._char

    @property
    def symbol(self) -> TriggerABusPcieCharacterSymbol:
        """Return the ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.minus``: The ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:MINus`` command.
            - ``.plus``: The ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol:PLUS`` command.
        """
        return self._symbol


class TriggerABusPcie(SCPICmdRead):
    """The ``TRIGger:A:BUS:PCIE`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE?`` query and raise
          an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.character``: The ``TRIGger:A:BUS:PCIE:CHARacter`` command tree.
        - ``.condition``: The ``TRIGger:A:BUS:PCIE:CONDition`` command.
        - ``.disparity``: The ``TRIGger:A:BUS:PCIE:DISParity`` command.
        - ``.error``: The ``TRIGger:A:BUS:PCIE:ERROR`` command.
        - ``.format``: The ``TRIGger:A:BUS:PCIE:FORMat`` command.
        - ``.pattern``: The ``TRIGger:A:BUS:PCIE:PATtern`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._character = TriggerABusPcieCharacter(device, f"{self._cmd_syntax}:CHARacter")
        self._condition = TriggerABusPcieCondition(device, f"{self._cmd_syntax}:CONDition")
        self._disparity = TriggerABusPcieDisparity(device, f"{self._cmd_syntax}:DISParity")
        self._error = TriggerABusPcieError(device, f"{self._cmd_syntax}:ERROR")
        self._format = TriggerABusPcieFormat(device, f"{self._cmd_syntax}:FORMat")
        self._pattern = TriggerABusPciePattern(device, f"{self._cmd_syntax}:PATtern")

    @property
    def character(self) -> TriggerABusPcieCharacter:
        """Return the ``TRIGger:A:BUS:PCIE:CHARacter`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:CHARacter?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:CHARacter?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.char``: The ``TRIGger:A:BUS:PCIE:CHARacter:CHAR`` command.
            - ``.symbol``: The ``TRIGger:A:BUS:PCIE:CHARacter:SYMbol`` command tree.
        """
        return self._character

    @property
    def condition(self) -> TriggerABusPcieCondition:
        """Return the ``TRIGger:A:BUS:PCIE:CONDition`` command.

        **Description:**
            - This command sets or queries the PCIE bus trigger condition.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:CONDition?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:CONDition?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:CONDition value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:PCIE:CONDition {ANYControl|CHARacter|ERROR|PATtern}
            - TRIGger:A:BUS:PCIE:CONDition?
        """
        return self._condition

    @property
    def disparity(self) -> TriggerABusPcieDisparity:
        """Return the ``TRIGger:A:BUS:PCIE:DISParity`` command.

        **Description:**
            - This command sets or queries the PCIE bus trigger disparity.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:DISParity?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:DISParity?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:PCIE:DISParity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:PCIE:DISParity {EITher|NEGAtive|POSITIVe}
            - TRIGger:A:BUS:PCIE:DISParity?

        **Info:**
            - ``NEGative`` specifies negative disparity.
            - ``POSITIVe`` specifies positive disparity.
            - ``EITher`` specifies either disparity.
        """
        return self._disparity

    @property
    def error(self) -> TriggerABusPcieError:
        """Return the ``TRIGger:A:BUS:PCIE:ERROR`` command.

        **Description:**
            - This command sets or queries the PCIE bus trigger error.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:ERROR?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:ERROR?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:PCIE:ERROR value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:PCIE:ERROR {CHARacter|DISParity}
            - TRIGger:A:BUS:PCIE:ERROR?

        **Info:**
            - ``CHARACTER`` sets the instrument to trigger on a character error.
            - ``DISPARITY`` sets the instrument to trigger on a disparity error.
        """
        return self._error

    @property
    def format(self) -> TriggerABusPcieFormat:
        """Return the ``TRIGger:A:BUS:PCIE:FORMat`` command.

        **Description:**
            - This command sets or queries the PCIe bus trigger format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:FORMat?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:PCIE:FORMat value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:PCIE:FORMat {ORDERedset|SYMbol|CHAR}
            - TRIGger:A:BUS:PCIE:FORMat?
        """
        return self._format

    @property
    def pattern(self) -> TriggerABusPciePattern:
        """Return the ``TRIGger:A:BUS:PCIE:PATtern`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE:PATtern?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE:PATtern?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.char``: The ``TRIGger:A:BUS:PCIE:PATtern:CHAR<x>`` command.
            - ``.orderedset``: The ``TRIGger:A:BUS:PCIE:PATtern:ORDERedset`` command.
            - ``.symbol``: The ``TRIGger:A:BUS:PCIE:PATtern:SYMbol`` command tree.
        """
        return self._pattern


class TriggerABusMil1553bTimeQualifier(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:TIME:QUALifier`` command.

    **Description:**
        - This command specifies the qualifier to use when triggering on either the remote terminal
          response time (RT) or the inter-message gap (IMG). The instrument will trigger when it
          finds an RT or IMG that meets the specified conditions. The trigger condition must be set
          to TIMe,

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:TIME:QUALifier?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:TIME:QUALifier?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:TIME:QUALifier value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:TIME:QUALifier {LESSthan|MOREthan|INrange|OUTrange}
        - TRIGger:A:BUS:MIL1553B:TIME:QUALifier?

    **Info:**
        - ``LESSthan`` sets the time qualifier to less than minimum.
        - ``MOREthan`` sets the time qualifier to greater than maximum.
        - ``INrange`` sets the time qualifier to inside range.
        - ``OUTrange`` sets the time qualifier to out of range.
    """


class TriggerABusMil1553bTimeMorelimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:TIME:MORELimit`` command.

    **Description:**
        - This command specifies either the maximum remote terminal response time (RT) limit, in
          seconds, for the amount of time the terminal has to transmit or the maximum inter-message
          gap (IMG). The instrument will trigger when it finds an RT or IMG that meets the specified
          conditions. The trigger condition must be set to TIMe,

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:TIME:MORELimit?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:TIME:MORELimit?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:TIME:MORELimit value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:TIME:MORELimit <NR3>
        - TRIGger:A:BUS:MIL1553B:TIME:MORELimit?

    **Info:**
        - ``<NR3>`` is a floating point number that specifies either the maximum remote terminal
          response time (RT) or the maximum inter-message gap (IMG) in seconds.
    """


class TriggerABusMil1553bTimeLesslimit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:TIME:LESSLimit`` command.

    **Description:**
        - This command specifies either the minimum remote terminal response time (RT) limit, in
          seconds, for the amount of time the terminal has to transmit or the minimum inter-message
          gap (IMG). The instrument will trigger when it finds an RT or IMG that meets the specified
          conditions. The trigger condition must be set to TIMe.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:TIME:LESSLimit?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:TIME:LESSLimit?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:TIME:LESSLimit value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:TIME:LESSLimit <NR3>
        - TRIGger:A:BUS:MIL1553B:TIME:LESSLimit?

    **Info:**
        - ``<NR3>`` is a floating point number that specifies either the minimum remote terminal
          response time (RT) or the inter-message gap (IMG) in seconds.
    """


class TriggerABusMil1553bTime(SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:TIME`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:TIME?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:TIME?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.lesslimit``: The ``TRIGger:A:BUS:MIL1553B:TIME:LESSLimit`` command.
        - ``.morelimit``: The ``TRIGger:A:BUS:MIL1553B:TIME:MORELimit`` command.
        - ``.qualifier``: The ``TRIGger:A:BUS:MIL1553B:TIME:QUALifier`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._lesslimit = TriggerABusMil1553bTimeLesslimit(device, f"{self._cmd_syntax}:LESSLimit")
        self._morelimit = TriggerABusMil1553bTimeMorelimit(device, f"{self._cmd_syntax}:MORELimit")
        self._qualifier = TriggerABusMil1553bTimeQualifier(device, f"{self._cmd_syntax}:QUALifier")

    @property
    def lesslimit(self) -> TriggerABusMil1553bTimeLesslimit:
        """Return the ``TRIGger:A:BUS:MIL1553B:TIME:LESSLimit`` command.

        **Description:**
            - This command specifies either the minimum remote terminal response time (RT) limit, in
              seconds, for the amount of time the terminal has to transmit or the minimum
              inter-message gap (IMG). The instrument will trigger when it finds an RT or IMG that
              meets the specified conditions. The trigger condition must be set to TIMe.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:TIME:LESSLimit?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:TIME:LESSLimit?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:TIME:LESSLimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:TIME:LESSLimit <NR3>
            - TRIGger:A:BUS:MIL1553B:TIME:LESSLimit?

        **Info:**
            - ``<NR3>`` is a floating point number that specifies either the minimum remote terminal
              response time (RT) or the inter-message gap (IMG) in seconds.
        """
        return self._lesslimit

    @property
    def morelimit(self) -> TriggerABusMil1553bTimeMorelimit:
        """Return the ``TRIGger:A:BUS:MIL1553B:TIME:MORELimit`` command.

        **Description:**
            - This command specifies either the maximum remote terminal response time (RT) limit, in
              seconds, for the amount of time the terminal has to transmit or the maximum
              inter-message gap (IMG). The instrument will trigger when it finds an RT or IMG that
              meets the specified conditions. The trigger condition must be set to TIMe,

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:TIME:MORELimit?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:TIME:MORELimit?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:TIME:MORELimit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:TIME:MORELimit <NR3>
            - TRIGger:A:BUS:MIL1553B:TIME:MORELimit?

        **Info:**
            - ``<NR3>`` is a floating point number that specifies either the maximum remote terminal
              response time (RT) or the maximum inter-message gap (IMG) in seconds.
        """
        return self._morelimit

    @property
    def qualifier(self) -> TriggerABusMil1553bTimeQualifier:
        """Return the ``TRIGger:A:BUS:MIL1553B:TIME:QUALifier`` command.

        **Description:**
            - This command specifies the qualifier to use when triggering on either the remote
              terminal response time (RT) or the inter-message gap (IMG). The instrument will
              trigger when it finds an RT or IMG that meets the specified conditions. The trigger
              condition must be set to TIMe,

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:TIME:QUALifier?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:TIME:QUALifier?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:TIME:QUALifier value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:TIME:QUALifier {LESSthan|MOREthan|INrange|OUTrange}
            - TRIGger:A:BUS:MIL1553B:TIME:QUALifier?

        **Info:**
            - ``LESSthan`` sets the time qualifier to less than minimum.
            - ``MOREthan`` sets the time qualifier to greater than maximum.
            - ``INrange`` sets the time qualifier to inside range.
            - ``OUTrange`` sets the time qualifier to out of range.
        """
        return self._qualifier


class TriggerABusMil1553bStatusBitTf(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF`` command.

    **Description:**
        - This command specifies the status word terminal flag bit value (bit 19) to use when
          triggering on the MIL-STD-1553 status bit field. The default is all X's (don't care). The
          trigger condition must be set to STATUS.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF?

    **Info:**
        - ``0, ZERO`` sets the value to 0.
        - ``1, ONE`` sets the value to 1.
        - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
        - ``OFF`` sets the value to 0.
        - ``ON`` sets the value to 1.
    """


class TriggerABusMil1553bStatusBitSubsf(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF`` command.

    **Description:**
        - This command specifies the status word subsystem flag bit value (bit 17) to use when
          triggering on the MIL-STD-1553 status bit field. The default is all X's (don't care). The
          trigger condition must be set to STATUS.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF?

    **Info:**
        - ``0, ZERO`` sets the value to 0.
        - ``1, ONE`` sets the value to 1.
        - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
        - ``OFF`` sets the value to 0.
        - ``ON`` sets the value to 1.
    """


class TriggerABusMil1553bStatusBitSrq(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ`` command.

    **Description:**
        - This command specifies the status word service request (SRQ) bit value (bit 11) to use
          when triggering on the MIL-STD-1553 status bit field. The default is all X's (don't care).
          The trigger condition must be set to STATUS.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ?

    **Info:**
        - ``0, ZERO`` sets the value to 0.
        - ``1, ONE`` sets the value to 1.
        - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
        - ``OFF`` sets the value to 0.
        - ``ON`` sets the value to 1.
    """


class TriggerABusMil1553bStatusBitParity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity`` command.

    **Description:**
        - This command specifies the parity to use when triggering on the MIL-STD-1553 status bit
          field. The default is all X's (don't care). The trigger condition must be set to STATUS.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity {0|1|X|ZERo|ONE|NOCARE|DONTCare|ON|OFF}
        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity?

    **Info:**
        - ``0, ZERO`` sets the value to 0.
        - ``1, ONE`` sets the value to 1.
        - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
        - ``OFF`` sets the value to 0.
        - ``ON`` sets the value to 1.
    """


class TriggerABusMil1553bStatusBitMe(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME`` command.

    **Description:**
        - This command specifies the status word message error bit value (bit 9) to use when
          triggering on the MIL-STD-1553 status bit field. The default is all X's (don't care). The
          trigger condition must be set to STATUS.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME?

    **Info:**
        - ``0, ZERO`` sets the value to 0.
        - ``1, ONE`` sets the value to 1.
        - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
        - ``OFF`` sets the value to 0.
        - ``ON`` sets the value to 1.
    """


class TriggerABusMil1553bStatusBitInstr(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR`` command.

    **Description:**
        - This command specifies the status word instrumentation bit value (bit 10) to use when
          triggering on the MIL-STD-1553 status bit field. The default is all X's (don't care). The
          trigger condition must be set to STATUS.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR?

    **Info:**
        - ``0, ZERO`` sets the value to 0.
        - ``1, ONE`` sets the value to 1.
        - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
        - ``OFF`` sets the value to 0.
        - ``ON`` sets the value to 1.
    """


class TriggerABusMil1553bStatusBitDbca(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA`` command.

    **Description:**
        - This command specifies the status word dynamic bus control acceptance (DBCA) bit value
          (bit 18) to use when triggering on the MIL-STD-1553 status bit field. The default is all
          X's (don't care). The trigger condition must be set to STATUS.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA?

    **Info:**
        - ``0, ZERO`` sets the value to 0.
        - ``1, ONE`` sets the value to 1.
        - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
        - ``OFF`` sets the value to 0.
        - ``ON`` sets the value to 1.
    """


class TriggerABusMil1553bStatusBitBusy(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY`` command.

    **Description:**
        - This command specifies the status word busy bit value (bit 16) to use when triggering on
          the MIL-STD-1553 status bit field. The default is all X's (don't care). The trigger
          condition must be set to STATUS.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY?

    **Info:**
        - ``0, ZERO`` sets the value to 0.
        - ``1, ONE`` sets the value to 1.
        - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
        - ``OFF`` sets the value to 0.
        - ``ON`` sets the value to 1.
    """


class TriggerABusMil1553bStatusBitBcr(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR`` command.

    **Description:**
        - This command specifies the status word broadcast command received (BCR) bit value (bit 15)
          to use when triggering on the MIL-STD-1553 status bit field. The default is all X's (don't
          care). The trigger condition must be set to STATUS.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
        - TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR?

    **Info:**
        - ``0, ZERO`` sets the value to 0.
        - ``1, ONE`` sets the value to 1.
        - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
        - ``OFF`` sets the value to 0.
        - ``ON`` sets the value to 1.
    """


#  pylint: disable=too-many-instance-attributes
class TriggerABusMil1553bStatusBit(SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT?``
          query and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.bcr``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR`` command.
        - ``.busy``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY`` command.
        - ``.dbca``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA`` command.
        - ``.instr``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR`` command.
        - ``.me``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME`` command.
        - ``.parity``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity`` command.
        - ``.srq``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ`` command.
        - ``.subsf``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF`` command.
        - ``.tf``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._bcr = TriggerABusMil1553bStatusBitBcr(device, f"{self._cmd_syntax}:BCR")
        self._busy = TriggerABusMil1553bStatusBitBusy(device, f"{self._cmd_syntax}:BUSY")
        self._dbca = TriggerABusMil1553bStatusBitDbca(device, f"{self._cmd_syntax}:DBCA")
        self._instr = TriggerABusMil1553bStatusBitInstr(device, f"{self._cmd_syntax}:INSTR")
        self._me = TriggerABusMil1553bStatusBitMe(device, f"{self._cmd_syntax}:ME")
        self._parity = TriggerABusMil1553bStatusBitParity(device, f"{self._cmd_syntax}:PARity")
        self._srq = TriggerABusMil1553bStatusBitSrq(device, f"{self._cmd_syntax}:SRQ")
        self._subsf = TriggerABusMil1553bStatusBitSubsf(device, f"{self._cmd_syntax}:SUBSF")
        self._tf = TriggerABusMil1553bStatusBitTf(device, f"{self._cmd_syntax}:TF")

    @property
    def bcr(self) -> TriggerABusMil1553bStatusBitBcr:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR`` command.

        **Description:**
            - This command specifies the status word broadcast command received (BCR) bit value (bit
              15) to use when triggering on the MIL-STD-1553 status bit field. The default is all
              X's (don't care). The trigger condition must be set to STATUS.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR?

        **Info:**
            - ``0, ZERO`` sets the value to 0.
            - ``1, ONE`` sets the value to 1.
            - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
            - ``OFF`` sets the value to 0.
            - ``ON`` sets the value to 1.
        """
        return self._bcr

    @property
    def busy(self) -> TriggerABusMil1553bStatusBitBusy:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY`` command.

        **Description:**
            - This command specifies the status word busy bit value (bit 16) to use when triggering
              on the MIL-STD-1553 status bit field. The default is all X's (don't care). The trigger
              condition must be set to STATUS.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY?

        **Info:**
            - ``0, ZERO`` sets the value to 0.
            - ``1, ONE`` sets the value to 1.
            - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
            - ``OFF`` sets the value to 0.
            - ``ON`` sets the value to 1.
        """
        return self._busy

    @property
    def dbca(self) -> TriggerABusMil1553bStatusBitDbca:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA`` command.

        **Description:**
            - This command specifies the status word dynamic bus control acceptance (DBCA) bit value
              (bit 18) to use when triggering on the MIL-STD-1553 status bit field. The default is
              all X's (don't care). The trigger condition must be set to STATUS.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA?

        **Info:**
            - ``0, ZERO`` sets the value to 0.
            - ``1, ONE`` sets the value to 1.
            - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
            - ``OFF`` sets the value to 0.
            - ``ON`` sets the value to 1.
        """
        return self._dbca

    @property
    def instr(self) -> TriggerABusMil1553bStatusBitInstr:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR`` command.

        **Description:**
            - This command specifies the status word instrumentation bit value (bit 10) to use when
              triggering on the MIL-STD-1553 status bit field. The default is all X's (don't care).
              The trigger condition must be set to STATUS.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR?

        **Info:**
            - ``0, ZERO`` sets the value to 0.
            - ``1, ONE`` sets the value to 1.
            - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
            - ``OFF`` sets the value to 0.
            - ``ON`` sets the value to 1.
        """
        return self._instr

    @property
    def me(self) -> TriggerABusMil1553bStatusBitMe:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME`` command.

        **Description:**
            - This command specifies the status word message error bit value (bit 9) to use when
              triggering on the MIL-STD-1553 status bit field. The default is all X's (don't care).
              The trigger condition must be set to STATUS.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME?

        **Info:**
            - ``0, ZERO`` sets the value to 0.
            - ``1, ONE`` sets the value to 1.
            - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
            - ``OFF`` sets the value to 0.
            - ``ON`` sets the value to 1.
        """
        return self._me

    @property
    def parity(self) -> TriggerABusMil1553bStatusBitParity:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity`` command.

        **Description:**
            - This command specifies the parity to use when triggering on the MIL-STD-1553 status
              bit field. The default is all X's (don't care). The trigger condition must be set to
              STATUS.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity {0|1|X|ZERo|ONE|NOCARE|DONTCare|ON|OFF}
            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity?

        **Info:**
            - ``0, ZERO`` sets the value to 0.
            - ``1, ONE`` sets the value to 1.
            - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
            - ``OFF`` sets the value to 0.
            - ``ON`` sets the value to 1.
        """
        return self._parity

    @property
    def srq(self) -> TriggerABusMil1553bStatusBitSrq:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ`` command.

        **Description:**
            - This command specifies the status word service request (SRQ) bit value (bit 11) to use
              when triggering on the MIL-STD-1553 status bit field. The default is all X's (don't
              care). The trigger condition must be set to STATUS.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ?

        **Info:**
            - ``0, ZERO`` sets the value to 0.
            - ``1, ONE`` sets the value to 1.
            - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
            - ``OFF`` sets the value to 0.
            - ``ON`` sets the value to 1.
        """
        return self._srq

    @property
    def subsf(self) -> TriggerABusMil1553bStatusBitSubsf:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF`` command.

        **Description:**
            - This command specifies the status word subsystem flag bit value (bit 17) to use when
              triggering on the MIL-STD-1553 status bit field. The default is all X's (don't care).
              The trigger condition must be set to STATUS.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF?

        **Info:**
            - ``0, ZERO`` sets the value to 0.
            - ``1, ONE`` sets the value to 1.
            - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
            - ``OFF`` sets the value to 0.
            - ``ON`` sets the value to 1.
        """
        return self._subsf

    @property
    def tf(self) -> TriggerABusMil1553bStatusBitTf:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF`` command.

        **Description:**
            - This command specifies the status word terminal flag bit value (bit 19) to use when
              triggering on the MIL-STD-1553 status bit field. The default is all X's (don't care).
              The trigger condition must be set to STATUS.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
            - TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF?

        **Info:**
            - ``0, ZERO`` sets the value to 0.
            - ``1, ONE`` sets the value to 1.
            - ``X, NOCARE, DONTCare`` sets the value to X ('don't care'), which is the default.
            - ``OFF`` sets the value to 0.
            - ``ON`` sets the value to 1.
        """
        return self._tf


class TriggerABusMil1553bStatusAddressValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue`` command.

    **Description:**
        - This command specifies the value of the 5-bit remote terminal address to use when
          triggering on the MIL-STD-1553 status address field. The default is all X's (don't care).
          The trigger condition must be set to STATUS.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue <QString>
        - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue?
    """

    _WRAP_ARG_WITH_QUOTES = True


class TriggerABusMil1553bStatusAddressQualifier(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier`` command.

    **Description:**
        - This command specifies the qualifier to use when triggering on the MIL-STD-1553 status
          address field. The default is EQUAL. The trigger condition must be set to STATUS.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier?`` query and raise an AssertionError if
          the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier {LESSthan|MOREthan|EQual|UNEQual|LESSEQual|MOREEQual}
        - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier?

    **Info:**
        - ``LESSthan`` sets the Status Address qualifier to less than.
        - ``MOREthan`` sets the Status Address qualifier to greater than.
        - ``EQual`` sets the Status Address qualifier to equal.
        - ``UNEQual`` sets the Status Address qualifier to not equal.
        - ``LESSEQual`` sets the Status Address qualifier to less than or equal.
        - ``MOREEQual`` sets the Status Address qualifier to greater than or equal.
    """  # noqa: E501


class TriggerABusMil1553bStatusAddressFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat`` command.

    **Description:**
        - This command specifies the format (binary or hex) of the bit pattern to use when
          triggering on the MIL-STD-1553 status address field. The trigger condition needs to be set
          to STATUS.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat {BINary|HEX}
        - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat?

    **Info:**
        - ``BINary`` specifies the data format as binary.
        - ``HEX`` specifies the data format as hexadecimal.
    """


class TriggerABusMil1553bStatusAddress(SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat`` command.
        - ``.qualifier``: The ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier`` command.
        - ``.value``: The ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusMil1553bStatusAddressFormat(device, f"{self._cmd_syntax}:FORMat")
        self._qualifier = TriggerABusMil1553bStatusAddressQualifier(
            device, f"{self._cmd_syntax}:QUALifier"
        )
        self._value = TriggerABusMil1553bStatusAddressValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusMil1553bStatusAddressFormat:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat`` command.

        **Description:**
            - This command specifies the format (binary or hex) of the bit pattern to use when
              triggering on the MIL-STD-1553 status address field. The trigger condition needs to be
              set to STATUS.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat {BINary|HEX}
            - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat?

        **Info:**
            - ``BINary`` specifies the data format as binary.
            - ``HEX`` specifies the data format as hexadecimal.
        """
        return self._format

    @property
    def qualifier(self) -> TriggerABusMil1553bStatusAddressQualifier:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier`` command.

        **Description:**
            - This command specifies the qualifier to use when triggering on the MIL-STD-1553 status
              address field. The default is EQUAL. The trigger condition must be set to STATUS.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier?`` query and raise an AssertionError
              if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier {LESSthan|MOREthan|EQual|UNEQual|LESSEQual|MOREEQual}
            - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier?

        **Info:**
            - ``LESSthan`` sets the Status Address qualifier to less than.
            - ``MOREthan`` sets the Status Address qualifier to greater than.
            - ``EQual`` sets the Status Address qualifier to equal.
            - ``UNEQual`` sets the Status Address qualifier to not equal.
            - ``LESSEQual`` sets the Status Address qualifier to less than or equal.
            - ``MOREEQual`` sets the Status Address qualifier to greater than or equal.
        """  # noqa: E501
        return self._qualifier

    @property
    def value(self) -> TriggerABusMil1553bStatusAddressValue:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue`` command.

        **Description:**
            - This command specifies the value of the 5-bit remote terminal address to use when
              triggering on the MIL-STD-1553 status address field. The default is all X's (don't
              care). The trigger condition must be set to STATUS.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue <QString>
            - TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue?
        """
        return self._value


class TriggerABusMil1553bStatus(SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:STATUS`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.address``: The ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess`` command tree.
        - ``.bit``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._address = TriggerABusMil1553bStatusAddress(device, f"{self._cmd_syntax}:ADDRess")
        self._bit = TriggerABusMil1553bStatusBit(device, f"{self._cmd_syntax}:BIT")

    @property
    def address(self) -> TriggerABusMil1553bStatusAddress:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:FORMat`` command.
            - ``.qualifier``: The ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:QUALifier`` command.
            - ``.value``: The ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess:VALue`` command.
        """
        return self._address

    @property
    def bit(self) -> TriggerABusMil1553bStatusBit:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS:BIT?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:STATUS:BIT?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.bcr``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BCR`` command.
            - ``.busy``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:BUSY`` command.
            - ``.dbca``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:DBCA`` command.
            - ``.instr``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:INSTR`` command.
            - ``.me``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:ME`` command.
            - ``.parity``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:PARity`` command.
            - ``.srq``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SRQ`` command.
            - ``.subsf``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:SUBSF`` command.
            - ``.tf``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT:TF`` command.
        """
        return self._bit


class TriggerABusMil1553bErrtype(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:ERRTYPE`` command.

    **Description:**
        - This command specifies the signaling error type to use for a MIL-STD-1553 bus data word
          trigger: Parity, Sync, Manchester, or Data. The trigger condition must be set to ERRor.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:ERRTYPE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:ERRTYPE?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:ERRTYPE value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:ERRTYPE {PARity|SYNC|MANCHester|DATA}
        - TRIGger:A:BUS:MIL1553B:ERRTYPE?

    **Info:**
        - ``PARity`` - a failed parity check.
        - ``SYNc`` - the high to low, or low to high transition doesn't happen in the middle of the
          sync time as it should.
        - ``MANCHester`` - no transition in a bit time.
        - ``DATA`` - a non-contiguous data error.
    """


class TriggerABusMil1553bDataValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:DATA:VALue`` command.

    **Description:**
        - This command specifies the value to use for a MIL-STD-1553 bus data word trigger. This is
          a 16-bit field. The default is all X's (don't care). The trigger condition must be set to
          DATA.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:DATA:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:DATA:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:DATA:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:DATA:VALue <QString>
        - TRIGger:A:BUS:MIL1553B:DATA:VALue?
    """

    _WRAP_ARG_WITH_QUOTES = True


class TriggerABusMil1553bDataParity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:DATA:PARity`` command.

    **Description:**
        - This command specifies the parity to use when triggering on a MIL-STD-1553 bus data word
          parity bit. The trigger condition must be set to DATA.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:DATA:PARity?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:DATA:PARity?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:DATA:PARity value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:DATA:PARity {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
        - TRIGger:A:BUS:MIL1553B:DATA:PARity?

    **Info:**
        - ``0, ZERO`` sets the value to 0.
        - ``1, ONE`` sets the value to 1.
        - ``X, NOCARE`` sets the value to X ('don't care'), which is the default.
        - ``OFF`` sets the value to 0.
        - ``ON`` sets the value to 1.
    """


class TriggerABusMil1553bDataFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:DATA:FORMat`` command.

    **Description:**
        - This command specifies the format (binary or hex) of the bit pattern to use for a
          MIL-STD-1553 bus data word trigger. The trigger condition needs to be set to DATA.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:DATA:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:DATA:FORMat?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:DATA:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:DATA:FORMat {BINary|HEX}
        - TRIGger:A:BUS:MIL1553B:DATA:FORMat?

    **Info:**
        - ``BINary`` specifies the data format as binary.
        - ``HEX`` specifies the data format as hexadecimal.
    """


class TriggerABusMil1553bData(SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:DATA`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:DATA?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:DATA?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:MIL1553B:DATA:FORMat`` command.
        - ``.parity``: The ``TRIGger:A:BUS:MIL1553B:DATA:PARity`` command.
        - ``.value``: The ``TRIGger:A:BUS:MIL1553B:DATA:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusMil1553bDataFormat(device, f"{self._cmd_syntax}:FORMat")
        self._parity = TriggerABusMil1553bDataParity(device, f"{self._cmd_syntax}:PARity")
        self._value = TriggerABusMil1553bDataValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusMil1553bDataFormat:
        """Return the ``TRIGger:A:BUS:MIL1553B:DATA:FORMat`` command.

        **Description:**
            - This command specifies the format (binary or hex) of the bit pattern to use for a
              MIL-STD-1553 bus data word trigger. The trigger condition needs to be set to DATA.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:DATA:FORMat?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:DATA:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:DATA:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:DATA:FORMat {BINary|HEX}
            - TRIGger:A:BUS:MIL1553B:DATA:FORMat?

        **Info:**
            - ``BINary`` specifies the data format as binary.
            - ``HEX`` specifies the data format as hexadecimal.
        """
        return self._format

    @property
    def parity(self) -> TriggerABusMil1553bDataParity:
        """Return the ``TRIGger:A:BUS:MIL1553B:DATA:PARity`` command.

        **Description:**
            - This command specifies the parity to use when triggering on a MIL-STD-1553 bus data
              word parity bit. The trigger condition must be set to DATA.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:DATA:PARity?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:DATA:PARity?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:DATA:PARity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:DATA:PARity {0|1|X|ZERo|ONE|NOCARE|DONTCare|OFF|ON}
            - TRIGger:A:BUS:MIL1553B:DATA:PARity?

        **Info:**
            - ``0, ZERO`` sets the value to 0.
            - ``1, ONE`` sets the value to 1.
            - ``X, NOCARE`` sets the value to X ('don't care'), which is the default.
            - ``OFF`` sets the value to 0.
            - ``ON`` sets the value to 1.
        """
        return self._parity

    @property
    def value(self) -> TriggerABusMil1553bDataValue:
        """Return the ``TRIGger:A:BUS:MIL1553B:DATA:VALue`` command.

        **Description:**
            - This command specifies the value to use for a MIL-STD-1553 bus data word trigger. This
              is a 16-bit field. The default is all X's (don't care). The trigger condition must be
              set to DATA.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:DATA:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:DATA:VALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:DATA:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:DATA:VALue <QString>
            - TRIGger:A:BUS:MIL1553B:DATA:VALue?
        """
        return self._value


class TriggerABusMil1553bCondition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:CONDition`` command.

    **Description:**
        - This command specifies which word type or condition within a MIL-STD-1553 bus word to
          trigger on.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:CONDition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:CONDition?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:CONDition value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:CONDition {SYNC|COMMAND|STATUS|DATA|TIMe|ERRor}
        - TRIGger:A:BUS:MIL1553B:CONDition?

    **Info:**
        - ``SYNC`` refers to the 3-bit sync pulse that precedes each word.
        - ``COMMAND`` is one of 3 16-bit word types.
        - ``STATUS`` is one of 3 16-bit word types.
        - ``DATA`` is one of 3 16-bit word types.
        - ``TIMe`` specifies a trigger on either the RT (remote terminal response time), or the IMG
          (Inter-message Gap). Use the commands ``TRIGGER:A:BUS:MIL1553B:TIME:QUALIFIER``,
          ``TRIGGER:A:BUS:MIL1553B:TIME:LESSLIMIT``, and ``TRIGGER:A:BUS:MIL1553B:TIME:MORELIMIT``
          to specify the time parameters.
        - ``ERRor`` specifies to trigger upon a signaling error. (You can specify which type of
          error - Parity, Sync, Manchester or Non-contiguous Data - by using the
          ``TRIGGER:A:BUS:MIL1553B:ERRTYPE`` command.).
    """


class TriggerABusMil1553bCommandTrbit(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:COMMAND:TRBit`` command.

    **Description:**
        - This command specifies a trigger on either a 'transmit' or a 'receive' signal for the
          transmit/receive bit (bit 9) for a MIL-STD-1553 bus command word trigger. The trigger
          condition needs to be set to COMMAND.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:COMMAND:TRBit?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:TRBit?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:TRBit value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:COMMAND:TRBit {RX|TX|X|DONTCare}
        - TRIGger:A:BUS:MIL1553B:COMMAND:TRBit?

    **Info:**
        - ``TX`` (logic 1) directs the instrument to trigger on a TX or 'transmit' from a remote
          terminal .
        - ``RX`` (logic 0) directs the instrument to trigger on an RX or 'receive' from a remote
          terminal.
        - ``X, DONTCare`` indicates 'don't care'.
    """


class TriggerABusMil1553bCommandSubaddressFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat`` command.

    **Description:**
        - This command specifies the data format (binary or hex) of the sub-address field bit
          pattern to use in a MIL-STD-1553 bus command word sub-address trigger. The trigger
          condition needs to be set to COMMAND.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat?`` query and raise an AssertionError if
          the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat {BINary|HEX}
        - TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat?

    **Info:**
        - ``BINary`` specifies the data format as binary.
        - ``HEX`` specifies the data format as hexadecimal.
    """


class TriggerABusMil1553bCommandSubaddress(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress`` command.

    **Description:**
        - This command specifies the 5 bit sub-address to use in a MIL-STD-1553 bus command word
          sub-address trigger. When the sub-address value is set to 00000 or 11111 binary, it
          specifies that the command is a 'Mode Code' command. Any other value specifies that it is
          a 'Word Count' command. The default is all X's (don't care). The trigger condition needs
          to be set to COMMAND.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress <QString>
        - TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress?

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat`` command.
    """

    _WRAP_ARG_WITH_QUOTES = True

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusMil1553bCommandSubaddressFormat(
            device, f"{self._cmd_syntax}:FORMat"
        )

    @property
    def format(self) -> TriggerABusMil1553bCommandSubaddressFormat:
        """Return the ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat`` command.

        **Description:**
            - This command specifies the data format (binary or hex) of the sub-address field bit
              pattern to use in a MIL-STD-1553 bus command word sub-address trigger. The trigger
              condition needs to be set to COMMAND.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat?`` query and raise an
              AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat {BINary|HEX}
            - TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat?

        **Info:**
            - ``BINary`` specifies the data format as binary.
            - ``HEX`` specifies the data format as hexadecimal.
        """
        return self._format


class TriggerABusMil1553bCommandParity(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:COMMAND:PARity`` command.

    **Description:**
        - This command specifies the parity to use in a MIL-STD-1553 bus command word trigger. The
          trigger condition needs to be set to COMMAND.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:COMMAND:PARity?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:PARity?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:PARity value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:COMMAND:PARity {0|1|X|ZERo|ONE|NOCARE|OFF|ON|DONTCare}
        - TRIGger:A:BUS:MIL1553B:COMMAND:PARity?

    **Info:**
        - ``0``
        - ``1``
        - ``X`` sets the value to X ('don't care'), which is the default.
        - ``ZERO`` sets the value to 0.
        - ``ONE`` sets the value to 1.
        - ``NOCARE`` sets the value to X ('don't care'), which is the default.
        - ``OFF`` sets the value to 0.
        - ``ON`` sets the value to 1.
    """


class TriggerABusMil1553bCommandCountFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat`` command.

    **Description:**
        - This command specifies the data format (binary or hex) of the bit pattern for the 5-bit
          Word Count/Mode Code field to use in a MIL-STD-1553 bus command word trigger. The trigger
          condition needs to be set to COMMAND.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat {BINary|HEX}
        - TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat?

    **Info:**
        - ``BINary`` specifies the data format as binary.
        - ``HEX`` specifies the data format as hexadecimal.
    """


class TriggerABusMil1553bCommandCount(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt`` command.

    **Description:**
        - This command specifies the bit pattern for the 5-bit Word Count/Mode Code sub-address
          field to use in a MIL-STD-1553 bus command word trigger. (Use the command
          ``TRIGGER:A:BUS:MIL1553B:COMMAND:SUBADDRESS`` to specify Word Count or Mode Code.) In Word
          Count mode, this field defines the number of data words to be transmitted or received,
          depending on the T/R bit setting. (Use the command
          ``TRIGGER:A:BUS:MIL1553B:COMMAND:TRBIT`` to set the T/R bit.) A word count value of 0
          actually indicates a transfer of 32 data words. The trigger condition needs to be set to
          COMMAND.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:COMMAND:COUNt <QString>
        - TRIGger:A:BUS:MIL1553B:COMMAND:COUNt?

    **Info:**
        - ``QString`` is a quoted string of up to 5 characters, where the allowable characters are
          0, 1 and X.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat`` command.
    """

    _WRAP_ARG_WITH_QUOTES = True

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusMil1553bCommandCountFormat(device, f"{self._cmd_syntax}:FORMat")

    @property
    def format(self) -> TriggerABusMil1553bCommandCountFormat:
        """Return the ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat`` command.

        **Description:**
            - This command specifies the data format (binary or hex) of the bit pattern for the
              5-bit Word Count/Mode Code field to use in a MIL-STD-1553 bus command word trigger.
              The trigger condition needs to be set to COMMAND.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat {BINary|HEX}
            - TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat?

        **Info:**
            - ``BINary`` specifies the data format as binary.
            - ``HEX`` specifies the data format as hexadecimal.
        """
        return self._format


class TriggerABusMil1553bCommandAddressValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue`` command.

    **Description:**
        - This command specifies the value of the 5-bit remote terminal address to use in a
          MIL-STD-1553 bus command word trigger. The trigger condition needs to be set to COMMAND.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue <QString>
        - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue?
    """

    _WRAP_ARG_WITH_QUOTES = True


class TriggerABusMil1553bCommandAddressQualifier(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier`` command.

    **Description:**
        - This command specifies the qualifier to use when triggering on a MIL-STD-1553 bus command
          word remote terminal address field. The trigger condition needs to be set to COMMAND.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier?`` query and raise an AssertionError if
          the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier {LESSthan|MOREthan|EQual|UNEQual|LESSEQual|MOREEQual}
        - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier?

    **Info:**
        - ``LESSthan`` sets the Command Address qualifier to less than.
        - ``MOREthan`` sets the Command Address qualifier to greater than.
        - ``EQual`` sets the Command Address qualifier to equal.
        - ``UNEQual`` sets the Command Address qualifier to not equal.
        - ``LESSEQual`` sets the Command Address qualifier to less than or equal.
        - ``MOREEQual`` sets the Command Address qualifier to greater than or equal.
    """  # noqa: E501


class TriggerABusMil1553bCommandAddressFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat`` command.

    **Description:**
        - This command sets the data format of the address (either binary or hex) to use in a
          MIL-STD-1553 bus command word trigger. The trigger condition needs to be set to COMMAND.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat?`` query and raise an AssertionError if
          the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat {BINary|HEX}
        - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat?

    **Info:**
        - ``BINary`` specifies the data format as binary.
        - ``HEX`` specifies the data format as hexadecimal.
    """


class TriggerABusMil1553bCommandAddress(SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat`` command.
        - ``.qualifier``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier`` command.
        - ``.value``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusMil1553bCommandAddressFormat(device, f"{self._cmd_syntax}:FORMat")
        self._qualifier = TriggerABusMil1553bCommandAddressQualifier(
            device, f"{self._cmd_syntax}:QUALifier"
        )
        self._value = TriggerABusMil1553bCommandAddressValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusMil1553bCommandAddressFormat:
        """Return the ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat`` command.

        **Description:**
            - This command sets the data format of the address (either binary or hex) to use in a
              MIL-STD-1553 bus command word trigger. The trigger condition needs to be set to
              COMMAND.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat?`` query and raise an AssertionError
              if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat {BINary|HEX}
            - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat?

        **Info:**
            - ``BINary`` specifies the data format as binary.
            - ``HEX`` specifies the data format as hexadecimal.
        """
        return self._format

    @property
    def qualifier(self) -> TriggerABusMil1553bCommandAddressQualifier:
        """Return the ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier`` command.

        **Description:**
            - This command specifies the qualifier to use when triggering on a MIL-STD-1553 bus
              command word remote terminal address field. The trigger condition needs to be set to
              COMMAND.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier?`` query and raise an
              AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier {LESSthan|MOREthan|EQual|UNEQual|LESSEQual|MOREEQual}
            - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier?

        **Info:**
            - ``LESSthan`` sets the Command Address qualifier to less than.
            - ``MOREthan`` sets the Command Address qualifier to greater than.
            - ``EQual`` sets the Command Address qualifier to equal.
            - ``UNEQual`` sets the Command Address qualifier to not equal.
            - ``LESSEQual`` sets the Command Address qualifier to less than or equal.
            - ``MOREEQual`` sets the Command Address qualifier to greater than or equal.
        """  # noqa: E501
        return self._qualifier

    @property
    def value(self) -> TriggerABusMil1553bCommandAddressValue:
        """Return the ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue`` command.

        **Description:**
            - This command specifies the value of the 5-bit remote terminal address to use in a
              MIL-STD-1553 bus command word trigger. The trigger condition needs to be set to
              COMMAND.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue <QString>
            - TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue?
        """
        return self._value


class TriggerABusMil1553bCommand(SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B:COMMAND`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:COMMAND?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:COMMAND?``
          query and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.address``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess`` command tree.
        - ``.count``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt`` command.
        - ``.parity``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:PARity`` command.
        - ``.subaddress``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress`` command.
        - ``.trbit``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:TRBit`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._address = TriggerABusMil1553bCommandAddress(device, f"{self._cmd_syntax}:ADDRess")
        self._count = TriggerABusMil1553bCommandCount(device, f"{self._cmd_syntax}:COUNt")
        self._parity = TriggerABusMil1553bCommandParity(device, f"{self._cmd_syntax}:PARity")
        self._subaddress = TriggerABusMil1553bCommandSubaddress(
            device, f"{self._cmd_syntax}:SUBADdress"
        )
        self._trbit = TriggerABusMil1553bCommandTrbit(device, f"{self._cmd_syntax}:TRBit")

    @property
    def address(self) -> TriggerABusMil1553bCommandAddress:
        """Return the ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:FORMat`` command.
            - ``.qualifier``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:QUALifier`` command.
            - ``.value``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess:VALue`` command.
        """
        return self._address

    @property
    def count(self) -> TriggerABusMil1553bCommandCount:
        """Return the ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt`` command.

        **Description:**
            - This command specifies the bit pattern for the 5-bit Word Count/Mode Code sub-address
              field to use in a MIL-STD-1553 bus command word trigger. (Use the command
              ``TRIGGER:A:BUS:MIL1553B:COMMAND:SUBADDRESS`` to specify Word Count or Mode Code.) In
              Word Count mode, this field defines the number of data words to be transmitted or
              received, depending on the T/R bit setting. (Use the command
              ``TRIGGER:A:BUS:MIL1553B:COMMAND:TRBIT`` to set the T/R bit.) A word count value of 0
              actually indicates a transfer of 32 data words. The trigger condition needs to be set
              to COMMAND.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:COMMAND:COUNt <QString>
            - TRIGger:A:BUS:MIL1553B:COMMAND:COUNt?

        **Info:**
            - ``QString`` is a quoted string of up to 5 characters, where the allowable characters
              are 0, 1 and X.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt:FORMat`` command.
        """
        return self._count

    @property
    def parity(self) -> TriggerABusMil1553bCommandParity:
        """Return the ``TRIGger:A:BUS:MIL1553B:COMMAND:PARity`` command.

        **Description:**
            - This command specifies the parity to use in a MIL-STD-1553 bus command word trigger.
              The trigger condition needs to be set to COMMAND.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:COMMAND:PARity?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:PARity?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:PARity value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:COMMAND:PARity {0|1|X|ZERo|ONE|NOCARE|OFF|ON|DONTCare}
            - TRIGger:A:BUS:MIL1553B:COMMAND:PARity?

        **Info:**
            - ``0``
            - ``1``
            - ``X`` sets the value to X ('don't care'), which is the default.
            - ``ZERO`` sets the value to 0.
            - ``ONE`` sets the value to 1.
            - ``NOCARE`` sets the value to X ('don't care'), which is the default.
            - ``OFF`` sets the value to 0.
            - ``ON`` sets the value to 1.
        """
        return self._parity

    @property
    def subaddress(self) -> TriggerABusMil1553bCommandSubaddress:
        """Return the ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress`` command.

        **Description:**
            - This command specifies the 5 bit sub-address to use in a MIL-STD-1553 bus command word
              sub-address trigger. When the sub-address value is set to 00000 or 11111 binary, it
              specifies that the command is a 'Mode Code' command. Any other value specifies that it
              is a 'Word Count' command. The default is all X's (don't care). The trigger condition
              needs to be set to COMMAND.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress <QString>
            - TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress?

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress:FORMat`` command.
        """
        return self._subaddress

    @property
    def trbit(self) -> TriggerABusMil1553bCommandTrbit:
        """Return the ``TRIGger:A:BUS:MIL1553B:COMMAND:TRBit`` command.

        **Description:**
            - This command specifies a trigger on either a 'transmit' or a 'receive' signal for the
              transmit/receive bit (bit 9) for a MIL-STD-1553 bus command word trigger. The trigger
              condition needs to be set to COMMAND.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:COMMAND:TRBit?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:TRBit?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:COMMAND:TRBit value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:COMMAND:TRBit {RX|TX|X|DONTCare}
            - TRIGger:A:BUS:MIL1553B:COMMAND:TRBit?

        **Info:**
            - ``TX`` (logic 1) directs the instrument to trigger on a TX or 'transmit' from a remote
              terminal .
            - ``RX`` (logic 0) directs the instrument to trigger on an RX or 'receive' from a remote
              terminal.
            - ``X, DONTCare`` indicates 'don't care'.
        """
        return self._trbit


class TriggerABusMil1553b(SCPICmdRead):
    """The ``TRIGger:A:BUS:MIL1553B`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.command``: The ``TRIGger:A:BUS:MIL1553B:COMMAND`` command tree.
        - ``.condition``: The ``TRIGger:A:BUS:MIL1553B:CONDition`` command.
        - ``.data``: The ``TRIGger:A:BUS:MIL1553B:DATA`` command tree.
        - ``.errtype``: The ``TRIGger:A:BUS:MIL1553B:ERRTYPE`` command.
        - ``.status``: The ``TRIGger:A:BUS:MIL1553B:STATUS`` command tree.
        - ``.time``: The ``TRIGger:A:BUS:MIL1553B:TIME`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._command = TriggerABusMil1553bCommand(device, f"{self._cmd_syntax}:COMMAND")
        self._condition = TriggerABusMil1553bCondition(device, f"{self._cmd_syntax}:CONDition")
        self._data = TriggerABusMil1553bData(device, f"{self._cmd_syntax}:DATA")
        self._errtype = TriggerABusMil1553bErrtype(device, f"{self._cmd_syntax}:ERRTYPE")
        self._status = TriggerABusMil1553bStatus(device, f"{self._cmd_syntax}:STATUS")
        self._time = TriggerABusMil1553bTime(device, f"{self._cmd_syntax}:TIME")

    @property
    def command(self) -> TriggerABusMil1553bCommand:
        """Return the ``TRIGger:A:BUS:MIL1553B:COMMAND`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:COMMAND?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:COMMAND?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.address``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:ADDRess`` command tree.
            - ``.count``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:COUNt`` command.
            - ``.parity``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:PARity`` command.
            - ``.subaddress``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:SUBADdress`` command.
            - ``.trbit``: The ``TRIGger:A:BUS:MIL1553B:COMMAND:TRBit`` command.
        """
        return self._command

    @property
    def condition(self) -> TriggerABusMil1553bCondition:
        """Return the ``TRIGger:A:BUS:MIL1553B:CONDition`` command.

        **Description:**
            - This command specifies which word type or condition within a MIL-STD-1553 bus word to
              trigger on.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:CONDition?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:CONDition?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:CONDition value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:CONDition {SYNC|COMMAND|STATUS|DATA|TIMe|ERRor}
            - TRIGger:A:BUS:MIL1553B:CONDition?

        **Info:**
            - ``SYNC`` refers to the 3-bit sync pulse that precedes each word.
            - ``COMMAND`` is one of 3 16-bit word types.
            - ``STATUS`` is one of 3 16-bit word types.
            - ``DATA`` is one of 3 16-bit word types.
            - ``TIMe`` specifies a trigger on either the RT (remote terminal response time), or the
              IMG (Inter-message Gap). Use the commands ``TRIGGER:A:BUS:MIL1553B:TIME:QUALIFIER``,
              ``TRIGGER:A:BUS:MIL1553B:TIME:LESSLIMIT``, and
              ``TRIGGER:A:BUS:MIL1553B:TIME:MORELIMIT`` to specify the time parameters.
            - ``ERRor`` specifies to trigger upon a signaling error. (You can specify which type of
              error - Parity, Sync, Manchester or Non-contiguous Data - by using the
              ``TRIGGER:A:BUS:MIL1553B:ERRTYPE`` command.).
        """
        return self._condition

    @property
    def data(self) -> TriggerABusMil1553bData:
        """Return the ``TRIGger:A:BUS:MIL1553B:DATA`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:DATA?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:DATA?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:MIL1553B:DATA:FORMat`` command.
            - ``.parity``: The ``TRIGger:A:BUS:MIL1553B:DATA:PARity`` command.
            - ``.value``: The ``TRIGger:A:BUS:MIL1553B:DATA:VALue`` command.
        """
        return self._data

    @property
    def errtype(self) -> TriggerABusMil1553bErrtype:
        """Return the ``TRIGger:A:BUS:MIL1553B:ERRTYPE`` command.

        **Description:**
            - This command specifies the signaling error type to use for a MIL-STD-1553 bus data
              word trigger: Parity, Sync, Manchester, or Data. The trigger condition must be set to
              ERRor.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:ERRTYPE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:ERRTYPE?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:MIL1553B:ERRTYPE value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:MIL1553B:ERRTYPE {PARity|SYNC|MANCHester|DATA}
            - TRIGger:A:BUS:MIL1553B:ERRTYPE?

        **Info:**
            - ``PARity`` - a failed parity check.
            - ``SYNc`` - the high to low, or low to high transition doesn't happen in the middle of
              the sync time as it should.
            - ``MANCHester`` - no transition in a bit time.
            - ``DATA`` - a non-contiguous data error.
        """
        return self._errtype

    @property
    def status(self) -> TriggerABusMil1553bStatus:
        """Return the ``TRIGger:A:BUS:MIL1553B:STATUS`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:STATUS?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.address``: The ``TRIGger:A:BUS:MIL1553B:STATUS:ADDRess`` command tree.
            - ``.bit``: The ``TRIGger:A:BUS:MIL1553B:STATUS:BIT`` command tree.
        """
        return self._status

    @property
    def time(self) -> TriggerABusMil1553bTime:
        """Return the ``TRIGger:A:BUS:MIL1553B:TIME`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B:TIME?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B:TIME?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.lesslimit``: The ``TRIGger:A:BUS:MIL1553B:TIME:LESSLimit`` command.
            - ``.morelimit``: The ``TRIGger:A:BUS:MIL1553B:TIME:MORELimit`` command.
            - ``.qualifier``: The ``TRIGger:A:BUS:MIL1553B:TIME:QUALifier`` command.
        """
        return self._time


class TriggerABusLinIdentifierValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:LIN:IDentifier:VALue`` command.

    **Description:**
        - This command sets or queries the LIN trigger identifier value.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:IDentifier:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:IDentifier:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:LIN:IDentifier:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:LIN:IDentifier:VALue <string>
        - TRIGger:A:BUS:LIN:IDentifier:VALue?

    **Info:**
        - ``<string>`` specifies the identifier value.
    """


class TriggerABusLinIdentifierFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:LIN:IDentifier:FORMat`` command.

    **Description:**
        - This command sets or queries the LIN bus trigger identifier format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:IDentifier:FORMat?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:IDentifier:FORMat?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:LIN:IDentifier:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:LIN:IDentifier:FORMat {BINary|HEX}
        - TRIGger:A:BUS:LIN:IDentifier:FORMat?

    **Info:**
        - ``BINary`` specifies the identifier format as binary.
        - ``HEX`` specifies the identifier format as hexadecimal.
    """


class TriggerABusLinIdentifier(SCPICmdRead):
    """The ``TRIGger:A:BUS:LIN:IDentifier`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:IDentifier?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:IDentifier?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:LIN:IDentifier:FORMat`` command.
        - ``.value``: The ``TRIGger:A:BUS:LIN:IDentifier:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusLinIdentifierFormat(device, f"{self._cmd_syntax}:FORMat")
        self._value = TriggerABusLinIdentifierValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusLinIdentifierFormat:
        """Return the ``TRIGger:A:BUS:LIN:IDentifier:FORMat`` command.

        **Description:**
            - This command sets or queries the LIN bus trigger identifier format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:IDentifier:FORMat?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:LIN:IDentifier:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:LIN:IDentifier:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:LIN:IDentifier:FORMat {BINary|HEX}
            - TRIGger:A:BUS:LIN:IDentifier:FORMat?

        **Info:**
            - ``BINary`` specifies the identifier format as binary.
            - ``HEX`` specifies the identifier format as hexadecimal.
        """
        return self._format

    @property
    def value(self) -> TriggerABusLinIdentifierValue:
        """Return the ``TRIGger:A:BUS:LIN:IDentifier:VALue`` command.

        **Description:**
            - This command sets or queries the LIN trigger identifier value.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:IDentifier:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:LIN:IDentifier:VALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:LIN:IDentifier:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:LIN:IDentifier:VALue <string>
            - TRIGger:A:BUS:LIN:IDentifier:VALue?

        **Info:**
            - ``<string>`` specifies the identifier value.
        """
        return self._value


class TriggerABusLinErrtype(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:LIN:ERRTYPE`` command.

    **Description:**
        - This command sets or queries the LIN bus trigger error type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:ERRTYPE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:ERRTYPE?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:LIN:ERRTYPE value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:LIN:ERRTYPE {CHecksum|PARity|SYNC}
        - TRIGger:A:BUS:LIN:ERRTYPE?

    **Info:**
        - ``CHecksum`` specifies the error type is checksum.
        - ``PARity`` specifies the error type is parity.
        - ``SYNC`` specifies the error type is sync.
    """


class TriggerABusLinDataValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:LIN:DATa:VALue`` command.

    **Description:**
        - This command sets or queries the LIN bus trigger data value.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:DATa:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:DATa:VALue?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:LIN:DATa:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:LIN:DATa:VALue <string>
        - TRIGger:A:BUS:LIN:DATa:VALue?

    **Info:**
        - ``<string>`` specifies the data value.
    """


class TriggerABusLinDataSize(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:LIN:DATa:SIZe`` command.

    **Description:**
        - This command sets or queries the LIN bus trigger data size (the number of contiguous CAN
          data bytes to trigger on).

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:DATa:SIZe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:DATa:SIZe?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:LIN:DATa:SIZe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:LIN:DATa:SIZe <nr3>
        - TRIGger:A:BUS:LIN:DATa:SIZe?
    """


class TriggerABusLinDataQualifier(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:LIN:DATa:QUALifier`` command.

    **Description:**
        - This command sets or queries the LIN bus trigger data qualifier.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:DATa:QUALifier?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:DATa:QUALifier?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:LIN:DATa:QUALifier value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:LIN:DATa:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
        - TRIGger:A:BUS:LIN:DATa:QUALifier?
    """


class TriggerABusLinDataFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:LIN:DATa:FORMat`` command.

    **Description:**
        - This command sets or queries the LIN bus trigger data format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:DATa:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:DATa:FORMat?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:LIN:DATa:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:LIN:DATa:FORMat {BINary|HEX}
        - TRIGger:A:BUS:LIN:DATa:FORMat?

    **Info:**
        - ``BINary`` specifies the data format as binary.
        - ``HEX`` specifies the data format as hexadecimal.
    """


class TriggerABusLinData(SCPICmdRead):
    """The ``TRIGger:A:BUS:LIN:DATa`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:DATa?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:LIN:DATa:FORMat`` command.
        - ``.qualifier``: The ``TRIGger:A:BUS:LIN:DATa:QUALifier`` command.
        - ``.size``: The ``TRIGger:A:BUS:LIN:DATa:SIZe`` command.
        - ``.value``: The ``TRIGger:A:BUS:LIN:DATa:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusLinDataFormat(device, f"{self._cmd_syntax}:FORMat")
        self._qualifier = TriggerABusLinDataQualifier(device, f"{self._cmd_syntax}:QUALifier")
        self._size = TriggerABusLinDataSize(device, f"{self._cmd_syntax}:SIZe")
        self._value = TriggerABusLinDataValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusLinDataFormat:
        """Return the ``TRIGger:A:BUS:LIN:DATa:FORMat`` command.

        **Description:**
            - This command sets or queries the LIN bus trigger data format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:DATa:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:DATa:FORMat?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:LIN:DATa:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:LIN:DATa:FORMat {BINary|HEX}
            - TRIGger:A:BUS:LIN:DATa:FORMat?

        **Info:**
            - ``BINary`` specifies the data format as binary.
            - ``HEX`` specifies the data format as hexadecimal.
        """
        return self._format

    @property
    def qualifier(self) -> TriggerABusLinDataQualifier:
        """Return the ``TRIGger:A:BUS:LIN:DATa:QUALifier`` command.

        **Description:**
            - This command sets or queries the LIN bus trigger data qualifier.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:DATa:QUALifier?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:LIN:DATa:QUALifier?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:LIN:DATa:QUALifier value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:LIN:DATa:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
            - TRIGger:A:BUS:LIN:DATa:QUALifier?
        """
        return self._qualifier

    @property
    def size(self) -> TriggerABusLinDataSize:
        """Return the ``TRIGger:A:BUS:LIN:DATa:SIZe`` command.

        **Description:**
            - This command sets or queries the LIN bus trigger data size (the number of contiguous
              CAN data bytes to trigger on).

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:DATa:SIZe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:DATa:SIZe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:LIN:DATa:SIZe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:LIN:DATa:SIZe <nr3>
            - TRIGger:A:BUS:LIN:DATa:SIZe?
        """
        return self._size

    @property
    def value(self) -> TriggerABusLinDataValue:
        """Return the ``TRIGger:A:BUS:LIN:DATa:VALue`` command.

        **Description:**
            - This command sets or queries the LIN bus trigger data value.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:DATa:VALue?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:DATa:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:LIN:DATa:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:LIN:DATa:VALue <string>
            - TRIGger:A:BUS:LIN:DATa:VALue?

        **Info:**
            - ``<string>`` specifies the data value.
        """
        return self._value


class TriggerABusLinCondition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:LIN:CONDition`` command.

    **Description:**
        - This command sets or queries the LIN bus trigger condition.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:CONDition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:CONDition?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:LIN:CONDition value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:LIN:CONDition {DATA|IDANDDATA|ERRor|IDentifier|SLEEP|SYNC|WAKEup}
        - TRIGger:A:BUS:LIN:CONDition?
    """


class TriggerABusLin(SCPICmdRead):
    """The ``TRIGger:A:BUS:LIN`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN?`` query and raise
          an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.condition``: The ``TRIGger:A:BUS:LIN:CONDition`` command.
        - ``.data``: The ``TRIGger:A:BUS:LIN:DATa`` command tree.
        - ``.errtype``: The ``TRIGger:A:BUS:LIN:ERRTYPE`` command.
        - ``.identifier``: The ``TRIGger:A:BUS:LIN:IDentifier`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._condition = TriggerABusLinCondition(device, f"{self._cmd_syntax}:CONDition")
        self._data = TriggerABusLinData(device, f"{self._cmd_syntax}:DATa")
        self._errtype = TriggerABusLinErrtype(device, f"{self._cmd_syntax}:ERRTYPE")
        self._identifier = TriggerABusLinIdentifier(device, f"{self._cmd_syntax}:IDentifier")

    @property
    def condition(self) -> TriggerABusLinCondition:
        """Return the ``TRIGger:A:BUS:LIN:CONDition`` command.

        **Description:**
            - This command sets or queries the LIN bus trigger condition.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:CONDition?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:CONDition?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:LIN:CONDition value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:LIN:CONDition {DATA|IDANDDATA|ERRor|IDentifier|SLEEP|SYNC|WAKEup}
            - TRIGger:A:BUS:LIN:CONDition?
        """
        return self._condition

    @property
    def data(self) -> TriggerABusLinData:
        """Return the ``TRIGger:A:BUS:LIN:DATa`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:DATa?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:LIN:DATa:FORMat`` command.
            - ``.qualifier``: The ``TRIGger:A:BUS:LIN:DATa:QUALifier`` command.
            - ``.size``: The ``TRIGger:A:BUS:LIN:DATa:SIZe`` command.
            - ``.value``: The ``TRIGger:A:BUS:LIN:DATa:VALue`` command.
        """
        return self._data

    @property
    def errtype(self) -> TriggerABusLinErrtype:
        """Return the ``TRIGger:A:BUS:LIN:ERRTYPE`` command.

        **Description:**
            - This command sets or queries the LIN bus trigger error type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:ERRTYPE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:ERRTYPE?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:LIN:ERRTYPE value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:LIN:ERRTYPE {CHecksum|PARity|SYNC}
            - TRIGger:A:BUS:LIN:ERRTYPE?

        **Info:**
            - ``CHecksum`` specifies the error type is checksum.
            - ``PARity`` specifies the error type is parity.
            - ``SYNC`` specifies the error type is sync.
        """
        return self._errtype

    @property
    def identifier(self) -> TriggerABusLinIdentifier:
        """Return the ``TRIGger:A:BUS:LIN:IDentifier`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN:IDentifier?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN:IDentifier?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:LIN:IDentifier:FORMat`` command.
            - ``.value``: The ``TRIGger:A:BUS:LIN:IDentifier:VALue`` command.
        """
        return self._identifier


class TriggerABusI2cDataValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:I2C:DATa:VALue`` command.

    **Description:**
        - This command sets or queries the data value of the data token for an I2C trigger when the
          trigger condition is Data or Addr + Data.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:DATa:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:DATa:VALue?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:I2C:DATa:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:I2C:DATa:VALue <string>
        - TRIGger:A:BUS:I2C:DATa:VALue?

    **Info:**
        - ``<string>`` specifies the data value. The valid characters are 0, 1, or X representing a
          binary number.
    """


class TriggerABusI2cDataSize(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:I2C:DATa:SIZe`` command.

    **Description:**
        - This command sets or queries the length of the data string in bytes to be used for an I2C
          bus trigger when the trigger condition is Data or Addr + Data.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:DATa:SIZe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:DATa:SIZe?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:I2C:DATa:SIZe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:I2C:DATa:SIZe <NR3>
        - TRIGger:A:BUS:I2C:DATa:SIZe?

    **Info:**
        - ``<NR3>`` specifies the data size in bytes.
    """


class TriggerABusI2cDataFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:I2C:DATa:FORMat`` command.

    **Description:**
        - This command sets or queries the trigger data format for the I2C bus.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:DATa:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:DATa:FORMat?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:I2C:DATa:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:I2C:DATa:FORMat {BINary|HEXadecimal}
        - TRIGger:A:BUS:I2C:DATa:FORMat?

    **Info:**
        - ``BINary`` specifies the data format for the I2C bus trigger as Binary.
        - ``HEXadecimal`` specifies the data format for the I2C bus trigger as Hexadecimal.
    """


class TriggerABusI2cDataDirection(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:I2C:DATa:DIRection`` command.

    **Description:**
        - This command sets or queries the data direction for the I2C bus.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:DATa:DIRection?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:DATa:DIRection?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:I2C:DATa:DIRection value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:I2C:DATa:DIRection {DONTCare|READ|WRITE}
        - TRIGger:A:BUS:I2C:DATa:DIRection?

    **Info:**
        - ``DONTCare`` sets the data direction for the I2C bus to Don't Care.
        - ``READ`` sets the data direction for the I2C bus to Read.
        - ``WRITE`` sets the data direction for the I2C bus to Write.
    """


class TriggerABusI2cData(SCPICmdRead):
    """The ``TRIGger:A:BUS:I2C:DATa`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:DATa?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.direction``: The ``TRIGger:A:BUS:I2C:DATa:DIRection`` command.
        - ``.format``: The ``TRIGger:A:BUS:I2C:DATa:FORMat`` command.
        - ``.size``: The ``TRIGger:A:BUS:I2C:DATa:SIZe`` command.
        - ``.value``: The ``TRIGger:A:BUS:I2C:DATa:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._direction = TriggerABusI2cDataDirection(device, f"{self._cmd_syntax}:DIRection")
        self._format = TriggerABusI2cDataFormat(device, f"{self._cmd_syntax}:FORMat")
        self._size = TriggerABusI2cDataSize(device, f"{self._cmd_syntax}:SIZe")
        self._value = TriggerABusI2cDataValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def direction(self) -> TriggerABusI2cDataDirection:
        """Return the ``TRIGger:A:BUS:I2C:DATa:DIRection`` command.

        **Description:**
            - This command sets or queries the data direction for the I2C bus.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:DATa:DIRection?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:I2C:DATa:DIRection?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:I2C:DATa:DIRection value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:I2C:DATa:DIRection {DONTCare|READ|WRITE}
            - TRIGger:A:BUS:I2C:DATa:DIRection?

        **Info:**
            - ``DONTCare`` sets the data direction for the I2C bus to Don't Care.
            - ``READ`` sets the data direction for the I2C bus to Read.
            - ``WRITE`` sets the data direction for the I2C bus to Write.
        """
        return self._direction

    @property
    def format(self) -> TriggerABusI2cDataFormat:
        """Return the ``TRIGger:A:BUS:I2C:DATa:FORMat`` command.

        **Description:**
            - This command sets or queries the trigger data format for the I2C bus.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:DATa:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:DATa:FORMat?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:I2C:DATa:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:I2C:DATa:FORMat {BINary|HEXadecimal}
            - TRIGger:A:BUS:I2C:DATa:FORMat?

        **Info:**
            - ``BINary`` specifies the data format for the I2C bus trigger as Binary.
            - ``HEXadecimal`` specifies the data format for the I2C bus trigger as Hexadecimal.
        """
        return self._format

    @property
    def size(self) -> TriggerABusI2cDataSize:
        """Return the ``TRIGger:A:BUS:I2C:DATa:SIZe`` command.

        **Description:**
            - This command sets or queries the length of the data string in bytes to be used for an
              I2C bus trigger when the trigger condition is Data or Addr + Data.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:DATa:SIZe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:DATa:SIZe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:I2C:DATa:SIZe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:I2C:DATa:SIZe <NR3>
            - TRIGger:A:BUS:I2C:DATa:SIZe?

        **Info:**
            - ``<NR3>`` specifies the data size in bytes.
        """
        return self._size

    @property
    def value(self) -> TriggerABusI2cDataValue:
        """Return the ``TRIGger:A:BUS:I2C:DATa:VALue`` command.

        **Description:**
            - This command sets or queries the data value of the data token for an I2C trigger when
              the trigger condition is Data or Addr + Data.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:DATa:VALue?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:DATa:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:I2C:DATa:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:I2C:DATa:VALue <string>
            - TRIGger:A:BUS:I2C:DATa:VALue?

        **Info:**
            - ``<string>`` specifies the data value. The valid characters are 0, 1, or X
              representing a binary number.
        """
        return self._value


class TriggerABusI2cCondition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:I2C:CONDition`` command.

    **Description:**
        - This command sets or queries the trigger condition for the I2C bus.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:CONDition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:CONDition?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:I2C:CONDition value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:I2C:CONDition {ACKMISS|ADDress|ADDRANDDATA|DATa|REPEATstart|STARt|STOP}
        - TRIGger:A:BUS:I2C:CONDition?

    **Info:**
        - ``ACKMISS`` sets the trigger condition to Missing Acknowledgement.
        - ``ADDRess`` sets the trigger condition to Address.
        - ``ADDRANDDATA`` sets the trigger condition to Address and Data.
        - ``DATA`` sets the trigger condition to data.
        - ``REPEATstart`` sets the trigger condition to Repeat of Start.
        - ``STARt`` sets the trigger condition to Start.
        - ``STOP`` sets the trigger condition to Stop.
    """


class TriggerABusI2cAddressValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:I2C:ADDress:VALue`` command.

    **Description:**
        - This command sets or queries the binary address string used for the I2C trigger of the
          bus.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:ADDress:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:ADDress:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:I2C:ADDress:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:I2C:ADDress:VALue <string>
        - TRIGger:A:BUS:I2C:ADDress:VALue?

    **Info:**
        - ``<string>`` specifies the address value. This is either 7 bits or 10 bits depending on
          the address mode. The valid characters are 0-9, A-F, and X for addresses in hexadecimal
          format and 0, 1, and X otherwise.
    """


class TriggerABusI2cAddressType(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:I2C:ADDress:TYPe`` command.

    **Description:**
        - This command sets or queries the address type for the I2C bus trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:ADDress:TYPe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:ADDress:TYPe?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:I2C:ADDress:TYPe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:I2C:ADDress:TYPe {NONe|STARtbyte|HSMODe|GENeralcall|EEPROm|CBUS}
        - TRIGger:A:BUS:I2C:ADDress:TYPe?

    **Info:**
        - ``NONe`` specifies the address type as None.
        - ``STARtbyte`` specifies the address type as Start byte.
        - ``HSMODe`` specifies the address type as High Speed mode.
        - ``GENeralcall`` specifies the address type as General Call.
        - ``EEPROm`` specifies the address type as EEPROM.
        - ``CBUS`` specifies the address type as CBUS.
    """


class TriggerABusI2cAddressMode(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:I2C:ADDress:MODe`` command.

    **Description:**
        - This command sets or queries the address mode for the I2C bus trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:ADDress:MODe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:ADDress:MODe?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:I2C:ADDress:MODe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:I2C:ADDress:MODe {ADDR7|ADDR10}
        - TRIGger:A:BUS:I2C:ADDress:MODe?

    **Info:**
        - ``ADDR7`` specifies the address mode as ADDR7.
        - ``ADDR10`` specifies the address mode as ADDR10.
    """


class TriggerABusI2cAddressFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:I2C:ADDress:FORMat`` command.

    **Description:**
        - This command sets or queries the address format for the I2C bus trigger.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:ADDress:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:ADDress:FORMat?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:I2C:ADDress:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:I2C:ADDress:FORMat {BINary|HEXadecimal}
        - TRIGger:A:BUS:I2C:ADDress:FORMat?

    **Info:**
        - ``BINary`` specifies the address format for the I2C bus trigger as Binary.
        - ``HEXadecimal`` specifies the address format for the I2C bus trigger as Hexadecimal.
    """


class TriggerABusI2cAddress(SCPICmdRead):
    """The ``TRIGger:A:BUS:I2C:ADDress`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:ADDress?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:ADDress?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:I2C:ADDress:FORMat`` command.
        - ``.mode``: The ``TRIGger:A:BUS:I2C:ADDress:MODe`` command.
        - ``.type``: The ``TRIGger:A:BUS:I2C:ADDress:TYPe`` command.
        - ``.value``: The ``TRIGger:A:BUS:I2C:ADDress:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusI2cAddressFormat(device, f"{self._cmd_syntax}:FORMat")
        self._mode = TriggerABusI2cAddressMode(device, f"{self._cmd_syntax}:MODe")
        self._type = TriggerABusI2cAddressType(device, f"{self._cmd_syntax}:TYPe")
        self._value = TriggerABusI2cAddressValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusI2cAddressFormat:
        """Return the ``TRIGger:A:BUS:I2C:ADDress:FORMat`` command.

        **Description:**
            - This command sets or queries the address format for the I2C bus trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:ADDress:FORMat?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:I2C:ADDress:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:I2C:ADDress:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:I2C:ADDress:FORMat {BINary|HEXadecimal}
            - TRIGger:A:BUS:I2C:ADDress:FORMat?

        **Info:**
            - ``BINary`` specifies the address format for the I2C bus trigger as Binary.
            - ``HEXadecimal`` specifies the address format for the I2C bus trigger as Hexadecimal.
        """
        return self._format

    @property
    def mode(self) -> TriggerABusI2cAddressMode:
        """Return the ``TRIGger:A:BUS:I2C:ADDress:MODe`` command.

        **Description:**
            - This command sets or queries the address mode for the I2C bus trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:ADDress:MODe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:ADDress:MODe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:I2C:ADDress:MODe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:I2C:ADDress:MODe {ADDR7|ADDR10}
            - TRIGger:A:BUS:I2C:ADDress:MODe?

        **Info:**
            - ``ADDR7`` specifies the address mode as ADDR7.
            - ``ADDR10`` specifies the address mode as ADDR10.
        """
        return self._mode

    @property
    def type(self) -> TriggerABusI2cAddressType:
        """Return the ``TRIGger:A:BUS:I2C:ADDress:TYPe`` command.

        **Description:**
            - This command sets or queries the address type for the I2C bus trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:ADDress:TYPe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:ADDress:TYPe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:I2C:ADDress:TYPe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:I2C:ADDress:TYPe {NONe|STARtbyte|HSMODe|GENeralcall|EEPROm|CBUS}
            - TRIGger:A:BUS:I2C:ADDress:TYPe?

        **Info:**
            - ``NONe`` specifies the address type as None.
            - ``STARtbyte`` specifies the address type as Start byte.
            - ``HSMODe`` specifies the address type as High Speed mode.
            - ``GENeralcall`` specifies the address type as General Call.
            - ``EEPROm`` specifies the address type as EEPROM.
            - ``CBUS`` specifies the address type as CBUS.
        """
        return self._type

    @property
    def value(self) -> TriggerABusI2cAddressValue:
        """Return the ``TRIGger:A:BUS:I2C:ADDress:VALue`` command.

        **Description:**
            - This command sets or queries the binary address string used for the I2C trigger of the
              bus.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:ADDress:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:ADDress:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:I2C:ADDress:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:I2C:ADDress:VALue <string>
            - TRIGger:A:BUS:I2C:ADDress:VALue?

        **Info:**
            - ``<string>`` specifies the address value. This is either 7 bits or 10 bits depending
              on the address mode. The valid characters are 0-9, A-F, and X for addresses in
              hexadecimal format and 0, 1, and X otherwise.
        """
        return self._value


class TriggerABusI2c(SCPICmdRead):
    """The ``TRIGger:A:BUS:I2C`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C?`` query and raise
          an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.address``: The ``TRIGger:A:BUS:I2C:ADDress`` command tree.
        - ``.condition``: The ``TRIGger:A:BUS:I2C:CONDition`` command.
        - ``.data``: The ``TRIGger:A:BUS:I2C:DATa`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._address = TriggerABusI2cAddress(device, f"{self._cmd_syntax}:ADDress")
        self._condition = TriggerABusI2cCondition(device, f"{self._cmd_syntax}:CONDition")
        self._data = TriggerABusI2cData(device, f"{self._cmd_syntax}:DATa")

    @property
    def address(self) -> TriggerABusI2cAddress:
        """Return the ``TRIGger:A:BUS:I2C:ADDress`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:ADDress?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:ADDress?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:I2C:ADDress:FORMat`` command.
            - ``.mode``: The ``TRIGger:A:BUS:I2C:ADDress:MODe`` command.
            - ``.type``: The ``TRIGger:A:BUS:I2C:ADDress:TYPe`` command.
            - ``.value``: The ``TRIGger:A:BUS:I2C:ADDress:VALue`` command.
        """
        return self._address

    @property
    def condition(self) -> TriggerABusI2cCondition:
        """Return the ``TRIGger:A:BUS:I2C:CONDition`` command.

        **Description:**
            - This command sets or queries the trigger condition for the I2C bus.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:CONDition?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:CONDition?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:I2C:CONDition value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:I2C:CONDition {ACKMISS|ADDress|ADDRANDDATA|DATa|REPEATstart|STARt|STOP}
            - TRIGger:A:BUS:I2C:CONDition?

        **Info:**
            - ``ACKMISS`` sets the trigger condition to Missing Acknowledgement.
            - ``ADDRess`` sets the trigger condition to Address.
            - ``ADDRANDDATA`` sets the trigger condition to Address and Data.
            - ``DATA`` sets the trigger condition to data.
            - ``REPEATstart`` sets the trigger condition to Repeat of Start.
            - ``STARt`` sets the trigger condition to Start.
            - ``STOP`` sets the trigger condition to Stop.
        """
        return self._condition

    @property
    def data(self) -> TriggerABusI2cData:
        """Return the ``TRIGger:A:BUS:I2C:DATa`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C:DATa?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.direction``: The ``TRIGger:A:BUS:I2C:DATa:DIRection`` command.
            - ``.format``: The ``TRIGger:A:BUS:I2C:DATa:FORMat`` command.
            - ``.size``: The ``TRIGger:A:BUS:I2C:DATa:SIZe`` command.
            - ``.value``: The ``TRIGger:A:BUS:I2C:DATa:VALue`` command.
        """
        return self._data


class TriggerABusFlexrayIdentifierValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:IDentifier:VALue`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger identifier value.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:IDentifier:VALue?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:IDentifier:VALue?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:IDentifier:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:IDentifier:VALue <string>
        - TRIGger:A:BUS:FLEXRAY:IDentifier:VALue?

    **Info:**
        - ``<string>`` specifies the identifier value.
    """


class TriggerABusFlexrayIdentifierQualifier(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger identifier qualifier.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
        - TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier?
    """  # noqa: E501


class TriggerABusFlexrayIdentifierFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger identifier format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat {BINary|HEX}
        - TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat?

    **Info:**
        - ``BINary`` specifies the identifier format as binary.
        - ``HEX`` specifies the identifier format as hexadecimal.
    """


class TriggerABusFlexrayIdentifier(SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:IDentifier`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:IDentifier?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:IDentifier?``
          query and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat`` command.
        - ``.qualifier``: The ``TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier`` command.
        - ``.value``: The ``TRIGger:A:BUS:FLEXRAY:IDentifier:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusFlexrayIdentifierFormat(device, f"{self._cmd_syntax}:FORMat")
        self._qualifier = TriggerABusFlexrayIdentifierQualifier(
            device, f"{self._cmd_syntax}:QUALifier"
        )
        self._value = TriggerABusFlexrayIdentifierValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusFlexrayIdentifierFormat:
        """Return the ``TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger identifier format.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat {BINary|HEX}
            - TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat?

        **Info:**
            - ``BINary`` specifies the identifier format as binary.
            - ``HEX`` specifies the identifier format as hexadecimal.
        """
        return self._format

    @property
    def qualifier(self) -> TriggerABusFlexrayIdentifierQualifier:
        """Return the ``TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger identifier qualifier.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
            - TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier?
        """  # noqa: E501
        return self._qualifier

    @property
    def value(self) -> TriggerABusFlexrayIdentifierValue:
        """Return the ``TRIGger:A:BUS:FLEXRAY:IDentifier:VALue`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger identifier value.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:IDentifier:VALue?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:IDentifier:VALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:IDentifier:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:IDentifier:VALue <string>
            - TRIGger:A:BUS:FLEXRAY:IDentifier:VALue?

        **Info:**
            - ``<string>`` specifies the identifier value.
        """
        return self._value


class TriggerABusFlexrayHeaderPaylength(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger header Payload Length.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth <string>
        - TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth?
    """


class TriggerABusFlexrayHeaderIndbits(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:HEADER:INDBits`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger header Indicator Bits.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:HEADER:INDBits?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:HEADER:INDBits?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:HEADER:INDBits value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:HEADER:INDBits <string>
        - TRIGger:A:BUS:FLEXRAY:HEADER:INDBits?

    **Info:**
        - ``<string>`` specifies the header Indicator Bits.
    """


class TriggerABusFlexrayHeaderFrameid(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger header frame ID.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID <string>
        - TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID?

    **Info:**
        - ``<string>`` specifies the header frame ID.
    """


class TriggerABusFlexrayHeaderCyclecount(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger header cycle count.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount <string>
        - TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount?

    **Info:**
        - ``<string>`` specifies the header cycle count.
    """


class TriggerABusFlexrayHeaderCrc(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:HEADER:CRC`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger header CRC.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:HEADER:CRC?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:HEADER:CRC?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:HEADER:CRC value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:HEADER:CRC <string>
        - TRIGger:A:BUS:FLEXRAY:HEADER:CRC?

    **Info:**
        - ``<string>`` specifies the cyclic redundancy code.
    """


class TriggerABusFlexrayHeader(SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:HEADER`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:HEADER?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:HEADER?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.crc``: The ``TRIGger:A:BUS:FLEXRAY:HEADER:CRC`` command.
        - ``.cyclecount``: The ``TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount`` command.
        - ``.frameid``: The ``TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID`` command.
        - ``.indbits``: The ``TRIGger:A:BUS:FLEXRAY:HEADER:INDBits`` command.
        - ``.paylength``: The ``TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._crc = TriggerABusFlexrayHeaderCrc(device, f"{self._cmd_syntax}:CRC")
        self._cyclecount = TriggerABusFlexrayHeaderCyclecount(
            device, f"{self._cmd_syntax}:CYCLECount"
        )
        self._frameid = TriggerABusFlexrayHeaderFrameid(device, f"{self._cmd_syntax}:FRAMEID")
        self._indbits = TriggerABusFlexrayHeaderIndbits(device, f"{self._cmd_syntax}:INDBits")
        self._paylength = TriggerABusFlexrayHeaderPaylength(device, f"{self._cmd_syntax}:PAYLENgth")

    @property
    def crc(self) -> TriggerABusFlexrayHeaderCrc:
        """Return the ``TRIGger:A:BUS:FLEXRAY:HEADER:CRC`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger header CRC.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:HEADER:CRC?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:HEADER:CRC?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:HEADER:CRC value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:HEADER:CRC <string>
            - TRIGger:A:BUS:FLEXRAY:HEADER:CRC?

        **Info:**
            - ``<string>`` specifies the cyclic redundancy code.
        """
        return self._crc

    @property
    def cyclecount(self) -> TriggerABusFlexrayHeaderCyclecount:
        """Return the ``TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger header cycle count.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount <string>
            - TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount?

        **Info:**
            - ``<string>`` specifies the header cycle count.
        """
        return self._cyclecount

    @property
    def frameid(self) -> TriggerABusFlexrayHeaderFrameid:
        """Return the ``TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger header frame ID.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID <string>
            - TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID?

        **Info:**
            - ``<string>`` specifies the header frame ID.
        """
        return self._frameid

    @property
    def indbits(self) -> TriggerABusFlexrayHeaderIndbits:
        """Return the ``TRIGger:A:BUS:FLEXRAY:HEADER:INDBits`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger header Indicator Bits.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:HEADER:INDBits?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:HEADER:INDBits?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:HEADER:INDBits value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:HEADER:INDBits <string>
            - TRIGger:A:BUS:FLEXRAY:HEADER:INDBits?

        **Info:**
            - ``<string>`` specifies the header Indicator Bits.
        """
        return self._indbits

    @property
    def paylength(self) -> TriggerABusFlexrayHeaderPaylength:
        """Return the ``TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger header Payload Length.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth <string>
            - TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth?
        """
        return self._paylength


class TriggerABusFlexrayFrametype(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:FRAMEType`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger frame type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:FRAMEType?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:FRAMEType?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:FRAMEType value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:FRAMEType {NORMal|PAYload|NULL|SYNC|STARTup}
        - TRIGger:A:BUS:FLEXRAY:FRAMEType?
    """


class TriggerABusFlexrayErrtype(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:ERRTYPE`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger error type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:ERRTYPE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:ERRTYPE?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:ERRTYPE value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:ERRTYPE {CRCHEADer|CRCTRAILer|NULLFRSTATIC|NULLFRDYNAMIC |SYNCFRAME|STARTUPNOSYNC}
        - TRIGger:A:BUS:FLEXRAY:ERRTYPE?
    """  # noqa: E501


class TriggerABusFlexrayEoftype(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:EOFTYPE`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger end of file type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:EOFTYPE?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:EOFTYPE?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:EOFTYPE value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:EOFTYPE {ALL|STATIC|DYNAMIC}
        - TRIGger:A:BUS:FLEXRAY:EOFTYPE?

    **Info:**
        - ``ALL`` specifies either end of file type.
        - ``STATIC`` specifies the static end of file type.
        - ``DYNAMIC`` specifies the static end of file type.
    """


class TriggerABusFlexrayDataValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:DATa:VALue`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger data value.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:DATa:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:DATa:VALue <STRING>
        - TRIGger:A:BUS:FLEXRAY:DATa:VALue?

    **Info:**
        - ``<STRING>`` specifies the data value.
    """


class TriggerABusFlexrayDataSize(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:DATa:SIZe`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger data size in bytes.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:SIZe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:SIZe?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:SIZe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:DATa:SIZe <NR3>
        - TRIGger:A:BUS:FLEXRAY:DATa:SIZe?

    **Info:**
        - ``<NR3>`` specifies the data size in bytes. A setting of X/Don't care is accomplished by
          setting the size to -1.
    """


class TriggerABusFlexrayDataQualifier(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:DATa:QUALifier`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger data qualifier.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:QUALifier?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:DATa:QUALifier?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:DATa:QUALifier value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:DATa:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
        - TRIGger:A:BUS:FLEXRAY:DATa:QUALifier?
    """


class TriggerABusFlexrayDataOffset(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:DATa:OFFSet`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger data offset.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:OFFSet?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:OFFSet?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:DATa:OFFSet value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:DATa:OFFSet <NR3>
        - TRIGger:A:BUS:FLEXRAY:DATa:OFFSet?

    **Info:**
        - ``<NR3>`` specifies the data offset in bytes.
    """


class TriggerABusFlexrayDataFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:DATa:FORMat`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger data format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:FORMat?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:DATa:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:DATa:FORMat {BINary|HEX}
        - TRIGger:A:BUS:FLEXRAY:DATa:FORMat?

    **Info:**
        - ``BINary`` specifies the data format as binary.
        - ``HEX`` specifies the data format as hexadecimal.
    """


class TriggerABusFlexrayData(SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:DATa`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:FLEXRAY:DATa:FORMat`` command.
        - ``.offset``: The ``TRIGger:A:BUS:FLEXRAY:DATa:OFFSet`` command.
        - ``.qualifier``: The ``TRIGger:A:BUS:FLEXRAY:DATa:QUALifier`` command.
        - ``.size``: The ``TRIGger:A:BUS:FLEXRAY:DATa:SIZe`` command.
        - ``.value``: The ``TRIGger:A:BUS:FLEXRAY:DATa:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusFlexrayDataFormat(device, f"{self._cmd_syntax}:FORMat")
        self._offset = TriggerABusFlexrayDataOffset(device, f"{self._cmd_syntax}:OFFSet")
        self._qualifier = TriggerABusFlexrayDataQualifier(device, f"{self._cmd_syntax}:QUALifier")
        self._size = TriggerABusFlexrayDataSize(device, f"{self._cmd_syntax}:SIZe")
        self._value = TriggerABusFlexrayDataValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusFlexrayDataFormat:
        """Return the ``TRIGger:A:BUS:FLEXRAY:DATa:FORMat`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger data format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:FORMat?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:DATa:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:DATa:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:DATa:FORMat {BINary|HEX}
            - TRIGger:A:BUS:FLEXRAY:DATa:FORMat?

        **Info:**
            - ``BINary`` specifies the data format as binary.
            - ``HEX`` specifies the data format as hexadecimal.
        """
        return self._format

    @property
    def offset(self) -> TriggerABusFlexrayDataOffset:
        """Return the ``TRIGger:A:BUS:FLEXRAY:DATa:OFFSet`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger data offset.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:OFFSet?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:DATa:OFFSet?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:DATa:OFFSet value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:DATa:OFFSet <NR3>
            - TRIGger:A:BUS:FLEXRAY:DATa:OFFSet?

        **Info:**
            - ``<NR3>`` specifies the data offset in bytes.
        """
        return self._offset

    @property
    def qualifier(self) -> TriggerABusFlexrayDataQualifier:
        """Return the ``TRIGger:A:BUS:FLEXRAY:DATa:QUALifier`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger data qualifier.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:QUALifier?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:DATa:QUALifier?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:DATa:QUALifier value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:DATa:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
            - TRIGger:A:BUS:FLEXRAY:DATa:QUALifier?
        """  # noqa: E501
        return self._qualifier

    @property
    def size(self) -> TriggerABusFlexrayDataSize:
        """Return the ``TRIGger:A:BUS:FLEXRAY:DATa:SIZe`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger data size in bytes.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:SIZe?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:SIZe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:DATa:SIZe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:DATa:SIZe <NR3>
            - TRIGger:A:BUS:FLEXRAY:DATa:SIZe?

        **Info:**
            - ``<NR3>`` specifies the data size in bytes. A setting of X/Don't care is accomplished
              by setting the size to -1.
        """
        return self._size

    @property
    def value(self) -> TriggerABusFlexrayDataValue:
        """Return the ``TRIGger:A:BUS:FLEXRAY:DATa:VALue`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger data value.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:DATa:VALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:DATa:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:DATa:VALue <STRING>
            - TRIGger:A:BUS:FLEXRAY:DATa:VALue?

        **Info:**
            - ``<STRING>`` specifies the data value.
        """
        return self._value


class TriggerABusFlexrayCyclecountValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger cycle count value.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue <STRING>
        - TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue?

    **Info:**
        - ``<STRING>`` specifies the cycle count value.
    """


class TriggerABusFlexrayCyclecountQualifier(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier`` command.

    **Description:**
        - This command sets or queries FLEXRAY bus trigger cycle count qualifier.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
        - TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier?
    """  # noqa: E501


class TriggerABusFlexrayCyclecountFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat`` command.

    **Description:**
        - This command sets or queries FLEXRAY bus trigger cycle count format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat {BINary|HEX}
        - TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat?

    **Info:**
        - ``BINary`` specifies the cycle count format as binary.
        - ``HEX`` specifies the cycle count format as hexadecimal.
    """


class TriggerABusFlexrayCyclecount(SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:CYCLEcount`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:CYCLEcount?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:CYCLEcount?``
          query and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat`` command.
        - ``.qualifier``: The ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier`` command.
        - ``.value``: The ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusFlexrayCyclecountFormat(device, f"{self._cmd_syntax}:FORMat")
        self._qualifier = TriggerABusFlexrayCyclecountQualifier(
            device, f"{self._cmd_syntax}:QUALifier"
        )
        self._value = TriggerABusFlexrayCyclecountValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusFlexrayCyclecountFormat:
        """Return the ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat`` command.

        **Description:**
            - This command sets or queries FLEXRAY bus trigger cycle count format.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat {BINary|HEX}
            - TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat?

        **Info:**
            - ``BINary`` specifies the cycle count format as binary.
            - ``HEX`` specifies the cycle count format as hexadecimal.
        """
        return self._format

    @property
    def qualifier(self) -> TriggerABusFlexrayCyclecountQualifier:
        """Return the ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier`` command.

        **Description:**
            - This command sets or queries FLEXRAY bus trigger cycle count qualifier.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier?`` query and raise an AssertionError if
              the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
            - TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier?
        """  # noqa: E501
        return self._qualifier

    @property
    def value(self) -> TriggerABusFlexrayCyclecountValue:
        """Return the ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger cycle count value.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue <STRING>
            - TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue?

        **Info:**
            - ``<STRING>`` specifies the cycle count value.
        """
        return self._value


class TriggerABusFlexrayCondition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY:CONDition`` command.

    **Description:**
        - This command sets or queries the FLEXRAY bus trigger condition.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:CONDition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:CONDition?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:CONDition value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:FLEXRAY:CONDition {SOF|FRAMEtype|IDentifier|CYCLEcount|HEADer|DATA|IDANDDATA|EOF|ERRor}
        - TRIGger:A:BUS:FLEXRAY:CONDition?
    """  # noqa: E501


#  pylint: disable=too-many-instance-attributes
class TriggerABusFlexray(SCPICmdRead):
    """The ``TRIGger:A:BUS:FLEXRAY`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.condition``: The ``TRIGger:A:BUS:FLEXRAY:CONDition`` command.
        - ``.cyclecount``: The ``TRIGger:A:BUS:FLEXRAY:CYCLEcount`` command tree.
        - ``.data``: The ``TRIGger:A:BUS:FLEXRAY:DATa`` command tree.
        - ``.eoftype``: The ``TRIGger:A:BUS:FLEXRAY:EOFTYPE`` command.
        - ``.errtype``: The ``TRIGger:A:BUS:FLEXRAY:ERRTYPE`` command.
        - ``.frametype``: The ``TRIGger:A:BUS:FLEXRAY:FRAMEType`` command.
        - ``.header``: The ``TRIGger:A:BUS:FLEXRAY:HEADER`` command tree.
        - ``.identifier``: The ``TRIGger:A:BUS:FLEXRAY:IDentifier`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._condition = TriggerABusFlexrayCondition(device, f"{self._cmd_syntax}:CONDition")
        self._cyclecount = TriggerABusFlexrayCyclecount(device, f"{self._cmd_syntax}:CYCLEcount")
        self._data = TriggerABusFlexrayData(device, f"{self._cmd_syntax}:DATa")
        self._eoftype = TriggerABusFlexrayEoftype(device, f"{self._cmd_syntax}:EOFTYPE")
        self._errtype = TriggerABusFlexrayErrtype(device, f"{self._cmd_syntax}:ERRTYPE")
        self._frametype = TriggerABusFlexrayFrametype(device, f"{self._cmd_syntax}:FRAMEType")
        self._header = TriggerABusFlexrayHeader(device, f"{self._cmd_syntax}:HEADER")
        self._identifier = TriggerABusFlexrayIdentifier(device, f"{self._cmd_syntax}:IDentifier")

    @property
    def condition(self) -> TriggerABusFlexrayCondition:
        """Return the ``TRIGger:A:BUS:FLEXRAY:CONDition`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger condition.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:CONDition?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:CONDition?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:CONDition value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:CONDition {SOF|FRAMEtype|IDentifier|CYCLEcount|HEADer|DATA|IDANDDATA|EOF|ERRor}
            - TRIGger:A:BUS:FLEXRAY:CONDition?
        """  # noqa: E501
        return self._condition

    @property
    def cyclecount(self) -> TriggerABusFlexrayCyclecount:
        """Return the ``TRIGger:A:BUS:FLEXRAY:CYCLEcount`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:CYCLEcount?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:CYCLEcount?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:FORMat`` command.
            - ``.qualifier``: The ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:QUALifier`` command.
            - ``.value``: The ``TRIGger:A:BUS:FLEXRAY:CYCLEcount:VALue`` command.
        """
        return self._cyclecount

    @property
    def data(self) -> TriggerABusFlexrayData:
        """Return the ``TRIGger:A:BUS:FLEXRAY:DATa`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:DATa?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:FLEXRAY:DATa:FORMat`` command.
            - ``.offset``: The ``TRIGger:A:BUS:FLEXRAY:DATa:OFFSet`` command.
            - ``.qualifier``: The ``TRIGger:A:BUS:FLEXRAY:DATa:QUALifier`` command.
            - ``.size``: The ``TRIGger:A:BUS:FLEXRAY:DATa:SIZe`` command.
            - ``.value``: The ``TRIGger:A:BUS:FLEXRAY:DATa:VALue`` command.
        """
        return self._data

    @property
    def eoftype(self) -> TriggerABusFlexrayEoftype:
        """Return the ``TRIGger:A:BUS:FLEXRAY:EOFTYPE`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger end of file type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:EOFTYPE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:EOFTYPE?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:EOFTYPE value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:EOFTYPE {ALL|STATIC|DYNAMIC}
            - TRIGger:A:BUS:FLEXRAY:EOFTYPE?

        **Info:**
            - ``ALL`` specifies either end of file type.
            - ``STATIC`` specifies the static end of file type.
            - ``DYNAMIC`` specifies the static end of file type.
        """
        return self._eoftype

    @property
    def errtype(self) -> TriggerABusFlexrayErrtype:
        """Return the ``TRIGger:A:BUS:FLEXRAY:ERRTYPE`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger error type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:ERRTYPE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:ERRTYPE?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:ERRTYPE value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:ERRTYPE {CRCHEADer|CRCTRAILer|NULLFRSTATIC|NULLFRDYNAMIC |SYNCFRAME|STARTUPNOSYNC}
            - TRIGger:A:BUS:FLEXRAY:ERRTYPE?
        """  # noqa: E501
        return self._errtype

    @property
    def frametype(self) -> TriggerABusFlexrayFrametype:
        """Return the ``TRIGger:A:BUS:FLEXRAY:FRAMEType`` command.

        **Description:**
            - This command sets or queries the FLEXRAY bus trigger frame type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:FRAMEType?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:FRAMEType?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:FRAMEType value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:FLEXRAY:FRAMEType {NORMal|PAYload|NULL|SYNC|STARTup}
            - TRIGger:A:BUS:FLEXRAY:FRAMEType?
        """
        return self._frametype

    @property
    def header(self) -> TriggerABusFlexrayHeader:
        """Return the ``TRIGger:A:BUS:FLEXRAY:HEADER`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:HEADER?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY:HEADER?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.crc``: The ``TRIGger:A:BUS:FLEXRAY:HEADER:CRC`` command.
            - ``.cyclecount``: The ``TRIGger:A:BUS:FLEXRAY:HEADER:CYCLECount`` command.
            - ``.frameid``: The ``TRIGger:A:BUS:FLEXRAY:HEADER:FRAMEID`` command.
            - ``.indbits``: The ``TRIGger:A:BUS:FLEXRAY:HEADER:INDBits`` command.
            - ``.paylength``: The ``TRIGger:A:BUS:FLEXRAY:HEADER:PAYLENgth`` command.
        """
        return self._header

    @property
    def identifier(self) -> TriggerABusFlexrayIdentifier:
        """Return the ``TRIGger:A:BUS:FLEXRAY:IDentifier`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY:IDentifier?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:FLEXRAY:IDentifier?`` query and raise an AssertionError if the
              returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:FLEXRAY:IDentifier:FORMat`` command.
            - ``.qualifier``: The ``TRIGger:A:BUS:FLEXRAY:IDentifier:QUALifier`` command.
            - ``.value``: The ``TRIGger:A:BUS:FLEXRAY:IDentifier:VALue`` command.
        """
        return self._identifier


class TriggerABusEthernetIpheaderSourceaddrValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue`` command.

    **Description:**
        - This command specifies the 32-bit value to use when triggering on the Ethernet IPv4 header
          address source field. The default is all X's (don't care). The trigger condition needs to
          be set to IPHeader.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue?`` query and raise an AssertionError if
          the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue <QString>
        - TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue?
    """

    _WRAP_ARG_WITH_QUOTES = True


class TriggerABusEthernetIpheaderSourceaddr(SCPICmdRead):
    """The ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the
          ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr?`` query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr?`` query and raise an AssertionError if the
          returned value does not match ``value``.

    Properties:
        - ``.value``: The ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._value = TriggerABusEthernetIpheaderSourceaddrValue(
            device, f"{self._cmd_syntax}:VALue"
        )

    @property
    def value(self) -> TriggerABusEthernetIpheaderSourceaddrValue:
        """Return the ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue`` command.

        **Description:**
            - This command specifies the 32-bit value to use when triggering on the Ethernet IPv4
              header address source field. The default is all X's (don't care). The trigger
              condition needs to be set to IPHeader.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue?`` query and raise an
              AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue <QString>
            - TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue?
        """
        return self._value


class TriggerABusEthernetIpheader(SCPICmdRead):
    """The ``TRIGger:A:BUS:ETHERnet:IPHeader`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:ETHERnet:IPHeader?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:ETHERnet:IPHeader?``
          query and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.sourceaddr``: The ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._sourceaddr = TriggerABusEthernetIpheaderSourceaddr(
            device, f"{self._cmd_syntax}:SOUrceaddr"
        )

    @property
    def sourceaddr(self) -> TriggerABusEthernetIpheaderSourceaddr:
        """Return the ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr?`` query and raise an AssertionError if
              the returned value does not match ``value``.

        Sub-properties:
            - ``.value``: The ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr:VALue`` command.
        """
        return self._sourceaddr


class TriggerABusEthernetDataFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:ETHERnet:DATa:FORMat`` command.

    **Description:**
        - This command and query sets the format of the data to either binary or hex.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:ETHERnet:DATa:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:ETHERnet:DATa:FORMat?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:ETHERnet:DATa:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:ETHERnet:DATa:FORMat {BINARY | HEX}
        - TRIGger:A:BUS:ETHERnet:DATa:FORMat?

    **Info:**
        - ``BINARY`` sets the format to binary.
        - ``HEX`` sets the format to hexadecimal.
    """


class TriggerABusEthernetData(SCPICmdRead):
    """The ``TRIGger:A:BUS:ETHERnet:DATa`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:ETHERnet:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:ETHERnet:DATa?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:ETHERnet:DATa:FORMat`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusEthernetDataFormat(device, f"{self._cmd_syntax}:FORMat")

    @property
    def format(self) -> TriggerABusEthernetDataFormat:
        """Return the ``TRIGger:A:BUS:ETHERnet:DATa:FORMat`` command.

        **Description:**
            - This command and query sets the format of the data to either binary or hex.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:ETHERnet:DATa:FORMat?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:ETHERnet:DATa:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:ETHERnet:DATa:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:ETHERnet:DATa:FORMat {BINARY | HEX}
            - TRIGger:A:BUS:ETHERnet:DATa:FORMat?

        **Info:**
            - ``BINARY`` sets the format to binary.
            - ``HEX`` sets the format to hexadecimal.
        """
        return self._format


class TriggerABusEthernet(SCPICmdRead):
    """The ``TRIGger:A:BUS:ETHERnet`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:ETHERnet?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:ETHERnet?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.data``: The ``TRIGger:A:BUS:ETHERnet:DATa`` command tree.
        - ``.ipheader``: The ``TRIGger:A:BUS:ETHERnet:IPHeader`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._data = TriggerABusEthernetData(device, f"{self._cmd_syntax}:DATa")
        self._ipheader = TriggerABusEthernetIpheader(device, f"{self._cmd_syntax}:IPHeader")

    @property
    def data(self) -> TriggerABusEthernetData:
        """Return the ``TRIGger:A:BUS:ETHERnet:DATa`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:ETHERnet:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:ETHERnet:DATa?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:ETHERnet:DATa:FORMat`` command.
        """
        return self._data

    @property
    def ipheader(self) -> TriggerABusEthernetIpheader:
        """Return the ``TRIGger:A:BUS:ETHERnet:IPHeader`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:ETHERnet:IPHeader?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:ETHERnet:IPHeader?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.sourceaddr``: The ``TRIGger:A:BUS:ETHERnet:IPHeader:SOUrceaddr`` command tree.
        """
        return self._ipheader


class TriggerABusDataValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:DATa:VALue`` command.

    **Description:**
        - This command sets or queries the trigger data value depending on the format selected for
          the bus. The data value varies depending on the bus type and the number of input signals.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:DATa:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:DATa:VALue?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:DATa:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:DATa:VALue <string>
        - TRIGger:A:BUS:DATa:VALue?

    **Info:**
        - ``<string>`` is the data value in binary or hexadecimal format. The valid characters are
          0-9, A-F, and X for addresses in hexadecimal format and 0, 1, and X otherwise.
    """


class TriggerABusDataFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:DATa:FORMat`` command.

    **Description:**
        - This command sets or queries the trigger data format for the bus.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:DATa:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:DATa:FORMat?`` query and
          raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:DATa:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:DATa:FORMat {BINary|HEXadecimal|SYMBolic}
        - TRIGger:A:BUS:DATa:FORMat?

    **Info:**
        - ``BINary`` specifies the trigger data format to Binary.
        - ``HEXadecimal`` specifies the trigger data format to Hexadecimal.
        - ``SYMBolic`` specifies the trigger data format as Symbolic.
    """


class TriggerABusData(SCPICmdRead):
    """The ``TRIGger:A:BUS:DATa`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:DATa?`` query and raise
          an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.format``: The ``TRIGger:A:BUS:DATa:FORMat`` command.
        - ``.value``: The ``TRIGger:A:BUS:DATa:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._format = TriggerABusDataFormat(device, f"{self._cmd_syntax}:FORMat")
        self._value = TriggerABusDataValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def format(self) -> TriggerABusDataFormat:
        """Return the ``TRIGger:A:BUS:DATa:FORMat`` command.

        **Description:**
            - This command sets or queries the trigger data format for the bus.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:DATa:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:DATa:FORMat?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:DATa:FORMat value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:DATa:FORMat {BINary|HEXadecimal|SYMBolic}
            - TRIGger:A:BUS:DATa:FORMat?

        **Info:**
            - ``BINary`` specifies the trigger data format to Binary.
            - ``HEXadecimal`` specifies the trigger data format to Hexadecimal.
            - ``SYMBolic`` specifies the trigger data format as Symbolic.
        """
        return self._format

    @property
    def value(self) -> TriggerABusDataValue:
        """Return the ``TRIGger:A:BUS:DATa:VALue`` command.

        **Description:**
            - This command sets or queries the trigger data value depending on the format selected
              for the bus. The data value varies depending on the bus type and the number of input
              signals.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:DATa:VALue?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:DATa:VALue?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:DATa:VALue value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:DATa:VALue <string>
            - TRIGger:A:BUS:DATa:VALue?

        **Info:**
            - ``<string>`` is the data value in binary or hexadecimal format. The valid characters
              are 0-9, A-F, and X for addresses in hexadecimal format and 0, 1, and X otherwise.
        """
        return self._value


class TriggerABusCanIdentifierValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:IDentifier:VALue`` command.

    **Description:**
        - This command sets or queries the CAN bus trigger identifier value.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:IDentifier:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:IDentifier:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:CAN:IDentifier:VALue value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:IDentifier:VALue <string>
        - TRIGger:A:BUS:CAN:IDentifier:VALue?
    """


class TriggerABusCanIdentifierMode(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:IDentifier:MODe`` command.

    **Description:**
        - This command sets or queries CAN bus trigger identifier mode.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:IDentifier:MODe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:IDentifier:MODe?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:CAN:IDentifier:MODe value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:IDentifier:MODe {EXTENDed|STandard}
        - TRIGger:A:BUS:CAN:IDentifier:MODe?

    **Info:**
        - ``EXTENDed`` specifies the extended identifier mode.
        - ``STandard`` specifies the standard identifier mode.
    """


class TriggerABusCanIdentifierFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:IDentifier:FORMat`` command.

    **Description:**
        - This command sets or queries the CAN bus identifier format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:IDentifier:FORMat?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:IDentifier:FORMat?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:CAN:IDentifier:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:IDentifier:FORMat {BINary|HEX}
        - TRIGger:A:BUS:CAN:IDentifier:FORMat?

    **Info:**
        - ``BINary`` specifies the identifier format as binary.
        - ``HEX`` specifies the identifier format as hexadecimal.
    """


class TriggerABusCanIdentifierDirection(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:IDentifier:DIRection`` command.

    **Description:**
        - This command sets or queries the CAN bus trigger identifier direction.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:IDentifier:DIRection?``
          query.
        - Using the ``.verify(value)`` method will send the
          ``TRIGger:A:BUS:CAN:IDentifier:DIRection?`` query and raise an AssertionError if the
          returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:CAN:IDentifier:DIRection value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:IDentifier:DIRection {DONTCare|READ|WRITE}
        - TRIGger:A:BUS:CAN:IDentifier:DIRection?
    """


class TriggerABusCanIdentifier(SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:IDentifier`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:IDentifier?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:IDentifier?`` query
          and raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.direction``: The ``TRIGger:A:BUS:CAN:IDentifier:DIRection`` command.
        - ``.format``: The ``TRIGger:A:BUS:CAN:IDentifier:FORMat`` command.
        - ``.mode``: The ``TRIGger:A:BUS:CAN:IDentifier:MODe`` command.
        - ``.value``: The ``TRIGger:A:BUS:CAN:IDentifier:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._direction = TriggerABusCanIdentifierDirection(device, f"{self._cmd_syntax}:DIRection")
        self._format = TriggerABusCanIdentifierFormat(device, f"{self._cmd_syntax}:FORMat")
        self._mode = TriggerABusCanIdentifierMode(device, f"{self._cmd_syntax}:MODe")
        self._value = TriggerABusCanIdentifierValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def direction(self) -> TriggerABusCanIdentifierDirection:
        """Return the ``TRIGger:A:BUS:CAN:IDentifier:DIRection`` command.

        **Description:**
            - This command sets or queries the CAN bus trigger identifier direction.

        **Usage:**
            - Using the ``.query()`` method will send the
              ``TRIGger:A:BUS:CAN:IDentifier:DIRection?`` query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:CAN:IDentifier:DIRection?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:CAN:IDentifier:DIRection value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:IDentifier:DIRection {DONTCare|READ|WRITE}
            - TRIGger:A:BUS:CAN:IDentifier:DIRection?
        """
        return self._direction

    @property
    def format(self) -> TriggerABusCanIdentifierFormat:
        """Return the ``TRIGger:A:BUS:CAN:IDentifier:FORMat`` command.

        **Description:**
            - This command sets or queries the CAN bus identifier format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:IDentifier:FORMat?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:CAN:IDentifier:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:CAN:IDentifier:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:IDentifier:FORMat {BINary|HEX}
            - TRIGger:A:BUS:CAN:IDentifier:FORMat?

        **Info:**
            - ``BINary`` specifies the identifier format as binary.
            - ``HEX`` specifies the identifier format as hexadecimal.
        """
        return self._format

    @property
    def mode(self) -> TriggerABusCanIdentifierMode:
        """Return the ``TRIGger:A:BUS:CAN:IDentifier:MODe`` command.

        **Description:**
            - This command sets or queries CAN bus trigger identifier mode.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:IDentifier:MODe?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:CAN:IDentifier:MODe?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:CAN:IDentifier:MODe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:IDentifier:MODe {EXTENDed|STandard}
            - TRIGger:A:BUS:CAN:IDentifier:MODe?

        **Info:**
            - ``EXTENDed`` specifies the extended identifier mode.
            - ``STandard`` specifies the standard identifier mode.
        """
        return self._mode

    @property
    def value(self) -> TriggerABusCanIdentifierValue:
        """Return the ``TRIGger:A:BUS:CAN:IDentifier:VALue`` command.

        **Description:**
            - This command sets or queries the CAN bus trigger identifier value.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:IDentifier:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:CAN:IDentifier:VALue?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:CAN:IDentifier:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:IDentifier:VALue <string>
            - TRIGger:A:BUS:CAN:IDentifier:VALue?
        """
        return self._value


class TriggerABusCanFrametype(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:FRAMEtype`` command.

    **Description:**
        - This command sets or queries CAN bus trigger frame type.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:FRAMEtype?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:FRAMEtype?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:CAN:FRAMEtype value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:FRAMEtype {DATa|ERRor|OVERLoad|REMote}
        - TRIGger:A:BUS:CAN:FRAMEtype?
    """


class TriggerABusCanDataValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:DATa:VALue`` command.

    **Description:**
        - This command sets or queries CAN bus trigger data value.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:DATa:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa:VALue?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:DATa:VALue <string>
        - TRIGger:A:BUS:CAN:DATa:VALue?

    **Info:**
        - ``<string>`` specifies the data value.
    """


class TriggerABusCanDataSize(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:DATa:SIZe`` command.

    **Description:**
        - This command sets or queries the CAN bus trigger data size (the number of contiguous data
          bytes to trigger on).

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:DATa:SIZe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa:SIZe?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa:SIZe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:DATa:SIZe <nr3>
        - TRIGger:A:BUS:CAN:DATa:SIZe?

    **Info:**
        - ``<nr3>`` specifies the data size.
    """


class TriggerABusCanDataQualifier(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:DATa:QUALifier`` command.

    **Description:**
        - This command sets or queries CAN bus trigger data qualifier.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:DATa:QUALifier?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa:QUALifier?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:CAN:DATa:QUALifier value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:DATa:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
        - TRIGger:A:BUS:CAN:DATa:QUALifier?
    """


class TriggerABusCanDataFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:DATa:FORMat`` command.

    **Description:**
        - This command sets or queries the CAN bus trigger data format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:DATa:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa:FORMat?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa:FORMat value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:DATa:FORMat {BINary|HEX}
        - TRIGger:A:BUS:CAN:DATa:FORMat?

    **Info:**
        - ``BINary`` specifies the data format as binary.
        - ``HEX`` specifies the data format as hexadecimal.
    """


class TriggerABusCanDataDirection(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:DATa:DIRection`` command.

    **Description:**
        - This command sets or queries the CAN bus trigger data direction.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:DATa:DIRection?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa:DIRection?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:CAN:DATa:DIRection value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:DATa:DIRection {DONTCare|READ|WRITE}
        - TRIGger:A:BUS:CAN:DATa:DIRection?

    **Info:**
        - ``DONTCare`` specifies the direction is a don't care.
        - ``READ`` specifies the read direction.
        - ``WRITE`` specifies the write direction.
    """


class TriggerABusCanData(SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:DATa`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:DATa?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.direction``: The ``TRIGger:A:BUS:CAN:DATa:DIRection`` command.
        - ``.format``: The ``TRIGger:A:BUS:CAN:DATa:FORMat`` command.
        - ``.qualifier``: The ``TRIGger:A:BUS:CAN:DATa:QUALifier`` command.
        - ``.size``: The ``TRIGger:A:BUS:CAN:DATa:SIZe`` command.
        - ``.value``: The ``TRIGger:A:BUS:CAN:DATa:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._direction = TriggerABusCanDataDirection(device, f"{self._cmd_syntax}:DIRection")
        self._format = TriggerABusCanDataFormat(device, f"{self._cmd_syntax}:FORMat")
        self._qualifier = TriggerABusCanDataQualifier(device, f"{self._cmd_syntax}:QUALifier")
        self._size = TriggerABusCanDataSize(device, f"{self._cmd_syntax}:SIZe")
        self._value = TriggerABusCanDataValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def direction(self) -> TriggerABusCanDataDirection:
        """Return the ``TRIGger:A:BUS:CAN:DATa:DIRection`` command.

        **Description:**
            - This command sets or queries the CAN bus trigger data direction.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:DATa:DIRection?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:CAN:DATa:DIRection?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:CAN:DATa:DIRection value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:DATa:DIRection {DONTCare|READ|WRITE}
            - TRIGger:A:BUS:CAN:DATa:DIRection?

        **Info:**
            - ``DONTCare`` specifies the direction is a don't care.
            - ``READ`` specifies the read direction.
            - ``WRITE`` specifies the write direction.
        """
        return self._direction

    @property
    def format(self) -> TriggerABusCanDataFormat:
        """Return the ``TRIGger:A:BUS:CAN:DATa:FORMat`` command.

        **Description:**
            - This command sets or queries the CAN bus trigger data format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:DATa:FORMat?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa:FORMat?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:CAN:DATa:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:DATa:FORMat {BINary|HEX}
            - TRIGger:A:BUS:CAN:DATa:FORMat?

        **Info:**
            - ``BINary`` specifies the data format as binary.
            - ``HEX`` specifies the data format as hexadecimal.
        """
        return self._format

    @property
    def qualifier(self) -> TriggerABusCanDataQualifier:
        """Return the ``TRIGger:A:BUS:CAN:DATa:QUALifier`` command.

        **Description:**
            - This command sets or queries CAN bus trigger data qualifier.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:DATa:QUALifier?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:CAN:DATa:QUALifier?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:CAN:DATa:QUALifier value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:DATa:QUALifier {EQUal|LESSEQual|MOREEQual|UNEQual|LESSthan|MOREthan}
            - TRIGger:A:BUS:CAN:DATa:QUALifier?
        """
        return self._qualifier

    @property
    def size(self) -> TriggerABusCanDataSize:
        """Return the ``TRIGger:A:BUS:CAN:DATa:SIZe`` command.

        **Description:**
            - This command sets or queries the CAN bus trigger data size (the number of contiguous
              data bytes to trigger on).

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:DATa:SIZe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa:SIZe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa:SIZe value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:DATa:SIZe <nr3>
            - TRIGger:A:BUS:CAN:DATa:SIZe?

        **Info:**
            - ``<nr3>`` specifies the data size.
        """
        return self._size

    @property
    def value(self) -> TriggerABusCanDataValue:
        """Return the ``TRIGger:A:BUS:CAN:DATa:VALue`` command.

        **Description:**
            - This command sets or queries CAN bus trigger data value.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:DATa:VALue?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:CAN:DATa:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:DATa:VALue <string>
            - TRIGger:A:BUS:CAN:DATa:VALue?

        **Info:**
            - ``<string>`` specifies the data value.
        """
        return self._value


class TriggerABusCanCondition(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:CONDition`` command.

    **Description:**
        - This command sets or queries the CAN bus trigger condition.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:CONDition?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:CONDition?`` query
          and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:CAN:CONDition value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:CONDition {ERRor|DATA|IDANDDATA|EOF|IDentifier|ACKMISS|SOF|FRAMEtype}
        - TRIGger:A:BUS:CAN:CONDition?
    """


class TriggerABusCanAddressValue(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:ADDRess:VALue`` command.

    **Description:**
        - This command sets or queries the CAN bus trigger identifier value.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:VALue?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:VALue?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:VALue value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:ADDRess:VALue <string>
        - TRIGger:A:BUS:CAN:ADDRess:VALue?
    """


class TriggerABusCanAddressMode(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:ADDRess:MODe`` command.

    **Description:**
        - This command sets or queries CAN bus trigger identifier mode.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:MODe?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:MODe?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:MODe value``
          command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:ADDRess:MODe {EXTENDed|STandard}
        - TRIGger:A:BUS:CAN:ADDRess:MODe?

    **Info:**
        - ``EXTENDed`` specifies the extended identifier mode.
        - ``STandard`` specifies the standard identifier mode.
    """


class TriggerABusCanAddressFormat(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:ADDRess:FORMat`` command.

    **Description:**
        - This command sets or queries the CAN bus identifier format.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:FORMat?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:FORMat?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:CAN:ADDRess:FORMat value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:ADDRess:FORMat {BINary|HEX}
        - TRIGger:A:BUS:CAN:ADDRess:FORMat?

    **Info:**
        - ``BINary`` specifies the identifier format as binary.
        - ``HEX`` specifies the identifier format as hexadecimal.
    """


class TriggerABusCanAddressDirection(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:ADDRess:DIRection`` command.

    **Description:**
        - This command sets or queries the CAN bus trigger identifier direction.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:DIRection?``
          query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:DIRection?``
          query and raise an AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the
          ``TRIGger:A:BUS:CAN:ADDRess:DIRection value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A:BUS:CAN:ADDRess:DIRection {DONTCare|READ|WRITE}
        - TRIGger:A:BUS:CAN:ADDRess:DIRection?
    """


class TriggerABusCanAddress(SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN:ADDRess`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:ADDRess?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:ADDRess?`` query and
          raise an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.direction``: The ``TRIGger:A:BUS:CAN:ADDRess:DIRection`` command.
        - ``.format``: The ``TRIGger:A:BUS:CAN:ADDRess:FORMat`` command.
        - ``.mode``: The ``TRIGger:A:BUS:CAN:ADDRess:MODe`` command.
        - ``.value``: The ``TRIGger:A:BUS:CAN:ADDRess:VALue`` command.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._direction = TriggerABusCanAddressDirection(device, f"{self._cmd_syntax}:DIRection")
        self._format = TriggerABusCanAddressFormat(device, f"{self._cmd_syntax}:FORMat")
        self._mode = TriggerABusCanAddressMode(device, f"{self._cmd_syntax}:MODe")
        self._value = TriggerABusCanAddressValue(device, f"{self._cmd_syntax}:VALue")

    @property
    def direction(self) -> TriggerABusCanAddressDirection:
        """Return the ``TRIGger:A:BUS:CAN:ADDRess:DIRection`` command.

        **Description:**
            - This command sets or queries the CAN bus trigger identifier direction.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:DIRection?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:CAN:ADDRess:DIRection?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:CAN:ADDRess:DIRection value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:ADDRess:DIRection {DONTCare|READ|WRITE}
            - TRIGger:A:BUS:CAN:ADDRess:DIRection?
        """
        return self._direction

    @property
    def format(self) -> TriggerABusCanAddressFormat:
        """Return the ``TRIGger:A:BUS:CAN:ADDRess:FORMat`` command.

        **Description:**
            - This command sets or queries the CAN bus identifier format.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:FORMat?``
              query.
            - Using the ``.verify(value)`` method will send the
              ``TRIGger:A:BUS:CAN:ADDRess:FORMat?`` query and raise an AssertionError if the
              returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:CAN:ADDRess:FORMat value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:ADDRess:FORMat {BINary|HEX}
            - TRIGger:A:BUS:CAN:ADDRess:FORMat?

        **Info:**
            - ``BINary`` specifies the identifier format as binary.
            - ``HEX`` specifies the identifier format as hexadecimal.
        """
        return self._format

    @property
    def mode(self) -> TriggerABusCanAddressMode:
        """Return the ``TRIGger:A:BUS:CAN:ADDRess:MODe`` command.

        **Description:**
            - This command sets or queries CAN bus trigger identifier mode.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:MODe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:MODe?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:CAN:ADDRess:MODe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:ADDRess:MODe {EXTENDed|STandard}
            - TRIGger:A:BUS:CAN:ADDRess:MODe?

        **Info:**
            - ``EXTENDed`` specifies the extended identifier mode.
            - ``STandard`` specifies the standard identifier mode.
        """
        return self._mode

    @property
    def value(self) -> TriggerABusCanAddressValue:
        """Return the ``TRIGger:A:BUS:CAN:ADDRess:VALue`` command.

        **Description:**
            - This command sets or queries the CAN bus trigger identifier value.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:VALue?``
              query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:ADDRess:VALue?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the
              ``TRIGger:A:BUS:CAN:ADDRess:VALue value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:ADDRess:VALue <string>
            - TRIGger:A:BUS:CAN:ADDRess:VALue?
        """
        return self._value


class TriggerABusCan(SCPICmdRead):
    """The ``TRIGger:A:BUS:CAN`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN?`` query and raise
          an AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.condition``: The ``TRIGger:A:BUS:CAN:CONDition`` command.
        - ``.data``: The ``TRIGger:A:BUS:CAN:DATa`` command tree.
        - ``.frametype``: The ``TRIGger:A:BUS:CAN:FRAMEtype`` command.
        - ``.identifier``: The ``TRIGger:A:BUS:CAN:IDentifier`` command tree.
        - ``.address``: The ``TRIGger:A:BUS:CAN:ADDRess`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._condition = TriggerABusCanCondition(device, f"{self._cmd_syntax}:CONDition")
        self._data = TriggerABusCanData(device, f"{self._cmd_syntax}:DATa")
        self._frametype = TriggerABusCanFrametype(device, f"{self._cmd_syntax}:FRAMEtype")
        self._identifier = TriggerABusCanIdentifier(device, f"{self._cmd_syntax}:IDentifier")
        self._address = TriggerABusCanAddress(device, f"{self._cmd_syntax}:ADDRess")

    @property
    def condition(self) -> TriggerABusCanCondition:
        """Return the ``TRIGger:A:BUS:CAN:CONDition`` command.

        **Description:**
            - This command sets or queries the CAN bus trigger condition.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:CONDition?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:CONDition?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:CAN:CONDition value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:CONDition {ERRor|DATA|IDANDDATA|EOF|IDentifier|ACKMISS|SOF|FRAMEtype}
            - TRIGger:A:BUS:CAN:CONDition?
        """  # noqa: E501
        return self._condition

    @property
    def data(self) -> TriggerABusCanData:
        """Return the ``TRIGger:A:BUS:CAN:DATa`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:DATa?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.direction``: The ``TRIGger:A:BUS:CAN:DATa:DIRection`` command.
            - ``.format``: The ``TRIGger:A:BUS:CAN:DATa:FORMat`` command.
            - ``.qualifier``: The ``TRIGger:A:BUS:CAN:DATa:QUALifier`` command.
            - ``.size``: The ``TRIGger:A:BUS:CAN:DATa:SIZe`` command.
            - ``.value``: The ``TRIGger:A:BUS:CAN:DATa:VALue`` command.
        """
        return self._data

    @property
    def frametype(self) -> TriggerABusCanFrametype:
        """Return the ``TRIGger:A:BUS:CAN:FRAMEtype`` command.

        **Description:**
            - This command sets or queries CAN bus trigger frame type.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:FRAMEtype?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:FRAMEtype?``
              query and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:CAN:FRAMEtype value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:CAN:FRAMEtype {DATa|ERRor|OVERLoad|REMote}
            - TRIGger:A:BUS:CAN:FRAMEtype?
        """
        return self._frametype

    @property
    def identifier(self) -> TriggerABusCanIdentifier:
        """Return the ``TRIGger:A:BUS:CAN:IDentifier`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:IDentifier?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:IDentifier?``
              query and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.direction``: The ``TRIGger:A:BUS:CAN:IDentifier:DIRection`` command.
            - ``.format``: The ``TRIGger:A:BUS:CAN:IDentifier:FORMat`` command.
            - ``.mode``: The ``TRIGger:A:BUS:CAN:IDentifier:MODe`` command.
            - ``.value``: The ``TRIGger:A:BUS:CAN:IDentifier:VALue`` command.
        """
        return self._identifier

    @property
    def address(self) -> TriggerABusCanAddress:
        """Return the ``TRIGger:A:BUS:CAN:ADDRess`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN:ADDRess?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN:ADDRess?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.direction``: The ``TRIGger:A:BUS:CAN:ADDRess:DIRection`` command.
            - ``.format``: The ``TRIGger:A:BUS:CAN:ADDRess:FORMat`` command.
            - ``.mode``: The ``TRIGger:A:BUS:CAN:ADDRess:MODe`` command.
            - ``.value``: The ``TRIGger:A:BUS:CAN:ADDRess:VALue`` command.
        """
        return self._address


#  pylint: disable=too-many-instance-attributes
class TriggerABus(SCPICmdRead):
    """The ``TRIGger:A:BUS`` command tree.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A:BUS?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS?`` query and raise an
          AssertionError if the returned value does not match ``value``.

    Properties:
        - ``.can``: The ``TRIGger:A:BUS:CAN`` command tree.
        - ``.data``: The ``TRIGger:A:BUS:DATa`` command tree.
        - ``.ethernet``: The ``TRIGger:A:BUS:ETHERnet`` command tree.
        - ``.flexray``: The ``TRIGger:A:BUS:FLEXRAY`` command tree.
        - ``.i2c``: The ``TRIGger:A:BUS:I2C`` command tree.
        - ``.lin``: The ``TRIGger:A:BUS:LIN`` command tree.
        - ``.mil1553b``: The ``TRIGger:A:BUS:MIL1553B`` command tree.
        - ``.pcie``: The ``TRIGger:A:BUS:PCIE`` command tree.
        - ``.rs232c``: The ``TRIGger:A:BUS:RS232C`` command tree.
        - ``.s64b66b``: The ``TRIGger:A:BUS:S64B66B`` command tree.
        - ``.s8b10b``: The ``TRIGger:A:BUS:S8B10B`` command tree.
        - ``.source``: The ``TRIGger:A:BUS:SOUrce`` command.
        - ``.spi``: The ``TRIGger:A:BUS:SPI`` command tree.
        - ``.usb``: The ``TRIGger:A:BUS:USB`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._can = TriggerABusCan(device, f"{self._cmd_syntax}:CAN")
        self._data = TriggerABusData(device, f"{self._cmd_syntax}:DATa")
        self._ethernet = TriggerABusEthernet(device, f"{self._cmd_syntax}:ETHERnet")
        self._flexray = TriggerABusFlexray(device, f"{self._cmd_syntax}:FLEXRAY")
        self._i2c = TriggerABusI2c(device, f"{self._cmd_syntax}:I2C")
        self._lin = TriggerABusLin(device, f"{self._cmd_syntax}:LIN")
        self._mil1553b = TriggerABusMil1553b(device, f"{self._cmd_syntax}:MIL1553B")
        self._pcie = TriggerABusPcie(device, f"{self._cmd_syntax}:PCIE")
        self._rs232c = TriggerABusRs232c(device, f"{self._cmd_syntax}:RS232C")
        self._s64b66b = TriggerABusS64b66b(device, f"{self._cmd_syntax}:S64B66B")
        self._s8b10b = TriggerABusS8b10b(device, f"{self._cmd_syntax}:S8B10B")
        self._source = TriggerABusSource(device, f"{self._cmd_syntax}:SOUrce")
        self._spi = TriggerABusSpi(device, f"{self._cmd_syntax}:SPI")
        self._usb = TriggerABusUsb(device, f"{self._cmd_syntax}:USB")

    @property
    def can(self) -> TriggerABusCan:
        """Return the ``TRIGger:A:BUS:CAN`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:CAN?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:CAN?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.condition``: The ``TRIGger:A:BUS:CAN:CONDition`` command.
            - ``.data``: The ``TRIGger:A:BUS:CAN:DATa`` command tree.
            - ``.frametype``: The ``TRIGger:A:BUS:CAN:FRAMEtype`` command.
            - ``.identifier``: The ``TRIGger:A:BUS:CAN:IDentifier`` command tree.
            - ``.address``: The ``TRIGger:A:BUS:CAN:ADDRess`` command tree.
        """
        return self._can

    @property
    def data(self) -> TriggerABusData:
        """Return the ``TRIGger:A:BUS:DATa`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:DATa?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:DATa?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.format``: The ``TRIGger:A:BUS:DATa:FORMat`` command.
            - ``.value``: The ``TRIGger:A:BUS:DATa:VALue`` command.
        """
        return self._data

    @property
    def ethernet(self) -> TriggerABusEthernet:
        """Return the ``TRIGger:A:BUS:ETHERnet`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:ETHERnet?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:ETHERnet?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.data``: The ``TRIGger:A:BUS:ETHERnet:DATa`` command tree.
            - ``.ipheader``: The ``TRIGger:A:BUS:ETHERnet:IPHeader`` command tree.
        """
        return self._ethernet

    @property
    def flexray(self) -> TriggerABusFlexray:
        """Return the ``TRIGger:A:BUS:FLEXRAY`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:FLEXRAY?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:FLEXRAY?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.condition``: The ``TRIGger:A:BUS:FLEXRAY:CONDition`` command.
            - ``.cyclecount``: The ``TRIGger:A:BUS:FLEXRAY:CYCLEcount`` command tree.
            - ``.data``: The ``TRIGger:A:BUS:FLEXRAY:DATa`` command tree.
            - ``.eoftype``: The ``TRIGger:A:BUS:FLEXRAY:EOFTYPE`` command.
            - ``.errtype``: The ``TRIGger:A:BUS:FLEXRAY:ERRTYPE`` command.
            - ``.frametype``: The ``TRIGger:A:BUS:FLEXRAY:FRAMEType`` command.
            - ``.header``: The ``TRIGger:A:BUS:FLEXRAY:HEADER`` command tree.
            - ``.identifier``: The ``TRIGger:A:BUS:FLEXRAY:IDentifier`` command tree.
        """
        return self._flexray

    @property
    def i2c(self) -> TriggerABusI2c:
        """Return the ``TRIGger:A:BUS:I2C`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:I2C?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:I2C?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.address``: The ``TRIGger:A:BUS:I2C:ADDress`` command tree.
            - ``.condition``: The ``TRIGger:A:BUS:I2C:CONDition`` command.
            - ``.data``: The ``TRIGger:A:BUS:I2C:DATa`` command tree.
        """
        return self._i2c

    @property
    def lin(self) -> TriggerABusLin:
        """Return the ``TRIGger:A:BUS:LIN`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:LIN?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:LIN?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.condition``: The ``TRIGger:A:BUS:LIN:CONDition`` command.
            - ``.data``: The ``TRIGger:A:BUS:LIN:DATa`` command tree.
            - ``.errtype``: The ``TRIGger:A:BUS:LIN:ERRTYPE`` command.
            - ``.identifier``: The ``TRIGger:A:BUS:LIN:IDentifier`` command tree.
        """
        return self._lin

    @property
    def mil1553b(self) -> TriggerABusMil1553b:
        """Return the ``TRIGger:A:BUS:MIL1553B`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:MIL1553B?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:MIL1553B?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.command``: The ``TRIGger:A:BUS:MIL1553B:COMMAND`` command tree.
            - ``.condition``: The ``TRIGger:A:BUS:MIL1553B:CONDition`` command.
            - ``.data``: The ``TRIGger:A:BUS:MIL1553B:DATA`` command tree.
            - ``.errtype``: The ``TRIGger:A:BUS:MIL1553B:ERRTYPE`` command.
            - ``.status``: The ``TRIGger:A:BUS:MIL1553B:STATUS`` command tree.
            - ``.time``: The ``TRIGger:A:BUS:MIL1553B:TIME`` command tree.
        """
        return self._mil1553b

    @property
    def pcie(self) -> TriggerABusPcie:
        """Return the ``TRIGger:A:BUS:PCIE`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:PCIE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:PCIE?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.character``: The ``TRIGger:A:BUS:PCIE:CHARacter`` command tree.
            - ``.condition``: The ``TRIGger:A:BUS:PCIE:CONDition`` command.
            - ``.disparity``: The ``TRIGger:A:BUS:PCIE:DISParity`` command.
            - ``.error``: The ``TRIGger:A:BUS:PCIE:ERROR`` command.
            - ``.format``: The ``TRIGger:A:BUS:PCIE:FORMat`` command.
            - ``.pattern``: The ``TRIGger:A:BUS:PCIE:PATtern`` command tree.
        """
        return self._pcie

    @property
    def rs232c(self) -> TriggerABusRs232c:
        """Return the ``TRIGger:A:BUS:RS232C`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:RS232C?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:RS232C?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.condition``: The ``TRIGger:A:BUS:RS232C:CONDition`` command.
            - ``.data``: The ``TRIGger:A:BUS:RS232C:DATa`` command tree.
        """
        return self._rs232c

    @property
    def s64b66b(self) -> TriggerABusS64b66b:
        """Return the ``TRIGger:A:BUS:S64B66B`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S64B66B?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S64B66B?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.blockone``: The ``TRIGger:A:BUS:S64B66B:BLOCKONE`` command.
            - ``.blockonethentwo``: The ``TRIGger:A:BUS:S64B66B:BLOCKONETHENTWO`` command tree.
            - ``.condition``: The ``TRIGger:A:BUS:S64B66B:CONDition`` command.
        """
        return self._s64b66b

    @property
    def s8b10b(self) -> TriggerABusS8b10b:
        """Return the ``TRIGger:A:BUS:S8B10B`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:S8B10B?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:S8B10B?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.character``: The ``TRIGger:A:BUS:S8B10B:CHARacter`` command tree.
            - ``.condition``: The ``TRIGger:A:BUS:S8B10B:CONDition`` command.
            - ``.disparity``: The ``TRIGger:A:BUS:S8B10B:DISParity`` command.
            - ``.error``: The ``TRIGger:A:BUS:S8B10B:ERROR`` command.
            - ``.format``: The ``TRIGger:A:BUS:S8B10B:FORMat`` command.
            - ``.pattern``: The ``TRIGger:A:BUS:S8B10B:PATtern`` command tree.
        """
        return self._s8b10b

    @property
    def source(self) -> TriggerABusSource:
        """Return the ``TRIGger:A:BUS:SOUrce`` command.

        **Description:**
            - This command sets or returns the source for a bus trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SOUrce?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SOUrce?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:BUS:SOUrce value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:BUS:SOUrce {B1|B2|B3|B4|B5|B6|B7|B8|B9|B10|B11|B12| B13|B14|B15|B16}
            - TRIGger:A:BUS:SOUrce?

        **Info:**
            - ``B<x>`` sets the selected source to the bus. x has a minimum of 1 and a maximum of
              16.
        """
        return self._source

    @property
    def spi(self) -> TriggerABusSpi:
        """Return the ``TRIGger:A:BUS:SPI`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:SPI?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:SPI?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.condition``: The ``TRIGger:A:BUS:SPI:CONDition`` command.
            - ``.data``: The ``TRIGger:A:BUS:SPI:DATa`` command tree.
        """
        return self._spi

    @property
    def usb(self) -> TriggerABusUsb:
        """Return the ``TRIGger:A:BUS:USB`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS:USB?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS:USB?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.address``: The ``TRIGger:A:BUS:USB:ADDress`` command tree.
            - ``.character``: The ``TRIGger:A:BUS:USB:CHARacter`` command tree.
            - ``.condition``: The ``TRIGger:A:BUS:USB:CONDition`` command.
            - ``.data``: The ``TRIGger:A:BUS:USB:DATa`` command tree.
            - ``.disparity``: The ``TRIGger:A:BUS:USB:DISParity`` command.
            - ``.endpoint``: The ``TRIGger:A:BUS:USB:ENDPoint`` command tree.
            - ``.error``: The ``TRIGger:A:BUS:USB:ERROR`` command.
            - ``.errtype``: The ``TRIGger:A:BUS:USB:ERRTYPE`` command.
            - ``.format``: The ``TRIGger:A:BUS:USB:FORMat`` command.
            - ``.handshaketype``: The ``TRIGger:A:BUS:USB:HANDShaketype`` command.
            - ``.pattern``: The ``TRIGger:A:BUS:USB:PATtern`` command tree.
            - ``.qualifier``: The ``TRIGger:A:BUS:USB:QUAlifier`` command.
            - ``.sof``: The ``TRIGger:A:BUS:USB:SOF`` command tree.
            - ``.specialtype``: The ``TRIGger:A:BUS:USB:SPECIALType`` command.
            - ``.split``: The ``TRIGger:A:BUS:USB:SPLIT`` command tree.
            - ``.tokentype``: The ``TRIGger:A:BUS:USB:TOKENType`` command.
        """
        return self._usb


#  pylint: disable=too-many-instance-attributes
class TriggerA(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger:A`` command.

    **Description:**
        - This command sets the A trigger level automatically to 50% of the range of the minimum and
          maximum values of the trigger input signal. The query returns current trigger parameters.
          The trigger level is the voltage threshold through which the trigger source signal must
          pass to generate a trigger event. This command is equivalent to pushing the LEVEL knob on
          the front panel.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger:A?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger:A?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger:A value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger:A SETLevel
        - TRIGger:A?

    **Info:**
        - ``SETLevel`` sets the trigger level to 50% of the range of the minimum and maximum values
          of the trigger input signal.

    Properties:
        - ``.bus``: The ``TRIGger:A:BUS`` command tree.
        - ``.can``: The ``TRIGger:A:CAN`` command tree.
        - ``.communication``: The ``TRIGger:A:COMMunication`` command tree.
        - ``.holdoff``: The ``TRIGger:A:HOLDoff`` command.
        - ``.i2c``: The ``TRIGger:A:I2C`` command tree.
        - ``.mode``: The ``TRIGger:A:MODe`` command.
        - ``.plock``: The ``TRIGger:A:PLOCK`` command tree.
        - ``.pulse``: The ``TRIGger:A:PULse`` command tree.
        - ``.serial``: The ``TRIGger:A:SERIAL`` command tree.
        - ``.spi``: The ``TRIGger:A:SPI`` command tree.
        - ``.video``: The ``TRIGger:A:VIDeo`` command.
        - ``.edge``: The ``TRIGger:A:EDGE`` command.
        - ``.level``: The ``TRIGger:A:LEVel`` command.
        - ``.logic``: The ``TRIGger:A:LOGIc`` command.
        - ``.lowerthreshold``: The ``TRIGger:A:LOWerthreshold`` command tree.
        - ``.ready``: The ``TRIGger:A:READY`` command.
        - ``.type``: The ``TRIGger:A:TYPe`` command.
        - ``.upperthreshold``: The ``TRIGger:A:UPPerthreshold`` command tree.
    """

    def __init__(self, device: Optional["PIDevice"], cmd_syntax: str) -> None:
        super().__init__(device, cmd_syntax)
        self._bus = TriggerABus(device, f"{self._cmd_syntax}:BUS")
        self._can = TriggerACan(device, f"{self._cmd_syntax}:CAN")
        self._communication = TriggerACommunication(device, f"{self._cmd_syntax}:COMMunication")
        self._holdoff = TriggerAHoldoff(device, f"{self._cmd_syntax}:HOLDoff")
        self._i2c = TriggerAI2c(device, f"{self._cmd_syntax}:I2C")
        self._mode = TriggerAMode(device, f"{self._cmd_syntax}:MODe")
        self._plock = TriggerAPlock(device, f"{self._cmd_syntax}:PLOCK")
        self._serial = TriggerASerial(device, f"{self._cmd_syntax}:SERIAL")
        self._spi = TriggerASpi(device, f"{self._cmd_syntax}:SPI")
        self._video = TriggerAVideo(device, f"{self._cmd_syntax}:VIDeo")
        self._edge = TriggerAEdge(device, f"{self._cmd_syntax}:EDGE")
        self._level = TriggerALevel(device, f"{self._cmd_syntax}:LEVel")
        self._logic = TriggerALogic(device, f"{self._cmd_syntax}:LOGIc")
        self._lowerthreshold = TriggerALowerthreshold(device, f"{self._cmd_syntax}:LOWerthreshold")
        self._pulse = TriggerAPulse(device, f"{self._cmd_syntax}:PULse")
        self._ready = TriggerAReady(device, f"{self._cmd_syntax}:READY")
        self._type = TriggerAType(device, f"{self._cmd_syntax}:TYPe")
        self._upperthreshold = TriggerAUpperthreshold(device, f"{self._cmd_syntax}:UPPerthreshold")

    @property
    def bus(self) -> TriggerABus:
        """Return the ``TRIGger:A:BUS`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:BUS?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:BUS?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.can``: The ``TRIGger:A:BUS:CAN`` command tree.
            - ``.data``: The ``TRIGger:A:BUS:DATa`` command tree.
            - ``.ethernet``: The ``TRIGger:A:BUS:ETHERnet`` command tree.
            - ``.flexray``: The ``TRIGger:A:BUS:FLEXRAY`` command tree.
            - ``.i2c``: The ``TRIGger:A:BUS:I2C`` command tree.
            - ``.lin``: The ``TRIGger:A:BUS:LIN`` command tree.
            - ``.mil1553b``: The ``TRIGger:A:BUS:MIL1553B`` command tree.
            - ``.pcie``: The ``TRIGger:A:BUS:PCIE`` command tree.
            - ``.rs232c``: The ``TRIGger:A:BUS:RS232C`` command tree.
            - ``.s64b66b``: The ``TRIGger:A:BUS:S64B66B`` command tree.
            - ``.s8b10b``: The ``TRIGger:A:BUS:S8B10B`` command tree.
            - ``.source``: The ``TRIGger:A:BUS:SOUrce`` command.
            - ``.spi``: The ``TRIGger:A:BUS:SPI`` command tree.
            - ``.usb``: The ``TRIGger:A:BUS:USB`` command tree.
        """
        return self._bus

    @property
    def can(self) -> TriggerACan:
        """Return the ``TRIGger:A:CAN`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:CAN?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:CAN?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.condition``: The ``TRIGger:A:CAN:CONDition`` command.
            - ``.data``: The ``TRIGger:A:CAN:DATa`` command tree.
            - ``.format``: The ``TRIGger:A:CAN:FORMat`` command.
            - ``.frametype``: The ``TRIGger:A:CAN:FRAMEtype`` command.
            - ``.identifier``: The ``TRIGger:A:CAN:IDENTifier`` command tree.
            - ``.probe``: The ``TRIGger:A:CAN:PROBE`` command.
            - ``.speed``: The ``TRIGger:A:CAN:SPEed`` command.
        """
        return self._can

    @property
    def communication(self) -> TriggerACommunication:
        """Return the ``TRIGger:A:COMMunication`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:COMMunication?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:COMMunication?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.bitrate``: The ``TRIGger:A:COMMunication:BITRate`` command.
            - ``.clock``: The ``TRIGger:A:COMMunication:CLOCk`` command tree.
            - ``.cmi``: The ``TRIGger:A:COMMunication:CMI`` command tree.
            - ``.code``: The ``TRIGger:A:COMMunication:CODe`` command.
            - ``.source``: The ``TRIGger:A:COMMunication:SOUrce`` command.
            - ``.standard``: The ``TRIGger:A:COMMunication:STANdard`` command.
            - ``.ami``: The ``TRIGger:A:COMMunication:AMI`` command tree.
            - ``.hdb3``: The ``TRIGger:A:COMMunication:HDB3`` command tree.
            - ``.b3zs``: The ``TRIGger:A:COMMunication:B3ZS`` command tree.
            - ``.b6zs``: The ``TRIGger:A:COMMunication:B6ZS`` command tree.
            - ``.b8zs``: The ``TRIGger:A:COMMunication:B8ZS`` command tree.
        """
        return self._communication

    @property
    def holdoff(self) -> TriggerAHoldoff:
        """Return the ``TRIGger:A:HOLDoff`` command.

        **Description:**
            - Returns the A trigger holdoff parameters. These parameters specify the time period
              during which the trigger circuitry is not looking to generate a trigger event.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:HOLDoff?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:HOLDoff?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:HOLDoff?

        Sub-properties:
            - ``.actual``: The ``TRIGger:A:HOLDoff:ACTUal`` command.
            - ``.by``: The ``TRIGger:A:HOLDoff:BY`` command.
            - ``.time``: The ``TRIGger:A:HOLDoff:TIMe`` command.
        """
        return self._holdoff

    @property
    def i2c(self) -> TriggerAI2c:
        """Return the ``TRIGger:A:I2C`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:I2C?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:I2C?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.address``: The ``TRIGger:A:I2C:ADDRess`` command tree.
        """
        return self._i2c

    @property
    def mode(self) -> TriggerAMode:
        """Return the ``TRIGger:A:MODe`` command.

        **Description:**
            - This command sets or queries the A trigger mode. This command is equivalent to pushing
              the Mode button on the front panel.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:MODe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:MODe?`` query and raise
              an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:MODe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:MODe {AUTO|NORMal}
            - TRIGger:A:MODe?

        **Info:**
            - ``AUTO`` generates a trigger if one is not detected within a specified time period.
            - ``NORMal`` waits for a valid trigger event.
        """
        return self._mode

    @property
    def plock(self) -> TriggerAPlock:
        """Return the ``TRIGger:A:PLOCK`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PLOCK?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PLOCK?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.count``: The ``TRIGger:A:PLOCK:COUNT`` command.
            - ``.length``: The ``TRIGger:A:PLOCK:LENGTH`` command.
            - ``.source``: The ``TRIGger:A:PLOCK:SOURCE`` command.
        """
        return self._plock

    @property
    def serial(self) -> TriggerASerial:
        """Return the ``TRIGger:A:SERIAL`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SERIAL?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SERIAL?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.bitrate``: The ``TRIGger:A:SERIAL:BITRate`` command.
            - ``.clock``: The ``TRIGger:A:SERIAL:CLOCk`` command tree.
            - ``.code``: The ``TRIGger:A:SERIAL:CODe`` command.
            - ``.data``: The ``TRIGger:A:SERIAL:DATa`` command tree.
            - ``.errordetector``: The ``TRIGger:A:SERIAL:ERRORdetector`` command tree.
            - ``.locklen``: The ``TRIGger:A:SERIAL:LOCKLen`` command.
            - ``.lockoffset``: The ``TRIGger:A:SERIAL:LOCKOffset`` command.
            - ``.source``: The ``TRIGger:A:SERIAL:SOUrce`` command.
            - ``.standard``: The ``TRIGger:A:SERIAL:STANdard`` command.
            - ``.triggeron``: The ``TRIGger:A:SERIAL:TRIGgeron`` command.
        """
        return self._serial

    @property
    def spi(self) -> TriggerASpi:
        """Return the ``TRIGger:A:SPI`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:SPI?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:SPI?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.condition``: The ``TRIGger:A:SPI:CONDition`` command.
            - ``.data``: The ``TRIGger:A:SPI:DATa`` command tree.
            - ``.format``: The ``TRIGger:A:SPI:FORMat`` command.
            - ``.sclk``: The ``TRIGger:A:SPI:SCLK`` command tree.
            - ``.ss``: The ``TRIGger:A:SPI:SS`` command tree.
        """
        return self._spi

    @property
    def video(self) -> TriggerAVideo:
        """Return the ``TRIGger:A:VIDeo`` command.

        **Description:**
            - Returns the A trigger video parameters.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:VIDeo?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:VIDeo?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:VIDeo?

        Sub-properties:
            - ``.custom``: The ``TRIGger:A:VIDeo:CUSTom`` command.
            - ``.field``: The ``TRIGger:A:VIDeo:FIELD`` command.
            - ``.holdoff``: The ``TRIGger:A:VIDeo:HOLdoff`` command tree.
            - ``.line``: The ``TRIGger:A:VIDeo:LINE`` command.
            - ``.polarity``: The ``TRIGger:A:VIDeo:POLarity`` command.
            - ``.scan``: The ``TRIGger:A:VIDeo:SCAN`` command.
            - ``.source``: The ``TRIGger:A:VIDeo:SOUrce`` command.
            - ``.standard``: The ``TRIGger:A:VIDeo:STANdard`` command.
        """
        return self._video

    @property
    def edge(self) -> TriggerAEdge:
        """Return the ``TRIGger:A:EDGE`` command.

        **Description:**
            - This query-only command returns the trigger source, coupling, and slope for the
              specified edge trigger. This command is equivalent to selecting Edge Setup from the
              Trig menu and viewing the current setups, or selecting B Event (Delayed) Trigger Setup
              from the Trig menu and viewing the current Source, Slope, and Coupling settings.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:EDGE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:EDGE?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:EDGE?

        Sub-properties:
            - ``.coupling``: The ``TRIGger:A:EDGE:COUPling`` command.
            - ``.slope``: The ``TRIGger:A:EDGE:SLOpe`` command.
            - ``.source``: The ``TRIGger:A:EDGE:SOUrce`` command.
        """
        return self._edge

    @property
    def level(self) -> TriggerALevel:
        """Return the ``TRIGger:A:LEVel`` command.

        **Description:**
            - This command sets or queries the level for the trigger. This command is equivalent to
              selecting Holdoff from the Trig menu and then viewing or setting the trigger Level or
              selecting B Event (Delayed) Trigger Setup from the Trig menu and setting the B Trig
              Level voltage.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LEVel?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LEVel?`` query and raise
              an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:LEVel value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LEVel {ECL|TTL|<NR3>}
            - TRIGger:A:LEVel?

        **Info:**
            - ``ECL`` specifies the ECL high level.
            - ``TTL`` specifies the TTL high level.
            - ``<NR3>`` specifies the trigger level in user units (usually volts).

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:LEVel:CH<x>`` command.
        """
        return self._level

    @property
    def logic(self) -> TriggerALogic:
        """Return the ``TRIGger:A:LOGIc`` command.

        **Description:**
            - This query-only command returns all of the logic trigger parameters.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOGIc?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOGIc?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:LOGIc?

        Sub-properties:
            - ``.class``: The ``TRIGger:A:LOGIc:CLAss`` command.
            - ``.function``: The ``TRIGger:A:LOGIc:FUNCtion`` command.
            - ``.input``: The ``TRIGger:A:LOGIc:INPut`` command.
            - ``.pattern``: The ``TRIGger:A:LOGIc:PATtern`` command.
            - ``.sethold``: The ``TRIGger:A:LOGIc:SETHold`` command.
            - ``.state``: The ``TRIGger:A:LOGIc:STATE`` command.
            - ``.threshold``: The ``TRIGger:A:LOGIc:THReshold`` command.
        """
        return self._logic

    @property
    def lowerthreshold(self) -> TriggerALowerthreshold:
        """Return the ``TRIGger:A:LOWerthreshold`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:LOWerthreshold?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:LOWerthreshold?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:LOWerthreshold:CH<x>`` command.
        """
        return self._lowerthreshold

    @property
    def pulse(self) -> TriggerAPulse:
        """Return the ``TRIGger:A:PULse`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:PULse?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:PULse?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.period``: The ``TRIGger:A:PULse:PERiod`` command.
            - ``.runt``: The ``TRIGger:A:PULse:RUNT`` command tree.
            - ``.window``: The ``TRIGger:A:PULse:WINdow`` command tree.
            - ``.class``: The ``TRIGger:A:PULse:CLAss`` command.
            - ``.glitch``: The ``TRIGger:A:PULse:GLItch`` command.
            - ``.source``: The ``TRIGger:A:PULse:SOUrce`` command.
            - ``.timeout``: The ``TRIGger:A:PULse:TIMEOut`` command.
            - ``.transition``: The ``TRIGger:A:PULse:TRANsition`` command.
            - ``.width``: The ``TRIGger:A:PULse:WIDth`` command.
        """
        return self._pulse

    @property
    def ready(self) -> TriggerAReady:
        """Return the ``TRIGger:A:READY`` command.

        **Description:**
            - This command queries the trigger ready state and provides the immediate state from the
              trigger system. It is a more synchronous means of determining when the oscilloscope is
              ready to trigger. The ``TRIGGER:STATE`` reflects a less-frequently updated status of
              the trigger LEDs on the instrument front panel.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:READY?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:READY?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:A:READY?
        """
        return self._ready

    @property
    def type(self) -> TriggerAType:
        """Return the ``TRIGger:A:TYPe`` command.

        **Description:**
            - This command sets or queries the type of A or B trigger. Logic and Pulse triggers
              contain classes. Logic triggers consist of State and Pattern classes; Pulse triggers
              consist of Glitch, Runt, Width, Transition, Timeout, and Window classes. Once you have
              set the trigger type, you might also need to identify the associated trigger class.
              For details on selecting Logic and Pulse trigger classes, see and respectively. This
              command is similar to selecting Event Trigger Setup from the Trig menu and then
              selecting the desired Trigger Type. Some trigger types are not available on some
              instruments.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:TYPe?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:TYPe?`` query and raise
              an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A:TYPe value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A:TYPe {EDGE|LOGIc|PULse|VIDeo| I2C|CAN|SPI|COMMunication|SERIAL|RS232}}
            - TRIGger:A:TYPe?

        **Info:**
            - ``EDGE`` is a normal trigger. A trigger event occurs when a signal passes through a
              specified voltage level in a specified direction and is controlled by the
              ``TRIGger:A:EDGE`` commands.
            - ``LOGIc`` specifies that a trigger occurs when specified conditions are met and is
              controlled by the ``TRIGger:A:LOGIc`` commands.
            - ``PULse`` specifies that a trigger occurs when a specified pulse is found and is
              controlled by the ``TRIGger:A:PULse`` commands.
            - ``VIDeo`` specifies that the trigger occurs when a video signal is found. Requires an
              instrument with video hardware.
            - ``I2C`` specifies that a trigger occurs when an Inter-IC Control signal is found.
            - ``CAN`` specifies that a trigger occurs when a Controller Area Network frame signal is
              found.
            - ``SPI`` specifies that a trigger occurs when a Serial Peripheral Interface signal is
              found.
            - ``COMMunication`` (Option MTM) specifies that a trigger occurs when a communications
              signal is found. Supports AMI, HDB3, B3ZS, B6ZS, B8ZS, CMI, MLT3, Manchester, and NRZ
              encoded communications signals. COMMunication is available only if Option MTM is
              installed.
            - ``SERIAL`` specifies that a trigger occurs when NRZ-encoded data is found, providing a
              32-bit serial word. This argument is available with instruments with Option PTM.
            - ``RS232`` takes a signal on a data source and allows you to trigger on data within the
              RS232 bitstream. The data is only one byte wide.
        """
        return self._type

    @property
    def upperthreshold(self) -> TriggerAUpperthreshold:
        """Return the ``TRIGger:A:UPPerthreshold`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A:UPPerthreshold?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A:UPPerthreshold?`` query
              and raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.ch``: The ``TRIGger:A:UPPerthreshold:CH<x>`` command.
        """
        return self._upperthreshold


#  pylint: disable=too-many-instance-attributes
class Trigger(SCPICmdWrite, SCPICmdRead):
    """The ``TRIGger`` command.

    **Description:**
        - This command forces a trigger event to occur. The query returns the current trigger
          parameters for the instrument.

    **Usage:**
        - Using the ``.query()`` method will send the ``TRIGger?`` query.
        - Using the ``.verify(value)`` method will send the ``TRIGger?`` query and raise an
          AssertionError if the returned value does not match ``value``.
        - Using the ``.write(value)`` method will send the ``TRIGger value`` command.

    **SCPI Syntax:**

    ::

        - TRIGger FORCe
        - TRIGger?

    **Info:**
        - ``FORCe`` creates a trigger event. If ``TRIGger:STATE`` is set to READy, the acquisition
          will complete. Otherwise, this command will be ignored. This is equivalent to pressing the
          Force button on the front panel.

    Properties:
        - ``.a``: The ``TRIGger:A`` command.
        - ``.auxlevel``: The ``TRIGger:AUXLevel`` command.
        - ``.b``: The ``TRIGger:B`` command.
        - ``.enhanced``: The ``TRIGger:ENHanced`` command.
        - ``.equation``: The ``TRIGger:EQUation<x>`` command.
        - ``.lvlsrcpreference``: The ``TRIGger:LVLSrcpreference`` command.
        - ``.main``: The ``TRIGger:MAIn`` command tree.
        - ``.multiscope``: The ``TRIGger:MULTiscope`` command.
        - ``.qualification``: The ``TRIGger:QUALification`` command tree.
        - ``.sensitivity``: The ``TRIGger:SENSITivity`` command.
        - ``.showequation``: The ``TRIGger:SHOWEQuation`` command.
        - ``.state``: The ``TRIGger:STATE`` command.
    """

    def __init__(self, device: Optional["PIDevice"] = None, cmd_syntax: str = "TRIGger") -> None:
        super().__init__(device, cmd_syntax)
        self._auxlevel = TriggerAuxlevel(device, f"{self._cmd_syntax}:AUXLevel")
        self._enhanced = TriggerEnhanced(device, f"{self._cmd_syntax}:ENHanced")
        self._equation: Dict[int, TriggerEquationItem] = DefaultDictPassKeyToFactory(
            lambda x: TriggerEquationItem(device, f"{self._cmd_syntax}:EQUation{x}")
        )
        self._lvlsrcpreference = TriggerLvlsrcpreference(
            device, f"{self._cmd_syntax}:LVLSrcpreference"
        )
        self._main = TriggerMain(device, f"{self._cmd_syntax}:MAIn")
        self._multiscope = TriggerMultiscope(device, f"{self._cmd_syntax}:MULTiscope")
        self._qualification = TriggerQualification(device, f"{self._cmd_syntax}:QUALification")
        self._sensitivity = TriggerSensitivity(device, f"{self._cmd_syntax}:SENSITivity")
        self._showequation = TriggerShowequation(device, f"{self._cmd_syntax}:SHOWEQuation")
        self._state = TriggerState(device, f"{self._cmd_syntax}:STATE")
        self._a = TriggerA(device, f"{self._cmd_syntax}:A")
        self._b = TriggerB(device, f"{self._cmd_syntax}:B")

    @property
    def auxlevel(self) -> TriggerAuxlevel:
        """Return the ``TRIGger:AUXLevel`` command.

        **Description:**
            - For those instruments that have an Auxiliary Input (such as an MSO58LP), this command
              sets or queries the Auxiliary Input voltage level to use for an edge trigger.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:AUXLevel?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:AUXLevel?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:AUXLevel value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:AUXLevel {<NR3>|ECL|TTL}
            - TRIGger:AUXLevel?

        **Info:**
            - ``<NR3>`` is trigger level in Volts.
            - ``ECL`` sets trigger level to -1.3 Volts.
            - ``TTL`` sets trigger level to 1.4 Volts.
        """
        return self._auxlevel

    @property
    def enhanced(self) -> TriggerEnhanced:
        """Return the ``TRIGger:ENHanced`` command.

        **Description:**
            - This command sets or queries the state of trigger position enhancement. When on, the
              instrument improves the trigger positioning to more closely match the acquired data.
              This is equivalent to selecting Enhanced Triggering from the Trigger Mode menu.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:ENHanced?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:ENHanced?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:ENHanced value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:ENHanced {<NR1>|OFF|ON}
            - TRIGger:ENHanced?

        **Info:**
            - ``<NR1>`` = 0 disables trigger position enhancement, any other value enables trigger
              position enhancement.
            - ``OFF`` disables trigger position enhancement.
            - ``ON`` enables trigger position enhancement.
        """
        return self._enhanced

    @property
    def equation(self) -> Dict[int, TriggerEquationItem]:
        """Return the ``TRIGger:EQUation<x>`` command.

        **Description:**
            - Sets the Visual Trigger Equation string, which defines the behavior of the areas.
              There can be only one equation, which can be up to 128 characters. You can enter the
              command as ``TRIGGER:EQUATION`` or ``TRIGGER:EQUATION1``. Each area is assigned a
              single source (analog channel 1, 2, 3, or 4). Any analog channel can be used as the
              source for one or more areas. Some basic equations are: (C1 IN A1) - The channel 1
              waveform must intersect with Area 1. (C2 OUT A2) - The channel 2 waveform must NOT
              intersect with Area 2. ((C1 IN A1) and (C2 OUT A2)) - Combines the previous two
              examples.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:EQUation<x>?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:EQUation<x>?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:EQUation<x> value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:EQUation<x> <string>
            - TRIGger:EQUation<x>?

        **Info:**
            - ``<string>`` is the equation that you want to use for visual triggering. This equation
              is shown on the oscilloscope screen when visual triggering is enabled.
        """
        return self._equation

    @property
    def lvlsrcpreference(self) -> TriggerLvlsrcpreference:
        """Return the ``TRIGger:LVLSrcpreference`` command.

        **Description:**
            - This command sets or queries the dependent source/level trigger feature.
              SRCIndependent is the default value.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:LVLSrcpreference?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:LVLSrcpreference?`` query
              and raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:LVLSrcpreference value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:LVLSrcpreference {SRCDependent|SRCIndependent}
            - TRIGger:LVLSrcpreference?

        **Info:**
            - ``SRCDependent`` sets the level of all trigger sources to the value you currently
              select, regardless of the last value selected.
            - ``SRCIndependent`` sets each trigger source to the level you are currently selecting.
        """
        return self._lvlsrcpreference

    @property
    def main(self) -> TriggerMain:
        """Return the ``TRIGger:MAIn`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MAIn?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:MAIn?`` query and raise an
              AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.pulse``: The ``TRIGger:MAIn:PULse`` command tree.
        """
        return self._main

    @property
    def multiscope(self) -> TriggerMultiscope:
        """Return the ``TRIGger:MULTiscope`` command.

        **Description:**
            - This command sets or queries the state of MultiScope triggering, either ENABle or
              DISable.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:MULTiscope?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:MULTiscope?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:MULTiscope value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:MULTiscope {DISable|ENable}
            - TRIGger:MULTiscope?

        **Info:**
            - ``DISable`` sets the MultiScope triggering state to disabled.
            - ``ENable`` sets the MultiScope triggering state to enabled.

        Sub-properties:
            - ``.align``: The ``TRIGger:MULTiscope:ALIGN`` command.
            - ``.delay``: The ``TRIGger:MULTiscope:DELay`` command.
            - ``.logic``: The ``TRIGger:MULTiscope:LOGic`` command.
            - ``.option``: The ``TRIGger:MULTiscope:OPTion`` command.
            - ``.role``: The ``TRIGger:MULTiscope:ROLe`` command.
        """
        return self._multiscope

    @property
    def qualification(self) -> TriggerQualification:
        """Return the ``TRIGger:QUALification`` command tree.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:QUALification?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:QUALification?`` query and
              raise an AssertionError if the returned value does not match ``value``.

        Sub-properties:
            - ``.bus``: The ``TRIGger:QUALification:BUS`` command tree.
        """
        return self._qualification

    @property
    def sensitivity(self) -> TriggerSensitivity:
        """Return the ``TRIGger:SENSITivity`` command.

        **Description:**
            - This command set or queries the state of trigger sensitivity. When on, the instrument
              calculates a rolling average for trigger position enhancement to suppress trigger
              jitter in noisy signals. This is equivalent to selecting Higher Sensitivity for Noisy
              Signals from the Trigger Mode menu. This is available only when ``TRIGGER:ENHANCED``
              or the equivalent check box control is also on.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:SENSITivity?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:SENSITivity?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:SENSITivity value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:SENSITivity {<NR1>|OFF|ON}
            - TRIGger:SENSITivity?

        **Info:**
            - ``<NR1>`` = 0 disables rolling averaging, any other value enables rolling averaging
              for trigger position enhancement.
            - ``OFF`` disables rolling averaging for trigger position enhancement.
            - ``ON`` enables rolling averaging for trigger position enhancement.
        """
        return self._sensitivity

    @property
    def showequation(self) -> TriggerShowequation:
        """Return the ``TRIGger:SHOWEQuation`` command.

        **Description:**
            - Causes the Visual Trigger Equation to be displayed in the upper left portion of the
              oscilloscope graticule.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:SHOWEQuation?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:SHOWEQuation?`` query and
              raise an AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:SHOWEQuation value``
              command.

        **SCPI Syntax:**

        ::

            - TRIGger:SHOWEQuation {ON|OFF}
            - TRIGger:SHOWEQuation?

        **Info:**
            - ``ON`` causes the equation to appear on screen.
            - ``Off`` hides the equation.
        """
        return self._showequation

    @property
    def state(self) -> TriggerState:
        """Return the ``TRIGger:STATE`` command.

        **Description:**
            - This query-only command returns the current state of the triggering system.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:STATE?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:STATE?`` query and raise
              an AssertionError if the returned value does not match ``value``.

        **SCPI Syntax:**

        ::

            - TRIGger:STATE?
        """
        return self._state

    @property
    def a(self) -> TriggerA:
        """Return the ``TRIGger:A`` command.

        **Description:**
            - This command sets the A trigger level automatically to 50% of the range of the minimum
              and maximum values of the trigger input signal. The query returns current trigger
              parameters. The trigger level is the voltage threshold through which the trigger
              source signal must pass to generate a trigger event. This command is equivalent to
              pushing the LEVEL knob on the front panel.

        **Usage:**
            - Using the ``.query()`` method will send the ``TRIGger:A?`` query.
            - Using the ``.verify(value)`` method will send the ``TRIGger:A?`` query and raise an
              AssertionError if the returned value does not match ``value``.
            - Using the ``.write(value)`` method will send the ``TRIGger:A value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:A SETLevel
            - TRIGger:A?

        **Info:**
            - ``SETLevel`` sets the trigger level to 50% of the range of the minimum and maximum
              values of the trigger input signal.

        Sub-properties:
            - ``.bus``: The ``TRIGger:A:BUS`` command tree.
            - ``.can``: The ``TRIGger:A:CAN`` command tree.
            - ``.communication``: The ``TRIGger:A:COMMunication`` command tree.
            - ``.holdoff``: The ``TRIGger:A:HOLDoff`` command.
            - ``.i2c``: The ``TRIGger:A:I2C`` command tree.
            - ``.mode``: The ``TRIGger:A:MODe`` command.
            - ``.plock``: The ``TRIGger:A:PLOCK`` command tree.
            - ``.pulse``: The ``TRIGger:A:PULse`` command tree.
            - ``.serial``: The ``TRIGger:A:SERIAL`` command tree.
            - ``.spi``: The ``TRIGger:A:SPI`` command tree.
            - ``.video``: The ``TRIGger:A:VIDeo`` command.
            - ``.edge``: The ``TRIGger:A:EDGE`` command.
            - ``.level``: The ``TRIGger:A:LEVel`` command.
            - ``.logic``: The ``TRIGger:A:LOGIc`` command.
            - ``.lowerthreshold``: The ``TRIGger:A:LOWerthreshold`` command tree.
            - ``.ready``: The ``TRIGger:A:READY`` command.
            - ``.type``: The ``TRIGger:A:TYPe`` command.
            - ``.upperthreshold``: The ``TRIGger:A:UPPerthreshold`` command tree.
        """
        return self._a

    @property
    def b(self) -> TriggerB:
        """Return the ``TRIGger:B`` command.

        **Description:**
            - This command sets the B trigger level to 50% of minimum and maximum. The query form of
              this command returns the B trigger parameters. This command is similar to selecting B
              Event (Delayed) Trigger Setup from the Trig menu and then viewing the current setups.

        **Usage:**
            - Using the ``.write(value)`` method will send the ``TRIGger:B value`` command.

        **SCPI Syntax:**

        ::

            - TRIGger:B SETLevel

        **Info:**
            - ``SETLevel`` sets the B trigger level to 50% of MIN and MAX.

        Sub-properties:
            - ``.by``: The ``TRIGger:B:BY`` command.
            - ``.events``: The ``TRIGger:B:EVENTS`` command.
            - ``.pulse``: The ``TRIGger:B:PULse`` command tree.
            - ``.reset``: The ``TRIGger:B:RESET`` command tree.
            - ``.scan``: The ``TRIGger:B:SCAN`` command tree.
            - ``.state``: The ``TRIGger:B:STATE`` command.
            - ``.time``: The ``TRIGger:B:TIMe`` command.
            - ``.edge``: The ``TRIGger:B:EDGE`` command.
            - ``.level``: The ``TRIGger:B:LEVel`` command.
            - ``.logic``: The ``TRIGger:B:LOGIc`` command.
            - ``.lowerthreshold``: The ``TRIGger:B:LOWerthreshold`` command tree.
            - ``.ready``: The ``TRIGger:B:READY`` command.
            - ``.type``: The ``TRIGger:B:TYPe`` command.
            - ``.upperthreshold``: The ``TRIGger:B:UPPerthreshold`` command tree.
        """
        return self._b
