package Ġorg . first insp ires . ft c . team code . hardware . devices Ċ Ċ import Ġcom . qual comm . robot core . hardware . Dc Motor Ċ import Ġcom . qual comm . robot core . hardware . Dc Motor Simple Ċ import Ġorg . open ft c . rev extensions 2 . Expansion Hub Motor Ċ import Ġkotlin . math . abs Ċ Ċ class ĠOptim ized Motor ( val Ġdelegate Motor : ĠExp ansion Hub Motor , Ġval Ġis Master : ĠBoolean ) Ġ{ ĊĠĠĠ Ġval ĠMIN _ POWER _ CHANGE Ġ= Ġ 0 . 0 0 5 ĊĠĠĠ Ġvar Ġcurrent Position : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġlast Power : ĠDouble Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġvar Ġpower : ĠDouble ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdelegate Motor . power ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġto Apply Ġ= Ġvalue Ġ* Ġpower Scale ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( abs ( to Apply Ġ- Ġlast Power ) Ġ> ĠMIN _ POWER _ CHANGE Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( to Apply Ġ== Ġ 0 . 0 Ġ&& Ġlast Power Ġ!= Ġ 0 . 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate Motor . power Ġ= Ġto Apply ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Power Ġ= Ġto Apply ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġmode : ĠD c Motor . Run Mode ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdelegate Motor . mode ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate Motor . mode Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġdirection : ĠD c Motor Simple . Direction ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdelegate Motor . direction ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate Motor . direction Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġzero Power Behavior : ĠD c Motor . Zero Power Behavior ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdelegate Motor . zero Power Behavior ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate Motor . zero Power Behavior Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpower Scale Ġ= Ġ 1 . 0 ĊĠĠĠ Ġ} ĊĊ Ċ }