/**
    This file is autogenerated
*/

{
  py::class_<MotController> cls(m, "MotController");
  cls.def(py::init<>())
    .def("_create1", &MotController::_create1, py::arg("baseArbId"), release_gil())
    .def("getDeviceNumber", &MotController::getDeviceNumber, release_gil())
    .def("setDemand", &MotController::setDemand, py::arg("mode"), py::arg("demand0"), py::arg("demand1"), release_gil())
    .def("_set_4", &MotController::_set_4, py::arg("mode"), py::arg("demand0"), py::arg("demand1"), py::arg("demand1Type"), release_gil())
    .def("setNeutralMode", &MotController::setNeutralMode, py::arg("neutralMode"), release_gil())
    .def("setSensorPhase", &MotController::setSensorPhase, py::arg("PhaseSensor"), release_gil())
    .def("setInverted", &MotController::setInverted, py::arg("invert"), release_gil())
    .def("configOpenLoopRamp", &MotController::configOpenLoopRamp, py::arg("secondsFromNeutralToFull"), py::arg("timeoutMs"), release_gil())
    .def("configClosedLoopRamp", &MotController::configClosedLoopRamp, py::arg("secondsFromNeutralToFull"), py::arg("timeoutMs"), release_gil())
    .def("configPeakOutputForward", &MotController::configPeakOutputForward, py::arg("percentOut"), py::arg("timeoutMs"), release_gil())
    .def("configPeakOutputReverse", &MotController::configPeakOutputReverse, py::arg("percentOut"), py::arg("timeoutMs"), release_gil())
    .def("configNominalOutputForward", &MotController::configNominalOutputForward, py::arg("percentOut"), py::arg("timeoutMs"), release_gil())
    .def("configNominalOutputReverse", &MotController::configNominalOutputReverse, py::arg("percentOut"), py::arg("timeoutMs"), release_gil())
    .def("configNeutralDeadband", &MotController::configNeutralDeadband, py::arg("percentDeadband"), py::arg("timeoutMs"), release_gil())
    .def("configVoltageCompSaturation", &MotController::configVoltageCompSaturation, py::arg("voltage"), py::arg("timeoutMs"), release_gil())
    .def("configVoltageMeasurementFilter", &MotController::configVoltageMeasurementFilter, py::arg("filterWindowSamples"), py::arg("timeoutMs"), release_gil())
    .def("enableVoltageCompensation", &MotController::enableVoltageCompensation, py::arg("enable"), release_gil())
    .def("getBusVoltage", &MotController::getBusVoltage, release_gil())
    .def("getMotorOutputPercent", &MotController::getMotorOutputPercent, release_gil())
    .def("getOutputCurrent", &MotController::getOutputCurrent, release_gil())
    .def("getTemperature", &MotController::getTemperature, release_gil())
    .def("configSelectedFeedbackSensor", &MotController::configSelectedFeedbackSensor, py::arg("feedbackDevice"), py::arg("pidIdx"), py::arg("timeoutMs"), release_gil())
    .def("configSelectedFeedbackCoefficient", &MotController::configSelectedFeedbackCoefficient, py::arg("coefficient"), py::arg("pidIdx"), py::arg("timeoutMs"), release_gil())
    .def("configRemoteFeedbackFilter", &MotController::configRemoteFeedbackFilter, py::arg("deviceID"), py::arg("remoteSensorSource"), py::arg("remoteOrdinal"), py::arg("timeoutMs"), release_gil())
    .def("configSensorTerm", &MotController::configSensorTerm, py::arg("sensorTerm"), py::arg("feedbackDevice"), py::arg("timeoutMs"), release_gil())
    .def("getSelectedSensorPosition", &MotController::getSelectedSensorPosition, py::arg("pidIdx"), release_gil())
    .def("getSelectedSensorVelocity", &MotController::getSelectedSensorVelocity, py::arg("pidIdx"), release_gil())
    .def("setSelectedSensorPosition", &MotController::setSelectedSensorPosition, py::arg("sensorPos"), py::arg("pidIdx"), py::arg("timeoutMs"), release_gil())
    .def("setControlFramePeriod", &MotController::setControlFramePeriod, py::arg("frame"), py::arg("periodMs"), release_gil())
    .def("setStatusFramePeriod", &MotController::setStatusFramePeriod, py::arg("frame"), py::arg("periodMs"), py::arg("timeoutMs"), release_gil())
    .def("getStatusFramePeriod", &MotController::getStatusFramePeriod, py::arg("frame"), py::arg("timeoutMs"), release_gil())
    .def("configVelocityMeasurementPeriod", &MotController::configVelocityMeasurementPeriod, py::arg("period"), py::arg("timeoutMs"), release_gil())
    .def("configVelocityMeasurementWindow", &MotController::configVelocityMeasurementWindow, py::arg("windowSize"), py::arg("timeoutMs"), release_gil())
    .def("configForwardLimitSwitchSource", &MotController::configForwardLimitSwitchSource, py::arg("type"), py::arg("normalOpenOrClose"), py::arg("deviceID"), py::arg("timeoutMs"), release_gil())
    .def("configReverseLimitSwitchSource", &MotController::configReverseLimitSwitchSource, py::arg("type"), py::arg("normalOpenOrClose"), py::arg("deviceID"), py::arg("timeoutMs"), release_gil())
    .def("overrideLimitSwitchesEnable", &MotController::overrideLimitSwitchesEnable, py::arg("enable"), release_gil())
    .def("configForwardSoftLimitThreshold", &MotController::configForwardSoftLimitThreshold, py::arg("forwardSensorLimit"), py::arg("timeoutMs"), release_gil())
    .def("configReverseSoftLimitThreshold", &MotController::configReverseSoftLimitThreshold, py::arg("reverseSensorLimit"), py::arg("timeoutMs"), release_gil())
    .def("configForwardSoftLimitEnable", &MotController::configForwardSoftLimitEnable, py::arg("enable"), py::arg("timeoutMs"), release_gil())
    .def("configReverseSoftLimitEnable", &MotController::configReverseSoftLimitEnable, py::arg("enable"), py::arg("timeoutMs"), release_gil())
    .def("overrideSoftLimitsEnable", &MotController::overrideSoftLimitsEnable, py::arg("enable"), release_gil())
    .def("config_kP", &MotController::config_kP, py::arg("slotIdx"), py::arg("value"), py::arg("timeoutMs"), release_gil())
    .def("config_kI", &MotController::config_kI, py::arg("slotIdx"), py::arg("value"), py::arg("timeoutMs"), release_gil())
    .def("config_kD", &MotController::config_kD, py::arg("slotIdx"), py::arg("value"), py::arg("timeoutMs"), release_gil())
    .def("config_kF", &MotController::config_kF, py::arg("slotIdx"), py::arg("value"), py::arg("timeoutMs"), release_gil())
    .def("config_IntegralZone", &MotController::config_IntegralZone, py::arg("slotIdx"), py::arg("izone"), py::arg("timeoutMs"), release_gil())
    .def("configAllowableClosedloopError", &MotController::configAllowableClosedloopError, py::arg("slotIdx"), py::arg("allowableClosedLoopError"), py::arg("timeoutMs"), release_gil())
    .def("configMaxIntegralAccumulator", &MotController::configMaxIntegralAccumulator, py::arg("slotIdx"), py::arg("iaccum"), py::arg("timeoutMs"), release_gil())
    .def("configClosedLoopPeakOutput", &MotController::configClosedLoopPeakOutput, py::arg("slotIdx"), py::arg("percentOut"), py::arg("timeoutMs"), release_gil())
    .def("configClosedLoopPeriod", &MotController::configClosedLoopPeriod, py::arg("slotIdx"), py::arg("loopTimeMs"), py::arg("timeoutMs"), release_gil())
    .def("setIntegralAccumulator", &MotController::setIntegralAccumulator, py::arg("iaccum"), py::arg("pidIdx"), py::arg("timeoutMs"), release_gil())
    .def("getClosedLoopError", &MotController::getClosedLoopError, py::arg("pidIdx"), release_gil())
    .def("getIntegralAccumulator", &MotController::getIntegralAccumulator, py::arg("pidIdx"), release_gil())
    .def("getErrorDerivative", &MotController::getErrorDerivative, py::arg("pidIdx"), release_gil())
    .def("selectProfileSlot", &MotController::selectProfileSlot, py::arg("slotIdx"), py::arg("pidIdx"), release_gil())
    .def("getActiveTrajectoryPosition", &MotController::getActiveTrajectoryPosition, release_gil())
    .def("getActiveTrajectoryVelocity", &MotController::getActiveTrajectoryVelocity, release_gil())
    .def("getActiveTrajectoryHeading", &MotController::getActiveTrajectoryHeading, release_gil())
    .def("getActiveTrajectoryAll", &MotController::getActiveTrajectoryAll, release_gil())
    .def("configMotionCruiseVelocity", &MotController::configMotionCruiseVelocity, py::arg("sensorUnitsPer100ms"), py::arg("timeoutMs"), release_gil())
    .def("configMotionAcceleration", &MotController::configMotionAcceleration, py::arg("sensorUnitsPer100msPerSec"), py::arg("timeoutMs"), release_gil())
    .def("clearMotionProfileTrajectories", &MotController::clearMotionProfileTrajectories, release_gil())
    .def("getMotionProfileTopLevelBufferCount", &MotController::getMotionProfileTopLevelBufferCount, release_gil())
    .def("_pushMotionProfileTrajectory", &MotController::_pushMotionProfileTrajectory, py::arg("position"), py::arg("velocity"), py::arg("headingDeg"), py::arg("profileSlotSelect"), py::arg("isLastPoint"), py::arg("zeroPos"), release_gil())
    .def("_pushMotionProfileTrajectory_2", &MotController::_pushMotionProfileTrajectory_2, py::arg("position"), py::arg("velocity"), py::arg("headingDeg"), py::arg("profileSlotSelect0"), py::arg("profileSlotSelect1"), py::arg("isLastPoint"), py::arg("zeroPos"), py::arg("durationMs"), release_gil())
    .def("isMotionProfileTopLevelBufferFull", &MotController::isMotionProfileTopLevelBufferFull, release_gil())
    .def("processMotionProfileBuffer", &MotController::processMotionProfileBuffer, release_gil())
    .def("_getMotionProfileStatus", &MotController::_getMotionProfileStatus, release_gil())
    .def("_getMotionProfileStatus_2", &MotController::_getMotionProfileStatus_2, release_gil())
    .def("clearMotionProfileHasUnderrun", &MotController::clearMotionProfileHasUnderrun, py::arg("timeoutMs"), release_gil())
    .def("changeMotionControlFramePeriod", &MotController::changeMotionControlFramePeriod, py::arg("periodMs"), release_gil())
    .def("configMotionProfileTrajectoryPeriod", &MotController::configMotionProfileTrajectoryPeriod, py::arg("durationMs"), py::arg("timeoutMs"), release_gil())
    .def("getLastError", &MotController::getLastError, release_gil())
    .def("getFirmwareVersion", &MotController::getFirmwareVersion, release_gil())
    .def("hasResetOccurred", &MotController::hasResetOccurred, release_gil())
    .def("configSetCustomParam", &MotController::configSetCustomParam, py::arg("newValue"), py::arg("paramIndex"), py::arg("timeoutMs"), release_gil())
    .def("configGetCustomParam", &MotController::configGetCustomParam, py::arg("paramIndex"), py::arg("timoutMs"), release_gil())
    .def("configSetParameter", &MotController::configSetParameter, py::arg("param"), py::arg("value"), py::arg("subValue"), py::arg("ordinal"), py::arg("timeoutMs"), release_gil())
    .def("configGetParameter", &MotController::configGetParameter, py::arg("param"), py::arg("ordinal"), py::arg("timeoutMs"), release_gil())
    .def("configPeakCurrentLimit", &MotController::configPeakCurrentLimit, py::arg("amps"), py::arg("timeoutMs"), release_gil())
    .def("configPeakCurrentDuration", &MotController::configPeakCurrentDuration, py::arg("milliseconds"), py::arg("timeoutMs"), release_gil())
    .def("configContinuousCurrentLimit", &MotController::configContinuousCurrentLimit, py::arg("amps"), py::arg("timeoutMs"), release_gil())
    .def("enableCurrentLimit", &MotController::enableCurrentLimit, py::arg("enable"), release_gil())
    .def("setLastError", &MotController::setLastError, py::arg("error"), release_gil())
    .def("getAnalogIn", &MotController::getAnalogIn, release_gil())
    .def("setAnalogPosition", &MotController::setAnalogPosition, py::arg("newPosition"), py::arg("timeoutMs"), release_gil())
    .def("getAnalogInRaw", &MotController::getAnalogInRaw, release_gil())
    .def("getAnalogInVel", &MotController::getAnalogInVel, release_gil())
    .def("getQuadraturePosition", &MotController::getQuadraturePosition, release_gil())
    .def("setQuadraturePosition", &MotController::setQuadraturePosition, py::arg("newPosition"), py::arg("timeoutMs"), release_gil())
    .def("getQuadratureVelocity", &MotController::getQuadratureVelocity, release_gil())
    .def("getPulseWidthPosition", &MotController::getPulseWidthPosition, release_gil())
    .def("setPulseWidthPosition", &MotController::setPulseWidthPosition, py::arg("newPosition"), py::arg("timeoutMs"), release_gil())
    .def("getPulseWidthVelocity", &MotController::getPulseWidthVelocity, release_gil())
    .def("getPulseWidthRiseToFallUs", &MotController::getPulseWidthRiseToFallUs, release_gil())
    .def("getPulseWidthRiseToRiseUs", &MotController::getPulseWidthRiseToRiseUs, release_gil())
    .def("getPinStateQuadA", &MotController::getPinStateQuadA, release_gil())
    .def("getPinStateQuadB", &MotController::getPinStateQuadB, release_gil())
    .def("getPinStateQuadIdx", &MotController::getPinStateQuadIdx, release_gil())
    .def("isFwdLimitSwitchClosed", &MotController::isFwdLimitSwitchClosed, release_gil())
    .def("isRevLimitSwitchClosed", &MotController::isRevLimitSwitchClosed, release_gil())
    .def("getFaults", &MotController::getFaults, release_gil())
    .def("getStickyFaults", &MotController::getStickyFaults, release_gil())
    .def("clearStickyFaults", &MotController::clearStickyFaults, py::arg("timeoutMs"), release_gil())
    .def("selectDemandType", &MotController::selectDemandType, py::arg("enable"), release_gil())
    .def("setMPEOutput", &MotController::setMPEOutput, py::arg("MpeOutput"), release_gil())
    .def("enableHeadingHold", &MotController::enableHeadingHold, py::arg("enable"), release_gil())
    .def("getAnalogInAll", &MotController::getAnalogInAll, release_gil())
    .def("getQuadratureSensor", &MotController::getQuadratureSensor, release_gil())
    .def("getPulseWidthAll", &MotController::getPulseWidthAll, release_gil())
    .def("getQuadPinStates", &MotController::getQuadPinStates, release_gil())
    .def("getLimitSwitchState", &MotController::getLimitSwitchState, release_gil())
    .def("getClosedLoopTarget", &MotController::getClosedLoopTarget, py::arg("pidIdx"), release_gil())
  ;
}