/* Ċ The ĠMIT ĠLicense Ġ( MIT ) Ċ Ċ Copyright ĠÂ© Ġ 2 0 2 1 ĠCheck mate ĠRobot ics Ċ Ċ Permission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ċ associated Ġdocumentation Ġfiles Ġ( the ĠâĢľ Software âĢĿ ), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ċ without Ġlimitation Ġthe Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ copies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ċ following Ġconditions : Ċ Ċ The Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ġor Ġsubstantial Ċ port ions Ġof Ġthe ĠSoftware . Ċ Ċ THE ĠSOFTWARE ĠIS ĠPROVIDED ĠâĢľ AS ĠIS âĢĿ, ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT Ċ LIMIT ED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN Ċ NO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , Ċ WH ETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE Ċ SOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ */ Ċ package Ġorg . first insp ires . ft c . team code . robot Ċ Ċ import Ġcom . qual comm . robot core . hardware .* Ċ import Ġorg . first insp ires . ft c . robot core . external . hardware . camera . Web cam Name Ċ import Ġorg . first insp ires . ft c . team code . robot . util . Encoder Ċ Ċ /** Ċ Ġ* ĠClass Ġto Ġmanage Ġnames Ġof Ġhardware Ġconnected Ġto Ġthe Ġrobot Ċ Ġ*/ Ċ class ĠHardware Names Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠContains Ġhardware Ġinfo Ġfor Ġmot ors . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġid ĠHardware ĠID Ġdefined Ġin Ġthe Ġconfig . ĊĠĠĠĠ Ġ* Ġ@ property Ġreverse ĠWhether Ġthe Ġmotor Ġshould Ġbe Ġreversed . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġget ĠGet Ġa Ġ[ Dc Motor Ex ] Ġwith Ġthis Ġid Ġfrom Ġthe Ġ[ Hardware Map ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠMot ors ( val Ġid : ĠString , Ġval Ġreverse : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠDrive train ĊĠĠĠĠĠĠĠ ĠRIGHT _ FRONT (" right Front ", Ġfalse ), ĊĠĠĠĠĠĠĠ ĠRIGHT _ RE AR (" right Re ar ", Ġfalse ), ĊĠĠĠĠĠĠĠ ĠLEFT _ FRONT (" left Front ", true ), ĊĠĠĠĠĠĠĠ ĠLEFT _ RE AR (" left Re ar ", Ġtrue ), ĊĠĠĠĠĠĠĠ Ġ// ĠCar ousel Ġmechanism ĊĠĠĠĠĠĠĠ ĠCAR O USE L (" carousel ", Ġfalse ), ĊĠĠĠĠĠĠĠ Ġ// ĠInt ake Ġmechanism ĊĠĠĠĠĠĠĠ ĠIN TA KE (" int ake ", Ġtrue ), ĊĠĠĠĠĠĠĠ Ġ// ĠLift Ġmechanism ĊĠĠĠĠĠĠĠ ĠL IFT (" lift ", Ġfalse ); ĊĊĠĠĠĠĠĠĠ Ġfun Ġget ( hardware Map : ĠHardware Map ): ĠD c Motor Ex Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmotor Ġ= Ġhardware Map . get ( Dc Motor Ex :: class . java , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reverse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmotor . direction Ġ= ĠD c Motor Simple . Direction . RE VERSE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmotor ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠContains Ġhardware Ġinfo Ġfor Ġen coders . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġid ĠHardware ĠID Ġdefined Ġin Ġthe Ġconfig . ĊĠĠĠĠ Ġ* Ġ@ property Ġreverse ĠWhether Ġthe Ġencoder Ġshould Ġbe Ġreversed . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġget ĠGet Ġan Ġ[ Encoder ] Ġwith Ġthis Ġid Ġfrom Ġthe Ġ[ Hardware Map ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠEn coders ( val Ġid : ĠString , Ġval Ġreverse : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLEFT (" left Re ar ", Ġtrue ), ĊĠĠĠĠĠĠĠ ĠFR ONT (" left Front ", Ġfalse ), ĊĠĠĠĠĠĠĠ ĠRIGHT (" right Re ar ", Ġfalse ); ĊĊĠĠĠĠĠĠĠ Ġfun Ġget ( hardware Map : ĠHardware Map ): ĠEncoder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġencoder Ġ= ĠEncoder ( hardware Map . get ( Dc Motor Ex :: class . java , Ġid )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reverse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencoder . direction Ġ= ĠEncoder . Direction . RE VERSE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġencoder ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠContains Ġhardware Ġinfo Ġfor Ġserv os . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġid ĠHardware ĠID Ġdefined Ġin Ġthe Ġconfig . ĊĠĠĠĠ Ġ* Ġ@ property Ġreverse ĠWhether Ġthe Ġservo Ġshould Ġbe Ġreversed . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġget ĠGet Ġa Ġ[ Ser vo ] Ġwith Ġthis Ġid Ġfrom Ġthe Ġ[ Hardware Map ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠSer v os ( val Ġid : ĠString , Ġval Ġreversed : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBU CKET (" bucket ", Ġfalse ), ĊĠĠĠĠĠĠĠ ĠCAP _ SHO UL DER (" cap Sh oulder ", Ġfalse ), ĊĠĠĠĠĠĠĠ ĠCAP _ EL BO W (" cap El bow ", Ġfalse ); ĊĊĠĠĠĠĠĠĠ Ġfun Ġget ( hardware Map : ĠHardware Map ): ĠSer vo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservo Ġ= Ġhardware Map . get ( Ser vo :: class . java , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reversed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservo . direction Ġ= ĠSer vo . Direction . RE VERSE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġservo ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠContains Ġhardware Ġinfo Ġfor Ġcontinuous Ġrotation Ġserv os . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġid ĠHardware ĠID Ġdefined Ġin Ġthe Ġconfig . ĊĠĠĠĠ Ġ* Ġ@ property Ġreverse ĠWhether Ġthe Ġcontinuous Ġrotation Ġservo Ġshould Ġbe Ġreversed . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġget ĠGet Ġa Ġ[ CR Ser vo ] Ġwith Ġthis Ġid Ġfrom Ġthe Ġ[ Hardware Map ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠCR Serv os ( val Ġid : ĠString , Ġval Ġreverse : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠD UMMY ("", Ġfalse ); ĊĊĠĠĠĠĠĠĠ Ġfun Ġget ( hardware Map : ĠHardware Map ): ĠCR Ser vo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcr Ser vo Ġ= Ġhardware Map . get ( CR Ser vo :: class . java , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reverse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcr Ser vo . direction Ġ= ĠD c Motor Simple . Direction . RE VERSE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcr Ser vo ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠContains Ġhardware Ġinfo Ġfor Ġcameras . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġid ĠHardware ĠID Ġdefined Ġin Ġthe Ġconfig . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġget ĠGet Ġa Ġ[ Web cam Name ] Ġwith Ġthis Ġid Ġfrom Ġthe Ġ[ Hardware Map ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠCam eras ( val Ġid : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠWE BC AM (" web cam "); ĊĊĠĠĠĠĠĠĠ Ġfun Ġget ( hardware Map : ĠHardware Map ): ĠWeb cam Name Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhardware Map . get ( Web cam Name :: class . java , Ġid ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠContains Ġhardware Ġinfo Ġfor Ġdigital ĠI / O Ġports . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġid ĠHardware ĠID Ġdefined Ġin Ġthe Ġconfig . ĊĠĠĠĠ Ġ* Ġ@ property Ġmode ĠThe Ġmode Ġof Ġthe Ġdigital ĠI / O Ġport . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġget ĠGet Ġa Ġ[ Digital Channel ] Ġwith Ġthis Ġid Ġfrom Ġthe Ġ[ Hardware Map ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠDigital Channels ( val Ġid : ĠString , Ġval Ġmode : ĠDigital Channel . Mode ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLEFT _ LIMIT _ SWITCH (" left Limit Switch ", ĠDigital Channel . Mode . INPUT ), ĊĠĠĠĠĠĠĠ ĠRIGHT _ LIMIT _ SWITCH (" right Limit Switch ", ĠDigital Channel . Mode . INPUT ); ĊĊĠĠĠĠĠĠĠ Ġfun Ġget ( hardware Map : ĠHardware Map ): ĠDigital Channel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdigital Channel Ġ= Ġhardware Map . get ( Digital Channel :: class . java , Ġthis . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdigital Channel . mode Ġ= Ġthis . mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdigital Channel ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }