/* ĠCopyright Ġ( c ) Ġ 2 0 1 7 ĠFIRST . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠRedistribution Ġand Ġuse Ġin Ġsource Ġand Ġbinary Ġforms , Ġwith Ġor Ġwithout Ġmodification , Ċ Ġ* Ġare Ġpermitted Ġ( subject Ġto Ġthe Ġlimitations Ġin Ġthe Ġdisclaimer Ġbelow ) Ġprovided Ġthat Ċ Ġ* Ġthe Ġfollowing Ġconditions Ġare Ġmet : Ċ Ġ* Ċ Ġ* ĠRedistributions Ġof Ġsource Ġcode Ġmust Ġretain Ġthe Ġabove Ġcopyright Ġnotice , Ġthis Ġlist Ċ Ġ* Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer . Ċ Ġ* Ċ Ġ* ĠRedistributions Ġin Ġbinary Ġform Ġmust Ġreproduce Ġthe Ġabove Ġcopyright Ġnotice , Ġthis Ċ Ġ* Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer Ġin Ġthe Ġdocumentation Ġand / or Ċ Ġ* Ġother Ġmaterials Ġprovided Ġwith Ġthe Ġdistribution . Ċ Ġ* Ċ Ġ* ĠNeither Ġthe Ġname Ġof ĠFIRST Ġnor Ġthe Ġnames Ġof Ġits Ġcontributors Ġmay Ġbe Ġused Ġto Ġendorse Ġor Ċ Ġ* Ġpromote Ġproducts Ġderived Ġfrom Ġthis Ġsoftware Ġwithout Ġspecific Ġprior Ġwritten Ġpermission . Ċ Ġ* Ċ Ġ* ĠNO ĠEXPRESS ĠOR ĠIMPLIED ĠLICENSE S ĠTO ĠANY ĠPAR TY ' S ĠPAT ENT ĠRIGHT S ĠARE ĠG RAN TED ĠBY ĠTHIS Ċ Ġ* ĠLICENSE . ĠTHIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ċ Ġ* Ġ" AS ĠIS " ĠAND ĠANY ĠEXPRESS ĠOR ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , Ċ Ġ* ĠTHE ĠIMPLIED ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE Ċ Ġ* ĠARE ĠDISCLAIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT ĠOWNER ĠOR ĠCONTRIBUTORS ĠBE ĠLIABLE Ċ Ġ* ĠFOR ĠANY ĠDIRECT , ĠINDIRECT , ĠINCIDENTAL , ĠSPECIAL , ĠEXEMPLARY , ĠOR ĠCONSEQUENTIAL Ċ Ġ* ĠDAMAGES Ġ( INCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF ĠSUBSTITUTE ĠGOODS ĠOR Ċ Ġ* ĠSERVICES ; ĠLOSS ĠOF ĠUSE , ĠDATA , ĠOR ĠPROFITS ; ĠOR ĠBUSINESS ĠINTERRUPTION ) ĠHOWEVER Ċ Ġ* ĠCAUSED ĠAND ĠON ĠANY ĠTHEORY ĠOF ĠLIABILITY , ĠWHETHER ĠIN ĠCONTRACT , ĠSTRICT ĠLIABILITY , Ċ Ġ* ĠOR ĠTORT Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE ĠUSE Ċ Ġ* ĠOF ĠTHIS ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . Ċ Ġ*/ Ċ package Ġorg . first insp ires . ft c . team code . test Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . view . View Ċ import Ġcom . qual comm . robot core . event loop . op mode . Disabled Ċ import Ġcom . qual comm . robot core . event loop . op mode . Linear Op Mode Ċ import Ġcom . qual comm . robot core . event loop . op mode . Tele Op Ċ import Ġcom . qual comm . robot core . hardware . Color Sensor Ċ Ċ /* Ċ Ġ* Ċ Ġ* ĠThis Ġis Ġan Ġexample ĠLinear Op Mode Ġthat Ġshows Ġhow Ġto Ġuse Ċ Ġ* Ġa ĠModern ĠRobot ics ĠColor ĠSensor . Ċ Ġ* Ċ Ġ* ĠThe Ġop Ġmode Ġassumes Ġthat Ġthe Ġcolor Ġsensor Ċ Ġ* Ġis Ġconfigured Ġwith Ġa Ġname Ġof Ġ" sensor _ color ". Ċ Ġ* Ċ Ġ* ĠYou Ġcan Ġuse Ġthe ĠX Ġbutton Ġon Ġgame pad 1 Ġto Ġtoggle Ġthe ĠLED Ġon Ġand Ġoff . Ċ Ġ* Ċ Ġ* ĠUse ĠAndroid ĠStudio Ġto ĠCopy Ġthis ĠClass , Ġand ĠP aste Ġit Ġinto Ġyour Ġteam 's Ġcode Ġfolder Ġwith Ġa Ġnew Ġname . Ċ Ġ* ĠRemove Ġor Ġcomment Ġout Ġthe Ġ@ Disabled Ġline Ġto Ġadd Ġthis Ġop mode Ġto Ġthe ĠDriver ĠStation ĠOp Mode Ġlist Ċ Ġ*/ Ċ @ Tele Op ( name Ġ= Ġ" Sensor : ĠMR ĠColor ", Ġgroup Ġ= Ġ" Sensor ") Ċ @ Disabled Ċ class ĠSensor MR Color Ġ: ĠLinear Op Mode () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcolor Sensor Ġ// ĠHardware ĠDevice ĠObject ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠColor Sensor ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġrun Op Mode () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġh sv Values Ġis Ġan Ġarray Ġthat Ġwill Ġhold Ġthe Ġhue , Ġsat uration , Ġand Ġvalue Ġinformation . ĊĠĠĠĠĠĠĠ Ġval Ġh sv Values Ġ= Ġfloat ArrayOf ( 0 f , Ġ 0 f , Ġ 0 f ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġvalues Ġis Ġa Ġreference Ġto Ġthe Ġh sv Values Ġarray . ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġa Ġreference Ġto Ġthe ĠRelative Layout Ġso Ġwe Ġcan Ġchange Ġthe Ġbackground ĊĠĠĠĠĠĠĠ Ġ// Ġcolor Ġof Ġthe ĠRobot ĠController Ġapp Ġto Ġmatch Ġthe Ġhue Ġdetected Ġby Ġthe ĠRGB Ġsensor . ĊĠĠĠĠĠĠĠ Ġval Ġrelative Layout Id Ġ= Ġhardware Map . app Context . resources . getIdentifier (" Relative Layout ", Ġ" id ", Ġhardware Map . app Context . packageName ) ĊĠĠĠĠĠĠĠ Ġval Ġrelative Layout Ġ= Ġ( hardware Map . app Context Ġas ĠActivity ). findViewById < View >( relative Layout Id ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġb Prev State Ġand Ġb Curr State Ġrepresent Ġthe Ġprevious Ġand Ġcurrent Ġstate Ġof Ġthe Ġbutton . ĊĠĠĠĠĠĠĠ Ġvar Ġb Prev State Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġb Curr State Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// Ġb Led On Ġrepresents Ġthe Ġstate Ġof Ġthe ĠLED . ĊĠĠĠĠĠĠĠ Ġvar Ġb Led On Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġa Ġreference Ġto Ġour ĠColor Sensor Ġobject . ĊĠĠĠĠĠĠĠ Ġcolor Sensor Ġ= Ġhardware Map . get ( Color Sensor :: class . java , Ġ" sensor _ color ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe ĠLED Ġin Ġthe Ġbeginning ĊĊĠĠĠĠĠĠĠ Ġcolor Sensor ?. enable Led ( b Led On ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġwait Ġfor Ġthe Ġstart Ġbutton Ġto Ġbe Ġpressed . ĊĠĠĠĠĠĠĠ ĠwaitFor Start () ĊĠĠĠĠĠĠĠ Ġ// Ġwhile Ġthe Ġop Ġmode Ġis Ġactive , Ġloop Ġand Ġread Ġthe ĠRGB Ġdata . ĊĠĠĠĠĠĠĠ Ġ// ĠNote Ġwe Ġuse Ġop Mode IsActive () Ġas Ġour Ġloop Ġcondition Ġbecause Ġit Ġis Ġan Ġinterrupt ible Ġmethod . ĊĠĠĠĠĠĠĠ Ġwhile Ġ( op Mode IsActive ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck Ġthe Ġstatus Ġof Ġthe Ġx Ġbutton Ġon Ġeither Ġgame pad . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Curr State Ġ= Ġgame pad 1 . x ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck Ġfor Ġbutton Ġstate Ġtransitions . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b Curr State Ġ&& Ġb Curr State Ġ!= Ġb Prev State ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbutton Ġis Ġtransition ing Ġto Ġa Ġpressed Ġstate . ĠSo ĠToggle ĠLED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Led On Ġ= Ġ! b Led On ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Sensor ?. enable Led ( b Led On ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġupdate Ġprevious Ġstate Ġvariable . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Prev State Ġ= Ġb Curr State ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġconvert Ġthe ĠRGB Ġvalues Ġto ĠH SV Ġvalues . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor . RGB To H SV ( color Sensor !!. red () Ġ* Ġ 8 , Ġcolor Sensor !!. green () Ġ* Ġ 8 , Ġcolor Sensor !!. blue () Ġ* Ġ 8 , Ġh sv Values ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsend Ġthe Ġinfo Ġback Ġto Ġdriver Ġstation Ġusing Ġtelemetry Ġfunction . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtelemetry . addData (" LED ", Ġif Ġ( b Led On ) Ġ" On " Ġelse Ġ" Off ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtelemetry . addData (" Clear ", Ġcolor Sensor ?. alpha ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtelemetry . addData (" Red Ġ Ġ", Ġcolor Sensor ?. red ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtelemetry . addData (" Green ", Ġcolor Sensor ?. green ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtelemetry . addData (" Blue Ġ", Ġcolor Sensor ?. blue ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtelemetry . addData (" Hue ", Ġh sv Values [ 0 ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġchange Ġthe Ġbackground Ġcolor Ġto Ġmatch Ġthe Ġcolor Ġdetected Ġby Ġthe ĠRGB Ġsensor . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpass Ġa Ġreference Ġto Ġthe Ġhue , Ġsat uration , Ġand Ġvalue Ġarray Ġas Ġan Ġargument ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġto Ġthe ĠH SV To Color Ġmethod . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelative Layout . post Ġ{ Ġrelative Layout . set BackgroundColor ( Color . H SV To Color ( 0 xff , Ġh sv Values )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtelemetry . update () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġpanel Ġback Ġto Ġthe Ġdefault Ġcolor ĊĠĠĠĠĠĠĠ Ġrelative Layout . post Ġ{ Ġrelative Layout . set BackgroundColor ( Color . WHITE ) Ġ} ĊĠĠĠ Ġ} Ċ }