from enum import Enum


class TomcatSequencerState:
    IDLE = 0
    READY = 1
    ARMED = 2
    RUNNING = 3
    CHANGING = 4
    ERROR = 15


class AxisDataSignal:
    PositionFeedback = 0
    PositionCommand = 1
    PositionError = 2
    VelocityFeedback = 3
    VelocityCommand = 4
    VelocityError = 5
    AccelerationCommand = 6
    CurrentError = 9
    PositionCommandRaw = 12
    VelocityCommandRaw = 13
    AuxiliaryFeedback = 14
    DigitalInput = 15
    DigitalOutput = 16
    FixtureOffset = 18
    CoordinatedPositionTarget = 41
    DriveStatus = 42
    AxisStatus = 43
    AxisFault = 44
    AccelerationCommandRaw = 45
    PositionCalibrationAll = 50
    PositionFeedbackRollover = 63
    PositionCommandRollover = 64
    VelocityFeedbackAverage = 65
    CurrentFeedbackAverage = 66
    AxisParameter = 68
    Backlash = 72
    HomeState = 73
    PositionCalibration2D = 74
    NormalcyDebug = 75
    TotalMoveTime = 76
    JerkCommandRaw = 78
    ProgramPositionCommand = 79
    PositionOffset = 80
    PositionCommandRawBackwardsDiff = 82
    VelocityCommandRawBackwardsDiffDelta = 83
    DriveStatusActual = 85
    ProgramPositionFeedback = 89
    JogTrajectoryStatus = 94
    PingTest = 95
    AccelerationTime = 109
    DecelerationTime = 110
    AccelerationRate = 111
    DecelerationRate = 112
    AccelerationType = 113
    DecelerationType = 114
    AccelerationMode = 115
    DecelerationMode = 116
    ProgramPosition = 124
    SpeedTarget = 128
    PositionCommandPacket = 131
    DriveSmcMotionState = 132
    PositionCommandRawCal = 140
    VelocityCommandRawCal = 141
    VelocityCommandDrive = 142
    AccelerationCommandDrive = 143
    GalvoLaserOutputRaw = 144
    DriveInterfacePacketInt32 = 147
    DriveInterfacePacketInt16 = 148
    DriveInterfacePacketInt8 = 149
    DriveInterfacePacketDouble = 150
    DriveInterfacePacketFloat = 151
    DriveInterfaceCommandCode = 152
    AccelerationFeedback = 153
    AccelerationCommandRawCal = 154
    PositionCalibrationAllDrive = 155
    BacklashTarget = 156
    DriveMotionRate = 158
    DriveMotionDelay = 159
    CalibrationAdjustmentValue = 160
    ServoRounding = 161
    FeedforwardCurrent = 162
    DriveInterfacePacketInfoBitValue = 164
    AccelerationError = 165
    SuppressedFaults = 167
    DriveInterfacePacketStreamingData = 168
    PositionCommandRawUnfiltered = 169
    TransitionOffsetErrors = 170
    FreezeVelocityCommand = 179
    FreezeVelocityFeedback = 180
    InternalPositionOffsets = 181
    StatusHighLevelOffsetsLastMsec = 182
    ProgramVelocityCommand = 183
    ProgramVelocityFeedback = 184
    DriveMotionDelayLive = 185
    DriveCommunicationDelay = 186
    DriveCommunicationDelayLive = 187
    DriveInterfacePacketResponseInt32 = 189
    DriveInterfacePacketResponseInt16 = 190
    DriveInterfacePacketResponseInt8 = 191
    DriveInterfacePacketResponseDouble = 192
    DriveInterfacePacketResponseFloat = 193
    DriveInterfacePacketBit = 194
    DriveInterfacePacketResponseBit = 195
    SpeedTargetActual = 196
    CoordinatedDistanceRemaining = 199
    SafeZoneState = 230
    PositionErrorGalvo = 235
    MoveReferencePosition = 237
    MoveReferenceCutterOffset = 250
    MoveReferenceCornerOffset = 251
    MoveReferenceTotalOffset = 252
    DistanceLog = 264
    AutoFocusError = 295
    GalvoLaserOutputRawAdvance = 296
    GalvoLaserOnDelay = 297
    GalvoLaserOffDelay = 298
    CalibrationAdjustmentState = 301
    AccuracyCorrectionStartingPosition = 302
    AccuracyCorrectionEndingPosition = 303
    DriveCommandsDelayed = 309
    DriveCommandsLost = 310
    StoStatus = 327
    DriveAssert = 336
    PrimaryFeedback = 366
    AccelerationSCurvePercentage = 371
    DecelerationSCurvePercentage = 372
    GantryMarkerDifference = 390
    PrimaryFeedbackStatus = 392
    HomeTargetPosition = 398
    GantryRealignmentMoveTargetPosition = 399
    GantryDriveControlRealignmentState = 400
    DriveInterfacePositionCommandPhysical = 434
    DriveControlReason = 435
    CurrentFeedback = 7
    CurrentCommand = 8
    AnalogInput0 = 10
    AnalogInput1 = 11
    PhaseACurrentFeedback = 19
    PhaseBCurrentFeedback = 20
    EncoderSine = 21
    EncoderCosine = 22
    AnalogInput2 = 23
    AnalogInput3 = 24
    FrequencyResponseBefore = 25
    FrequencyResponseAfter = 26
    AnalogOutput0 = 31
    AnalogOutput1 = 32
    AnalogOutput2 = 33
    AnalogOutput3 = 34
    DriveMemoryInt32 = 35
    DriveMemoryFloat = 36
    DriveMemoryDouble = 37
    PsoStatus = 38
    DriveTimerDebug = 39
    PositionFeedbackDrive = 77
    PositionCommandDrive = 84
    DriveMemoryInt16 = 125
    DriveMemoryInt8 = 126
    PsoCounter0 = 171
    PsoCounter1 = 172
    PsoCounter2 = 173
    PsoWindow0 = 174
    PsoWindow1 = 175
    DriveDataCaptureSamples = 176
    PositionCommandGalvo = 178
    PrimaryEnDatAbsolutePosition = 197
    ControlEffort = 201
    PhaseAVoltageCommand = 208
    PhaseBVoltageCommand = 209
    PhaseCVoltageCommand = 210
    AmplifierPeakCurrent = 211
    FpgaVersion = 212
    DriveTypeId = 213
    PsoWindow0ArrayIndex = 214
    PsoWindow1ArrayIndex = 215
    PsoDistanceArrayIndex = 216
    AmplifierTemperature = 217
    PsoBitArrayIndex = 218
    MxAbsolutePosition = 219
    ServoUpdateRate = 220
    SettlingTime = 221
    InternalStatusCode = 222
    FirmwareVersionMajor = 223
    FirmwareVersionMinor = 224
    FirmwareVersionPatch = 225
    FirmwareVersionBuild = 226
    DriveTimerDebugMax = 227
    MarkerSearchDistance = 228
    PositionFeedbackGalvo = 234
    LatchedMarkerPosition = 236
    PrimaryBissAbsolutePosition = 255
    FaultPositionFeedback = 258
    MotorCommutationAngle = 259
    ExpansionBoardOption = 260
    BusVoltage = 261
    PiezoVoltageCommand = 262
    PiezoVoltageFeedback = 263
    TimeSinceReset = 273
    MaximumVoltage = 274
    CommandOutputType = 275
    DriveFeedforwardOutput = 290
    LastTickCounter = 291
    BoardRevision = 292
    GalvoLaserOutput = 294
    GalvoLaserPowerCorrectionOutput = 299
    CapacitanceSensorRawPosition = 300
    PositionCalibrationGalvo = 304
    BusVoltageNegative = 325
    ProcessorTemperature = 326
    InternalStatusTimestamp = 328
    AnalogSensorInput = 329
    MotorTemperature = 330
    PrimaryBissStatus = 332
    PsoExternalSyncFrequency = 337
    EncoderSineRaw = 346
    EncoderCosineRaw = 347
    FpgaTemperature = 353
    PrimaryEnDatStatus = 355
    DriveTimerHighPriorityThread = 356
    DriveTimerLowPriorityThread = 357
    DriveTimerLowPriorityPacket = 358
    DriveTimerServoPacket = 359
    DriveTimerServoThread = 360
    DriveTimerCurrentPacket = 361
    DriveTimerCommonCoreThread = 362
    DriveTimerServoCorePacket0 = 363
    DriveTimerServoCorePacket1 = 364
    MultiplierOption = 365
    ServoLoopFeedbackInput0 = 367
    ServoLoopFeedbackInput1 = 368
    FaultSubcode = 376
    ProcessorTemperatureMax = 378
    DriveTimerHyperWireDma = 381
    AmplifierTemperatureMax = 382
    AuxiliaryEnDatAbsolutePosition = 383
    AuxiliaryEnDatStatus = 384
    AuxiliaryBissAbsolutePosition = 385
    AuxiliaryBissStatus = 386
    PsoOption = 387
    DriveArraySize = 388
    RatedMotorSupplyVoltageOption = 389
    AbsoluteEncoderOption = 391
    AuxiliaryFeedbackStatus = 393
    AmplifierStatus = 394
    LatchedCwLimitPosition = 395
    LatchedCcwLimitPosition = 396
    GalvoLaserFpgaTransitionDelay = 397
    PiezoAccumulatedCharge = 401
    PiezoChargingTime = 402
    PrimarySsiAbsolutePosition = 403
    PrimarySsiStatus = 404
    AuxiliarySsiAbsolutePosition = 405
    AuxiliarySsiStatus = 406
    PsoDistanceActiveDistance = 407
    PsoWindow0ActiveLowerBound = 408
    PsoWindow0ActiveUpperBound = 409
    PsoWindow1ActiveLowerBound = 410
    PsoWindow1ActiveUpperBound = 411
    PsoWaveformActiveTotalTime = 412
    PsoWaveformActiveOnTime = 413
    PsoWaveformActivePulseCount = 414
    PsoEventActiveBitValue = 415
    DriveTimerDriveBasedControllerOutputDma = 419
    DriveTimerPcieInboundFsm = 420
    PrimaryFeedbackServo = 425
    AuxiliaryFeedbackServo = 426
    DriveStackUsage = 427
    ShuntResistorTemperature = 436


class TaskDataSignal:
    ProgramLineNumber = 17
    CoordinatedFlags = 40
    CoordinatedArcStartAngle = 53
    CoordinatedArcEndAngle = 54
    CoordinatedArcRadius = 55
    CoordinatedArcRadiusError = 56
    CoordinatedPositionCommand = 57
    CoordinatedSpeedCommand = 58
    CoordinatedAccelerationCommand = 59
    CoordinatedTotalDistance = 60
    CoordinatedPercentDone = 61
    CoordinatedPositionCommandBackwardsDiff = 62
    TaskParameter = 69
    TaskError = 70
    TaskWarning = 71
    CoordinatedSpeedTargetActual = 86
    DependentCoordinatedSpeedTargetActual = 87
    ActiveFixtureOffset = 88
    TaskStatus0 = 90
    TaskStatus1 = 91
    TaskStatus2 = 92
    SpindleSpeedTarget = 93
    CoordinateSystem1I = 96
    CoordinateSystem1J = 97
    CoordinateSystem1K = 98
    CoordinateSystem1Plane = 99
    ToolNumberActive = 100
    Mfo = 101
    CoordinatedSpeedTarget = 102
    DependentCoordinatedSpeedTarget = 103
    CoordinatedAccelerationRate = 104
    CoordinatedDecelerationRate = 105
    CoordinatedAccelerationTime = 106
    CoordinatedDecelerationTime = 107
    TaskMode = 108
    TaskState = 117
    TaskStateInternal = 118
    ExecutionMode = 121
    EnableAlignmentAxes = 127
    CoordinatedGalvoLaserOutput = 133
    CoordinatedMotionRate = 145
    CoordinatedTaskCommand = 146
    EnableState = 166
    LookaheadMovesExamined = 200
    ProfileControlMask = 231
    CoordinatedArcRadiusReciprocal = 253
    MotionEngineStage = 254
    CoordinatedTimeScale = 256
    CoordinatedTimeScaleDerivative = 257
    IfovSpeedScale = 266
    IfovSpeedScaleAverage = 267
    IfovGenerationFrameCounter = 268
    IfovGenerationTimeOriginal = 269
    IfovGenerationTimeModified = 270
    IfovCoordinatedPositionCommand = 271
    IfovCoordinatedSpeedCommand = 272
    IfovCenterPointH = 276
    IfovCenterPointV = 277
    IfovTrajectoryCount = 278
    IfovTrajectoryIndex = 279
    IfovAttemptCode = 280
    IfovGenerationFrameIndex = 281
    IfovMaximumVelocity = 282
    IfovIdealVelocity = 283
    TaskInternalDebug = 284
    IfovCoordinatedAccelerationCommand = 285
    IfovFovPositionH = 286
    IfovFovPositionV = 287
    IfovFovDimensionH = 288
    IfovFovDimensionV = 289
    MotionBufferElements = 311
    MotionBufferMoves = 312
    MotionLineNumber = 313
    MotionBufferRetraceMoves = 314
    MotionBufferRetraceElements = 315
    MotionBufferIndex = 316
    MotionBufferIndexLookahead = 317
    MotionBufferProcessingBlocked = 318
    ActiveMoveValid = 319
    TaskExecutionLines = 320
    SchedulerTaskHolds = 321
    SchedulerProgramLoopRuns = 322
    SchedulerTaskBlocked = 323
    CriticalSectionsActive = 324
    AxesSlowdownReason = 331
    TaskExecutionTime = 333
    TaskExecutionTimeMaximum = 334
    TaskExecutionLinesMaximum = 335
    LookaheadDecelReason = 338
    LookaheadDecelMoves = 339
    LookaheadDecelDistance = 340
    ProgramCounter = 341
    StackPointer = 342
    FramePointer = 343
    StringStackPointer = 344
    ProgramLineNumberSourceFileId = 349
    MotionLineNumberSourceFileId = 350
    ProgramLineNumberSourcePathId = 351
    MotionLineNumberSourcePathId = 352
    StringArgumentStackPointer = 354
    CoordinatedAccelerationSCurvePercentage = 369
    CoordinatedDecelerationSCurvePercentage = 370
    DependentCoordinatedAccelerationRate = 373
    DependentCoordinatedDecelerationRate = 374
    CriticalSectionTimeout = 375
    CommandQueueCapacity = 421
    CommandQueueUnexecutedCount = 422
    CommandQueueTimesEmptied = 423
    CommandQueueExecutedCount = 424


class SystemDataSignal:
    VirtualBinaryInput = 46
    VirtualBinaryOutput = 47
    VirtualRegisterInput = 48
    VirtualRegisterOutput = 49
    Timer = 51
    TimerPerformance = 52
    GlobalReal = 67
    CommunicationRealTimeErrors = 81
    LibraryCommand = 119
    DataCollectionSampleTime = 120
    DataCollectionSampleIndex = 129
    ModbusClientConnected = 134
    ModbusServerConnected = 135
    ModbusClientError = 136
    ModbusServerError = 137
    StopWatchTimer = 157
    ScopetrigId = 163
    EstimatedProcessorUsage = 177
    DataCollectionStatus = 188
    SignalLogState = 198
    SafeZoneViolationMask = 207
    SafeZoneActiveMask = 229
    ModbusClientInputWords = 240
    ModbusClientOutputWords = 241
    ModbusClientInputBits = 242
    ModbusClientOutputBits = 243
    ModbusClientOutputBitsStatus = 244
    ModbusClientOutputWordsStatus = 245
    ModbusServerInputWords = 246
    ModbusServerOutputWords = 247
    ModbusServerInputBits = 248
    ModbusServerOutputBits = 249
    SystemParameter = 265
    ThermoCompSensorTemperature = 305
    ThermoCompControllingTemperature = 306
    ThermoCompCompensatingTemperature = 307
    ThermoCompStatus = 308
    GlobalInteger = 345
    AliveAxesMask = 348
    SignalLogPointsStored = 377
    ControllerInitializationWarning = 379
    StopWatchTimerMin = 416
    StopWatchTimerMax = 417
    StopWatchTimerAvg = 418
    EthercatEnabled = 428
    EthercatError = 429
    EthercatTxPdo = 430
    EthercatTxPdoSize = 431
    EthercatRxPdo = 432
    EthercatRxPdoSize = 433
    EthercatState = 437
    ModbusClientEnabled = 438
    ModbusServerEnabled = 439


class DataCollectionFrequency:
    Undefined = 0
    Fixed1kHz = 1
    Fixed10kHz = 2
    Fixed20kHz = 3
    Fixed100kHz = 4
    Fixed200kHz = 5


class DataCollectionMode:
    Snapshot = 0
    Continouous = 1


# Specifies the PSO distance input settings for the XC4e drive.
class PsoDistanceInput:
    XC4PrimaryFeedback = 130
    XC4AuxiliaryFeedback = 131
    XC4SyncPortA = 132
    XC4SyncPortB = 133
    XC4DrivePulseStream = 134
    XC4ePrimaryFeedback = 135
    XC4eAuxiliaryFeedback = 136
    XC4eSyncPortA = 137
    XC4eSyncPortB = 138
    XC4eDrivePulseStream = 139


class PsoWindowInput:
    XC4PrimaryFeedback = 130
    XC4AuxiliaryFeedback = 131
    XC4SyncPortA = 132
    XC4SyncPortB = 133
    XC4DrivePulseStream = 134
    XC4ePrimaryFeedback = 135
    XC4eAuxiliaryFeedback = 136
    XC4eSyncPortA = 137
    XC4eSyncPortB = 138
    XC4eDrivePulseStream = 139
    XL5ePrimaryFeedback = (145,)
    XL5eAuxiliaryFeedback = (146,)
    XL5eSyncPortA = (147,)
    XL5eSyncPortB = (148,)
    XL5eDrivePulseStream = (149,)


# @brief Specifies the PSO output pin settings for each drive.
class XC4ePsoOutputPin:
    DedicatedOutput = 111
    AuxiliaryMarkerDifferential = 112
    AuxiliaryMarkerSingleEnded = 113


class XC4PsoOutputPin:
    DedicatedOutput = 108
    AuxiliaryMarkerDifferential = 109
    AuxiliaryMarkerSingleEnded = 110


"""
# @brief Specifies the PSO distance input settings for each drive.
class Automation1PsoDistanceInput:
	Automation1PsoDistanceInput_GL4PrimaryFeedbackAxis1 = 100,
	Automation1PsoDistanceInput_GL4PrimaryFeedbackAxis2 = 101,
	Automation1PsoDistanceInput_GL4IfovFeedbackAxis1 = 102,
	Automation1PsoDistanceInput_GL4IfovFeedbackAxis2 = 103,
	Automation1PsoDistanceInput_GL4AuxiliaryFeedbackAxis1 = 104,
	Automation1PsoDistanceInput_GL4AuxiliaryFeedbackAxis2 = 105,
	Automation1PsoDistanceInput_GL4SyncPortA = 106,
	Automation1PsoDistanceInput_GL4SyncPortB = 107,
	Automation1PsoDistanceInput_GL4DrivePulseStreamAxis1 = 108,
	Automation1PsoDistanceInput_GL4DrivePulseStreamAxis2 = 109,
	Automation1PsoDistanceInput_XL4sPrimaryFeedback = 110,
	Automation1PsoDistanceInput_XL4sAuxiliaryFeedback = 111,
	Automation1PsoDistanceInput_XL4sSyncPortA = 112,
	Automation1PsoDistanceInput_XL4sSyncPortB = 113,
	Automation1PsoDistanceInput_XL4sDrivePulseStream = 114,
	Automation1PsoDistanceInput_XR3PrimaryFeedbackAxis1 = 115,
	Automation1PsoDistanceInput_XR3PrimaryFeedbackAxis2 = 116,
	Automation1PsoDistanceInput_XR3PrimaryFeedbackAxis3 = 117,
	Automation1PsoDistanceInput_XR3PrimaryFeedbackAxis4 = 118,
	Automation1PsoDistanceInput_XR3PrimaryFeedbackAxis5 = 119,
	Automation1PsoDistanceInput_XR3PrimaryFeedbackAxis6 = 120,
	Automation1PsoDistanceInput_XR3AuxiliaryFeedbackAxis1 = 121,
	Automation1PsoDistanceInput_XR3AuxiliaryFeedbackAxis2 = 122,
	Automation1PsoDistanceInput_XR3AuxiliaryFeedbackAxis3 = 123,
	Automation1PsoDistanceInput_XR3AuxiliaryFeedbackAxis4 = 124,
	Automation1PsoDistanceInput_XR3AuxiliaryFeedbackAxis5 = 125,
	Automation1PsoDistanceInput_XR3AuxiliaryFeedbackAxis6 = 126,
	Automation1PsoDistanceInput_XR3SyncPortA = 127,
	Automation1PsoDistanceInput_XR3SyncPortB = 128,
	Automation1PsoDistanceInput_XR3DrivePulseStream = 129,
	Automation1PsoDistanceInput_XC4PrimaryFeedback = 130,
	Automation1PsoDistanceInput_XC4AuxiliaryFeedback = 131,
	Automation1PsoDistanceInput_XC4SyncPortA = 132,
	Automation1PsoDistanceInput_XC4SyncPortB = 133,
	Automation1PsoDistanceInput_XC4DrivePulseStream = 134,
	XC4ePrimaryFeedback = 135,
	XC4eAuxiliaryFeedback = 136,
	XC4eSyncPortA = 137,
	XC4eSyncPortB = 138,
	XC4eDrivePulseStream = 139,
	Automation1PsoDistanceInput_XC6ePrimaryFeedback = 140,
	Automation1PsoDistanceInput_XC6eAuxiliaryFeedback = 141,
	Automation1PsoDistanceInput_XC6eSyncPortA = 142,
	Automation1PsoDistanceInput_XC6eSyncPortB = 143,
	Automation1PsoDistanceInput_XC6eDrivePulseStream = 144,
	Automation1PsoDistanceInput_XL5ePrimaryFeedback = 145,
	Automation1PsoDistanceInput_XL5eAuxiliaryFeedback = 146,
	Automation1PsoDistanceInput_XL5eSyncPortA = 147,
	Automation1PsoDistanceInput_XL5eSyncPortB = 148,
	Automation1PsoDistanceInput_XL5eDrivePulseStream = 149,
	Automation1PsoDistanceInput_XC2PrimaryFeedback = 150,
	Automation1PsoDistanceInput_XC2AuxiliaryFeedback = 151,
	Automation1PsoDistanceInput_XC2DrivePulseStream = 152,
	Automation1PsoDistanceInput_XC2ePrimaryFeedback = 153,
	Automation1PsoDistanceInput_XC2eAuxiliaryFeedback = 154,
	Automation1PsoDistanceInput_XC2eDrivePulseStream = 155,
	Automation1PsoDistanceInput_XL2ePrimaryFeedback = 156,
	Automation1PsoDistanceInput_XL2eAuxiliaryFeedback = 157,
	Automation1PsoDistanceInput_XL2eSyncPortA = 158,
	Automation1PsoDistanceInput_XL2eSyncPortB = 159,
	Automation1PsoDistanceInput_XL2eDrivePulseStream = 160,
	Automation1PsoDistanceInput_XI4PrimaryFeedbackAxis1 = 161,
	Automation1PsoDistanceInput_XI4PrimaryFeedbackAxis2 = 162,
	Automation1PsoDistanceInput_XI4PrimaryFeedbackAxis3 = 163,
	Automation1PsoDistanceInput_XI4PrimaryFeedbackAxis4 = 164,
	Automation1PsoDistanceInput_XI4AuxiliaryFeedback1 = 165,
	Automation1PsoDistanceInput_XI4AuxiliaryFeedback2 = 166,
	Automation1PsoDistanceInput_XI4AuxiliaryFeedback3 = 167,
	Automation1PsoDistanceInput_XI4AuxiliaryFeedback4 = 168,
	Automation1PsoDistanceInput_XI4SyncPortA = 169,
	Automation1PsoDistanceInput_XI4SyncPortB = 170,
	Automation1PsoDistanceInput_XI4DrivePulseStreamAxis1 = 171,
	Automation1PsoDistanceInput_XI4DrivePulseStreamAxis2 = 172,
	Automation1PsoDistanceInput_XI4DrivePulseStreamAxis3 = 173,
	Automation1PsoDistanceInput_XI4DrivePulseStreamAxis4 = 174,
	Automation1PsoDistanceInput_iXC4PrimaryFeedback = 175,
	Automation1PsoDistanceInput_iXC4AuxiliaryFeedback = 176,
	Automation1PsoDistanceInput_iXC4SyncPortA = 177,
	Automation1PsoDistanceInput_iXC4SyncPortB = 178,
	Automation1PsoDistanceInput_iXC4DrivePulseStream = 179,
	Automation1PsoDistanceInput_iXC4ePrimaryFeedback = 180,
	Automation1PsoDistanceInput_iXC4eAuxiliaryFeedback = 181,
	Automation1PsoDistanceInput_iXC4eSyncPortA = 182,
	Automation1PsoDistanceInput_iXC4eSyncPortB = 183,
	Automation1PsoDistanceInput_iXC4eDrivePulseStream = 184,
	Automation1PsoDistanceInput_iXC6ePrimaryFeedback = 185,
	Automation1PsoDistanceInput_iXC6eAuxiliaryFeedback = 186,
	Automation1PsoDistanceInput_iXC6eSyncPortA = 187,
	Automation1PsoDistanceInput_iXC6eSyncPortB = 188,
	Automation1PsoDistanceInput_iXC6eDrivePulseStream = 189,
	Automation1PsoDistanceInput_iXL5ePrimaryFeedback = 190,
	Automation1PsoDistanceInput_iXL5eAuxiliaryFeedback = 191,
	Automation1PsoDistanceInput_iXL5eSyncPortA = 192,
	Automation1PsoDistanceInput_iXL5eSyncPortB = 193,
	Automation1PsoDistanceInput_iXL5eDrivePulseStream = 194,
	Automation1PsoDistanceInput_iXR3PrimaryFeedbackAxis1 = 195,
	Automation1PsoDistanceInput_iXR3PrimaryFeedbackAxis2 = 196,
	Automation1PsoDistanceInput_iXR3PrimaryFeedbackAxis3 = 197,
	Automation1PsoDistanceInput_iXR3PrimaryFeedbackAxis4 = 198,
	Automation1PsoDistanceInput_iXR3PrimaryFeedbackAxis5 = 199,
	Automation1PsoDistanceInput_iXR3PrimaryFeedbackAxis6 = 200,
	Automation1PsoDistanceInput_iXR3AuxiliaryFeedbackAxis1 = 201,
	Automation1PsoDistanceInput_iXR3AuxiliaryFeedbackAxis2 = 202,
	Automation1PsoDistanceInput_iXR3AuxiliaryFeedbackAxis3 = 203,
	Automation1PsoDistanceInput_iXR3AuxiliaryFeedbackAxis4 = 204,
	Automation1PsoDistanceInput_iXR3AuxiliaryFeedbackAxis5 = 205,
	Automation1PsoDistanceInput_iXR3AuxiliaryFeedbackAxis6 = 206,
	Automation1PsoDistanceInput_iXR3SyncPortA = 207,
	Automation1PsoDistanceInput_iXR3SyncPortB = 208,
	Automation1PsoDistanceInput_iXR3DrivePulseStream = 209,
	Automation1PsoDistanceInput_GI4DrivePulseStreamAxis1 = 210,
	Automation1PsoDistanceInput_GI4DrivePulseStreamAxis2 = 211,
	Automation1PsoDistanceInput_GI4DrivePulseStreamAxis3 = 212,
	Automation1PsoDistanceInput_iXC2PrimaryFeedback = 213,
	Automation1PsoDistanceInput_iXC2AuxiliaryFeedback = 214,
	Automation1PsoDistanceInput_iXC2DrivePulseStream = 215,
	Automation1PsoDistanceInput_iXC2ePrimaryFeedback = 216,
	Automation1PsoDistanceInput_iXC2eAuxiliaryFeedback = 217,
	Automation1PsoDistanceInput_iXC2eDrivePulseStream = 218,
	Automation1PsoDistanceInput_iXL2ePrimaryFeedback = 219,
	Automation1PsoDistanceInput_iXL2eAuxiliaryFeedback = 220,
	Automation1PsoDistanceInput_iXL2eSyncPortA = 221,
	Automation1PsoDistanceInput_iXL2eSyncPortB = 222,
	Automation1PsoDistanceInput_iXL2eDrivePulseStream = 223,
	Automation1PsoDistanceInput_iXI4PrimaryFeedbackAxis1 = 224,
	Automation1PsoDistanceInput_iXI4PrimaryFeedbackAxis2 = 225,
	Automation1PsoDistanceInput_iXI4PrimaryFeedbackAxis3 = 226,
	Automation1PsoDistanceInput_iXI4PrimaryFeedbackAxis4 = 227,
	Automation1PsoDistanceInput_iXI4AuxiliaryFeedback1 = 228,
	Automation1PsoDistanceInput_iXI4AuxiliaryFeedback2 = 229,
	Automation1PsoDistanceInput_iXI4AuxiliaryFeedback3 = 230,
	Automation1PsoDistanceInput_iXI4AuxiliaryFeedback4 = 231,
	Automation1PsoDistanceInput_iXI4SyncPortA = 232,
	Automation1PsoDistanceInput_iXI4SyncPortB = 233,
	Automation1PsoDistanceInput_iXI4DrivePulseStreamAxis1 = 234,
	Automation1PsoDistanceInput_iXI4DrivePulseStreamAxis2 = 235,
	Automation1PsoDistanceInput_iXI4DrivePulseStreamAxis3 = 236,
	Automation1PsoDistanceInput_iXI4DrivePulseStreamAxis4 = 237,

# @brief Specifies the PSO window input settings for each drive.
class Automation1PsoWindowInput:
	Automation1PsoWindowInput_GL4PrimaryFeedbackAxis1 = 100,
	Automation1PsoWindowInput_GL4PrimaryFeedbackAxis2 = 101,
	Automation1PsoWindowInput_GL4IfovFeedbackAxis1 = 102,
	Automation1PsoWindowInput_GL4IfovFeedbackAxis2 = 103,
	Automation1PsoWindowInput_GL4AuxiliaryFeedbackAxis1 = 104,
	Automation1PsoWindowInput_GL4AuxiliaryFeedbackAxis2 = 105,
	Automation1PsoWindowInput_GL4SyncPortA = 106,
	Automation1PsoWindowInput_GL4SyncPortB = 107,
	Automation1PsoWindowInput_GL4DrivePulseStreamAxis1 = 108,
	Automation1PsoWindowInput_GL4DrivePulseStreamAxis2 = 109,
	Automation1PsoWindowInput_XL4sPrimaryFeedback = 110,
	Automation1PsoWindowInput_XL4sAuxiliaryFeedback = 111,
	Automation1PsoWindowInput_XL4sSyncPortA = 112,
	Automation1PsoWindowInput_XL4sSyncPortB = 113,
	Automation1PsoWindowInput_XL4sDrivePulseStream = 114,
	Automation1PsoWindowInput_XR3PrimaryFeedbackAxis1 = 115,
	Automation1PsoWindowInput_XR3PrimaryFeedbackAxis2 = 116,
	Automation1PsoWindowInput_XR3PrimaryFeedbackAxis3 = 117,
	Automation1PsoWindowInput_XR3PrimaryFeedbackAxis4 = 118,
	Automation1PsoWindowInput_XR3PrimaryFeedbackAxis5 = 119,
	Automation1PsoWindowInput_XR3PrimaryFeedbackAxis6 = 120,
	Automation1PsoWindowInput_XR3AuxiliaryFeedbackAxis1 = 121,
	Automation1PsoWindowInput_XR3AuxiliaryFeedbackAxis2 = 122,
	Automation1PsoWindowInput_XR3AuxiliaryFeedbackAxis3 = 123,
	Automation1PsoWindowInput_XR3AuxiliaryFeedbackAxis4 = 124,
	Automation1PsoWindowInput_XR3AuxiliaryFeedbackAxis5 = 125,
	Automation1PsoWindowInput_XR3AuxiliaryFeedbackAxis6 = 126,
	Automation1PsoWindowInput_XR3SyncPortA = 127,
	Automation1PsoWindowInput_XR3SyncPortB = 128,
	Automation1PsoWindowInput_XR3DrivePulseStream = 129,
	Automation1PsoWindowInput_XC4PrimaryFeedback = 130,
	Automation1PsoWindowInput_XC4AuxiliaryFeedback = 131,
	Automation1PsoWindowInput_XC4SyncPortA = 132,
	Automation1PsoWindowInput_XC4SyncPortB = 133,
	Automation1PsoWindowInput_XC4DrivePulseStream = 134,
	XC4ePrimaryFeedback = 135,
	XC4eAuxiliaryFeedback = 136,
	XC4eSyncPortA = 137,
	XC4eSyncPortB = 138,
	XC4eDrivePulseStream = 139,
	Automation1PsoWindowInput_XC6ePrimaryFeedback = 140,
	Automation1PsoWindowInput_XC6eAuxiliaryFeedback = 141,
	Automation1PsoWindowInput_XC6eSyncPortA = 142,
	Automation1PsoWindowInput_XC6eSyncPortB = 143,
	Automation1PsoWindowInput_XC6eDrivePulseStream = 144,
	Automation1PsoWindowInput_XL5ePrimaryFeedback = 145,
	Automation1PsoWindowInput_XL5eAuxiliaryFeedback = 146,
	Automation1PsoWindowInput_XL5eSyncPortA = 147,
	Automation1PsoWindowInput_XL5eSyncPortB = 148,
	Automation1PsoWindowInput_XL5eDrivePulseStream = 149,
	Automation1PsoWindowInput_XC2PrimaryFeedback = 150,
	Automation1PsoWindowInput_XC2AuxiliaryFeedback = 151,
	Automation1PsoWindowInput_XC2DrivePulseStream = 152,
	Automation1PsoWindowInput_XC2ePrimaryFeedback = 153,
	Automation1PsoWindowInput_XC2eAuxiliaryFeedback = 154,
	Automation1PsoWindowInput_XC2eDrivePulseStream = 155,
	Automation1PsoWindowInput_XL2ePrimaryFeedback = 156,
	Automation1PsoWindowInput_XL2eAuxiliaryFeedback = 157,
	Automation1PsoWindowInput_XL2eSyncPortA = 158,
	Automation1PsoWindowInput_XL2eSyncPortB = 159,
	Automation1PsoWindowInput_XL2eDrivePulseStream = 160,
	Automation1PsoWindowInput_XI4PrimaryFeedbackAxis1 = 161,
	Automation1PsoWindowInput_XI4PrimaryFeedbackAxis2 = 162,
	Automation1PsoWindowInput_XI4PrimaryFeedbackAxis3 = 163,
	Automation1PsoWindowInput_XI4PrimaryFeedbackAxis4 = 164,
	Automation1PsoWindowInput_XI4AuxiliaryFeedback1 = 165,
	Automation1PsoWindowInput_XI4AuxiliaryFeedback2 = 166,
	Automation1PsoWindowInput_XI4AuxiliaryFeedback3 = 167,
	Automation1PsoWindowInput_XI4AuxiliaryFeedback4 = 168,
	Automation1PsoWindowInput_XI4SyncPortA = 169,
	Automation1PsoWindowInput_XI4SyncPortB = 170,
	Automation1PsoWindowInput_XI4DrivePulseStreamAxis1 = 171,
	Automation1PsoWindowInput_XI4DrivePulseStreamAxis2 = 172,
	Automation1PsoWindowInput_XI4DrivePulseStreamAxis3 = 173,
	Automation1PsoWindowInput_XI4DrivePulseStreamAxis4 = 174,
	Automation1PsoWindowInput_iXC4PrimaryFeedback = 175,
	Automation1PsoWindowInput_iXC4AuxiliaryFeedback = 176,
	Automation1PsoWindowInput_iXC4SyncPortA = 177,
	Automation1PsoWindowInput_iXC4SyncPortB = 178,
	Automation1PsoWindowInput_iXC4DrivePulseStream = 179,
	Automation1PsoWindowInput_iXC4ePrimaryFeedback = 180,
	Automation1PsoWindowInput_iXC4eAuxiliaryFeedback = 181,
	Automation1PsoWindowInput_iXC4eSyncPortA = 182,
	Automation1PsoWindowInput_iXC4eSyncPortB = 183,
	Automation1PsoWindowInput_iXC4eDrivePulseStream = 184,
	Automation1PsoWindowInput_iXC6ePrimaryFeedback = 185,
	Automation1PsoWindowInput_iXC6eAuxiliaryFeedback = 186,
	Automation1PsoWindowInput_iXC6eSyncPortA = 187,
	Automation1PsoWindowInput_iXC6eSyncPortB = 188,
	Automation1PsoWindowInput_iXC6eDrivePulseStream = 189,
	Automation1PsoWindowInput_iXL5ePrimaryFeedback = 190,
	Automation1PsoWindowInput_iXL5eAuxiliaryFeedback = 191,
	Automation1PsoWindowInput_iXL5eSyncPortA = 192,
	Automation1PsoWindowInput_iXL5eSyncPortB = 193,
	Automation1PsoWindowInput_iXL5eDrivePulseStream = 194,
	Automation1PsoWindowInput_iXR3PrimaryFeedbackAxis1 = 195,
	Automation1PsoWindowInput_iXR3PrimaryFeedbackAxis2 = 196,
	Automation1PsoWindowInput_iXR3PrimaryFeedbackAxis3 = 197,
	Automation1PsoWindowInput_iXR3PrimaryFeedbackAxis4 = 198,
	Automation1PsoWindowInput_iXR3PrimaryFeedbackAxis5 = 199,
	Automation1PsoWindowInput_iXR3PrimaryFeedbackAxis6 = 200,
	Automation1PsoWindowInput_iXR3AuxiliaryFeedbackAxis1 = 201,
	Automation1PsoWindowInput_iXR3AuxiliaryFeedbackAxis2 = 202,
	Automation1PsoWindowInput_iXR3AuxiliaryFeedbackAxis3 = 203,
	Automation1PsoWindowInput_iXR3AuxiliaryFeedbackAxis4 = 204,
	Automation1PsoWindowInput_iXR3AuxiliaryFeedbackAxis5 = 205,
	Automation1PsoWindowInput_iXR3AuxiliaryFeedbackAxis6 = 206,
	Automation1PsoWindowInput_iXR3SyncPortA = 207,
	Automation1PsoWindowInput_iXR3SyncPortB = 208,
	Automation1PsoWindowInput_iXR3DrivePulseStream = 209,
	Automation1PsoWindowInput_GI4DrivePulseStreamAxis1 = 210,
	Automation1PsoWindowInput_GI4DrivePulseStreamAxis2 = 211,
	Automation1PsoWindowInput_GI4DrivePulseStreamAxis3 = 212,
	Automation1PsoWindowInput_iXC2PrimaryFeedback = 213,
	Automation1PsoWindowInput_iXC2AuxiliaryFeedback = 214,
	Automation1PsoWindowInput_iXC2DrivePulseStream = 215,
	Automation1PsoWindowInput_iXC2ePrimaryFeedback = 216,
	Automation1PsoWindowInput_iXC2eAuxiliaryFeedback = 217,
	Automation1PsoWindowInput_iXC2eDrivePulseStream = 218,
	Automation1PsoWindowInput_iXL2ePrimaryFeedback = 219,
	Automation1PsoWindowInput_iXL2eAuxiliaryFeedback = 220,
	Automation1PsoWindowInput_iXL2eSyncPortA = 221,
	Automation1PsoWindowInput_iXL2eSyncPortB = 222,
	Automation1PsoWindowInput_iXL2eDrivePulseStream = 223,
	Automation1PsoWindowInput_iXI4PrimaryFeedbackAxis1 = 224,
	Automation1PsoWindowInput_iXI4PrimaryFeedbackAxis2 = 225,
	Automation1PsoWindowInput_iXI4PrimaryFeedbackAxis3 = 226,
	Automation1PsoWindowInput_iXI4PrimaryFeedbackAxis4 = 227,
	Automation1PsoWindowInput_iXI4AuxiliaryFeedback1 = 228,
	Automation1PsoWindowInput_iXI4AuxiliaryFeedback2 = 229,
	Automation1PsoWindowInput_iXI4AuxiliaryFeedback3 = 230,
	Automation1PsoWindowInput_iXI4AuxiliaryFeedback4 = 231,
	Automation1PsoWindowInput_iXI4SyncPortA = 232,
	Automation1PsoWindowInput_iXI4SyncPortB = 233,
	Automation1PsoWindowInput_iXI4DrivePulseStreamAxis1 = 234,
	Automation1PsoWindowInput_iXI4DrivePulseStreamAxis2 = 235,
	Automation1PsoWindowInput_iXI4DrivePulseStreamAxis3 = 236,
	Automation1PsoWindowInput_iXI4DrivePulseStreamAxis4 = 237,

# @brief Specifies the PSO output pin settings for each drive.
class Automation1PsoOutputPin:
	Automation1PsoOutputPin_GL4None = 100,
	Automation1PsoOutputPin_GL4LaserOutput0 = 101,
	Automation1PsoOutputPin_XL4sNone = 102,
	Automation1PsoOutputPin_XL4sLaserOutput0 = 103,
	Automation1PsoOutputPin_XR3None = 104,
	Automation1PsoOutputPin_XR3PsoOutput1 = 105,
	Automation1PsoOutputPin_XR3PsoOutput2 = 106,
	Automation1PsoOutputPin_XR3PsoOutput3 = 107,
	Automation1PsoOutputPin_XC4DedicatedOutput = 108,
	Automation1PsoOutputPin_XC4AuxiliaryMarkerDifferential = 109,
	Automation1PsoOutputPin_XC4AuxiliaryMarkerSingleEnded = 110,
	XC4eDedicatedOutput = 111,
	XC4eAuxiliaryMarkerDifferential = 112,
	XC4eAuxiliaryMarkerSingleEnded = 113,
	Automation1PsoOutputPin_XC6eDedicatedOutput = 114,
	Automation1PsoOutputPin_XC6eAuxiliaryMarkerDifferential = 115,
	Automation1PsoOutputPin_XC6eAuxiliaryMarkerSingleEnded = 116,
	Automation1PsoOutputPin_XL5eDedicatedOutput = 117,
	Automation1PsoOutputPin_XL5eAuxiliaryMarkerDifferential = 118,
	Automation1PsoOutputPin_XL5eAuxiliaryMarkerSingleEnded = 119,
	Automation1PsoOutputPin_XC2DedicatedOutput = 120,
	Automation1PsoOutputPin_XC2eDedicatedOutput = 121,
	Automation1PsoOutputPin_XL2eDedicatedOutput = 122,
	Automation1PsoOutputPin_XI4DedicatedOutput = 123,
	Automation1PsoOutputPin_iXC4DedicatedOutput = 124,
	Automation1PsoOutputPin_iXC4AuxiliaryMarkerDifferential = 125,
	Automation1PsoOutputPin_iXC4AuxiliaryMarkerSingleEnded = 126,
	Automation1PsoOutputPin_iXC4eDedicatedOutput = 127,
	Automation1PsoOutputPin_iXC4eAuxiliaryMarkerDifferential = 128,
	Automation1PsoOutputPin_iXC4eAuxiliaryMarkerSingleEnded = 129,
	Automation1PsoOutputPin_iXC6eDedicatedOutput = 130,
	Automation1PsoOutputPin_iXC6eAuxiliaryMarkerDifferential = 131,
	Automation1PsoOutputPin_iXC6eAuxiliaryMarkerSingleEnded = 132,
	Automation1PsoOutputPin_iXL5eDedicatedOutput = 133,
	Automation1PsoOutputPin_iXL5eAuxiliaryMarkerDifferential = 134,
	Automation1PsoOutputPin_iXL5eAuxiliaryMarkerSingleEnded = 135,
	Automation1PsoOutputPin_iXR3None = 136,
	Automation1PsoOutputPin_iXR3PsoOutput1 = 137,
	Automation1PsoOutputPin_iXR3PsoOutput2 = 138,
	Automation1PsoOutputPin_iXR3PsoOutput3 = 139,
	Automation1PsoOutputPin_GI4None = 140,
	Automation1PsoOutputPin_GI4LaserOutput0 = 141,
	Automation1PsoOutputPin_iXC2eDedicatedOutput = 143,
	Automation1PsoOutputPin_iXL2eDedicatedOutput = 144,
	Automation1PsoOutputPin_iXI4DedicatedOutput = 145,
"""


class DriveDataCaptureInput:
    PositionCommand = 0
    PrimaryFeedback = 1
    AuxiliaryFeedback = 2
    AnalogInput0 = 3
    AnalogInput1 = 4
    AnalogInput2 = 5
    AnalogInput3 = 6


class DriveDataCaptureTrigger:
    PsoOutput = 0
    PsoEvent = 1
    HighSpeedInput0RisingEdge = 2
    HighSpeedInput0FallingEdge = 3
    HighSpeedInput1RisingEdge = 4
    HighSpeedInput1FallingEdge = 5
    AuxiliaryMarkerRisingEdge = 6
    AuxiliaryMarkerFallingEdge = 7


class PsoOutputPin:
    GL4None = (100,)
    GL4LaserOutput0 = (101,)
    XL4sNone = (102,)
    XL4sLaserOutput0 = (103,)
    XR3None = (104,)
    XR3PsoOutput1 = (105,)
    XR3PsoOutput2 = (106,)
    XR3PsoOutput3 = (107,)
    XC4DedicatedOutput = (108,)
    XC4AuxiliaryMarkerDifferential = (109,)
    XC4AuxiliaryMarkerSingleEnded = (110,)
    XC4eDedicatedOutput = (111,)
    XC4eAuxiliaryMarkerDifferential = (112,)
    XC4eAuxiliaryMarkerSingleEnded = (113,)
    XC6eDedicatedOutput = (114,)
    XC6eAuxiliaryMarkerDifferential = (115,)
    XC6eAuxiliaryMarkerSingleEnded = (116,)
    XL5eDedicatedOutput = (117,)
    XL5eAuxiliaryMarkerDifferential = (118,)
    XL5eAuxiliaryMarkerSingleEnded = (119,)
    XC2DedicatedOutput = (120,)
    XC2eDedicatedOutput = (121,)
    XL2eDedicatedOutput = (122,)
    XI4DedicatedOutput = (123,)
    iXC4DedicatedOutput = (124,)
    iXC4AuxiliaryMarkerDifferential = (125,)
    iXC4AuxiliaryMarkerSingleEnded = (126,)
    iXC4eDedicatedOutput = (127,)
    iXC4eAuxiliaryMarkerDifferential = (128,)
    iXC4eAuxiliaryMarkerSingleEnded = (129,)
    iXC6eDedicatedOutput = (130,)
    iXC6eAuxiliaryMarkerDifferential = (131,)
    iXC6eAuxiliaryMarkerSingleEnded = (132,)
    iXL5eDedicatedOutput = (133,)
    iXL5eAuxiliaryMarkerDifferential = (134,)
    iXL5eAuxiliaryMarkerSingleEnded = (135,)
    iXR3None = (136,)
    iXR3PsoOutput1 = (137,)
    iXR3PsoOutput2 = (138,)
    iXR3PsoOutput3 = (139,)
    GI4None = (140,)
    GI4LaserOutput0 = (141,)
    iXC2DedicatedOutput = (142,)
    iXC2eDedicatedOutput = (143,)
    iXL2eDedicatedOutput = (144,)
    iXI4DedicatedOutput = (145,)
