package Ġorg . team 2 4 7 1 . f rc . lib . act u ators Ċ Ċ import Ġcom . ct re . phoenix . ErrorCode Ċ import Ġcom . ct re . phoenix . Param Enum Ċ import Ġcom . ct re . phoenix . motion . Motion Profile Status Ċ import Ġcom . ct re . phoenix . motion . Trajectory Point Ċ import Ġcom . ct re . phoenix . motor control .* Ċ import Ġcom . ct re . phoenix . motor control . can . Base Motor Controller Ċ import Ġcom . rev robot ics . CAN Spark Max Ċ import Ġcom . rev robot ics . CAN Spark Max Low Level Ċ import Ġcom . ct re . phoenix . motor control . Control Mode Ċ import Ġcom . rev robot ics . Sensor Type Ċ Ċ class ĠSpark Max Wrapper Ġ( device Number Ġ: ĠInt ) Ġ: ĠI Motor Controller Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ motor Controller Ġ= ĠCAN Spark Max ( device Number , ĠCAN Spark Max Low Level . Motor Type . k Brush less ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġenc Ġ= Ġget Encoder ( Sensor Type . k H all Sensor , Ġ 4 0 9 6 ) ĊĠĠĠĠĠĠĠ Ġprintln (" encoder Ġvalue : Ġ" Ġ+ Ġenc . position Ġ+ Ġ"; Ġid : Ġ" Ġ+ Ġdevice Number ) ĊĠĠĠĠĠĠĠ Ġrestore Factory Defaults () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġclosed Loop Error Ġ: ĠDouble Ġ= Ġ 0 . 0 ĊĊĊĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfollow ( follow er ID : ĠI Motor Controller ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ motor Controller . follow ( follow er ID Ġas ĠCAN Spark Max ) ĊĠĠĠĠĠĠĠ Ġ// Ġdo Ġnothing Ġ.. Ġdo Ġnot Ġallow Ġfollow er ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġfun Ġmotor Output Percent (): ĠDouble Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Selected Sensor Position ( pid Idx : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Neutral Mode ( neutral Mode : ĠNe utral Mode ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( neutral Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNe utral Mode . Br ake Ġ-> Ġ_ motor Controller . idle Mode Ġ= ĠCAN Spark Max . Idle Mode . k Br ake ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNe utral Mode . Co ast Ġ-> Ġ_ motor Controller . idle Mode Ġ= ĠCAN Spark Max . Idle Mode . k Co ast ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNe utral Mode . EE PROM Setting Ġ-> Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset In verted ( invert : ĠBoolean ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget In verted (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Neutral Dead band ( percent Dead band : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Voltage Comp Sat uration ( voltage : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Voltage Measurement Filter ( filter Window Samples : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġenable Voltage Comp ensation ( enable : ĠBoolean ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Bus Voltage (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Motor Output Percent (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Motor Output Voltage (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Temperature (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Selected Feedback Coefficient ( coefficient : ĠDouble , Ġpid Idx : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Remote Feedback Filter ( ĊĠĠĠĠĠĠĠ Ġdevice ID : ĠInt , ĊĠĠĠĠĠĠĠ Ġremote Sensor Source : ĠRemote Sensor Source ?, ĊĠĠĠĠĠĠĠ Ġremote Ordinal : ĠInt , ĊĠĠĠĠĠĠĠ Ġtimeout Ms : ĠInt ĊĠĠĠ Ġ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Sensor Term ( sensor Term : ĠSensor Term ?, Ġfeedback Device : ĠFeedback Device ?, Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Selected Sensor Velocity ( pid Idx : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetSelected Sensor Position ( sensor Pos : ĠInt , Ġpid Idx : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Control Frame Period ( frame : ĠControl Frame ?, Ġperiod Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetStatus Frame Period ( frame : ĠStatus Frame ?, Ġperiod Ms : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetStatus Frame Period ( frame : ĠStatus Frame ?, Ġtimeout Ms : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Forward Limit Switch Source ( ĊĠĠĠĠĠĠĠ Ġtype : ĠRemote Limit Switch Source ?, ĊĠĠĠĠĠĠĠ Ġnormal Open Or Close : ĠLimit Switch Normal ?, ĊĠĠĠĠĠĠĠ Ġdevice ID : ĠInt , ĊĠĠĠĠĠĠĠ Ġtimeout Ms : ĠInt ĊĠĠĠ Ġ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Reverse Limit Switch Source ( ĊĠĠĠĠĠĠĠ Ġtype : ĠRemote Limit Switch Source ?, ĊĠĠĠĠĠĠĠ Ġnormal Open Or Close : ĠLimit Switch Normal ?, ĊĠĠĠĠĠĠĠ Ġdevice ID : ĠInt , ĊĠĠĠĠĠĠĠ Ġtimeout Ms : ĠInt ĊĠĠĠ Ġ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġoverride Limit Sw itches Enable ( enable : ĠBoolean ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Forward Soft Limit Enable ( enable : ĠBoolean , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Reverse Soft Limit Threshold ( reverse Sensor Limit : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Forward Soft Limit Threshold ( forward Sensor Limit : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġoverride Soft Limits Enable ( enable : ĠBoolean ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Aux PID Pol arity ( invert : ĠBoolean , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Integral Accumulator ( i accum : ĠDouble , Ġpid Idx : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Closed Loop Error ( pid Idx : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Integral Accumulator ( pid Idx : ĠInt ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Error Deriv ative ( pid Idx : ĠInt ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Closed Loop Target ( pid Idx : ĠInt ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Active Trajectory Position (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Active Trajectory Velocity (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Active Trajectory Heading (): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Motion Profile Trajectory Period ( base Tr aj Duration Ms : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Motion SC ur ve Strength ( curve Strength : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Motion Profile Has Under run ( timeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchange Motion Control Frame Period ( period Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Motion Profile Tra ject ories (): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Sticky Fault s ( timeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig GetCustom Param ( param Index : ĠInt , Ġtimeout Ms : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Get Parameter ( param Enum : ĠInt , Ġordinal : ĠInt , Ġtimeout Ms : ĠInt ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Get Parameter ( param Enum : ĠParam Enum ?, Ġordinal : ĠInt , Ġtimeout Ms : ĠInt ): ĠDouble Ġ{ ĊĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Reverse Soft Limit Enable ( enable : ĠBoolean , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Set Custom Param ( newValue : ĠInt , Ġparam Index : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Set Parameter ( ĊĠĠĠĠĠĠĠ Ġparam : ĠParam Enum ?, ĊĠĠĠĠĠĠĠ Ġvalue : ĠDouble , ĊĠĠĠĠĠĠĠ Ġsub Value : ĠInt , ĊĠĠĠĠĠĠĠ Ġordinal : ĠInt , ĊĠĠĠĠĠĠĠ Ġtimeout Ms : ĠInt ĊĠĠĠ Ġ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Set Parameter ( param : ĠInt , Ġvalue : ĠDouble , Ġsub Value : ĠInt , Ġordinal : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Base ID (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Control Mode (): ĠControl Mode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠControl Mode . Percent Output ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Device ID (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Fault s ( to Fill : ĠFault s ?): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Motion Profile TopLevel Buffer Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpush Motion Profile Trajectory ( traj Pt : ĠTra jectory Point ?): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Motion Profile TopLevel Buffer Full (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess Motion Profile Buffer () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget LastError (): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Sticky Fault s ( to Fill : ĠSt icky Fault s ?): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Firmware Version (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Reset Occurred (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Motion Profile Status ( status To Fill : ĠMotion Profile Status ?): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvalue Updated () Ġ{ ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġset ( Mode : ĠControl Mode ?, Ġdemand : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( control Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠControl Mode . Percent Output Ġ-> Ġ_ motor Controller . set ( demand ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset ( Mode : ĠControl Mode ?, Ġdemand 0 : ĠDouble , Ġdemand 1 Type : ĠDem and Type ?, Ġdemand 1 : ĠDouble ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Ġ( Mode Ġ: ĠControl Mode , Ġdemand 0 Ġ: ĠDouble , Ġdemand 1 : ĠDouble ) Ġ{ ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġselect Profile Slot ( slot Idx : ĠInt , Ġpid Idx : ĠInt ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġneutral Output () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ motor Controller . set ( 0 . 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Sensor Phase ( Phase Sensor : ĠBoolean ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Closed loop R amp ( seconds From Neutral To Full : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Open loop R amp ( seconds From Neutral To Full : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Nominal Output Reverse ( percent Out : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Nominal Output Forward ( percent Out : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Peak Output Reverse ( percent Out : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Peak Output Forward ( percent Out : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Motion Acceleration ( sensor Units Per 1 0 0 ms Per Sec : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Motion C ru ise Velocity ( sensor Units Per 1 0 0 ms : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfig Selected Feedback Sensor ( feedback Device : ĠFeedback Device ?, Ġpid Idx : ĠInt , Ġtimeout Ms : ĠInt ) Ġ: ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġconfig Selected Feedback Sensor ( ĊĠĠĠĠĠĠĠ Ġfeedback Device : ĠRemote Feedback Device ?, ĊĠĠĠĠĠĠĠ Ġpid Idx : ĠInt , ĊĠĠĠĠĠĠĠ Ġtimeout Ms : ĠInt ĊĠĠĠ Ġ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig _ k P ( slot Idx : ĠInt , Ġvalue : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig _ k D ( slot Idx : ĠInt , Ġvalue : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig _ k F ( slot Idx : ĠInt , Ġvalue : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig _ k I ( slot Idx : ĠInt , Ġvalue : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig _ Integral Zone ( slot Idx : ĠInt , Ġiz one : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Allow able Closed loop Error ( slot Idx : ĠInt , Ġallow able Close Loop Error : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Max Integral Accumulator ( slot Idx : ĠInt , Ġi accum : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Closed Loop Peak Output ( slot Idx : ĠInt , Ġpercent Out : ĠDouble , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Closed Loop Period ( slot Idx : ĠInt , Ġloop Time Ms : ĠInt , Ġtimeout Ms : ĠInt ): ĠErrorCode Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠErrorCode . OK ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġcurrent : ĠDouble ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ motor Controller . output Current ĊĊĊĠĠĠ Ġfun Ġrestore Factory Defaults () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ motor Controller . restore Factory Defaults () ĊĠĠĠ Ġ} ĊĊ Ċ }