/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠA det un ji ĠD ahun si Ċ Ġ* Ċ Ġ* Ġ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 Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED Ġ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 , ĠWHETHER Ġ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 Ġcom . rc switch control . zig bee . models Ċ Ċ import Ġandroidx . core . graphics . blue Ċ import Ġandroidx . core . graphics . green Ċ import Ġandroidx . core . graphics . red Ċ import Ġcom . rc switch control . protocols . as Action Ċ import Ġcom . rc switch control . zig bee . protocol . Named Command Ċ import Ġcom . rc switch control . zig bee . protocol . Z ig B ee Protocol Ċ import Ġcom . rc switch control . zig bee . protocol . Z ig B ee Protocol . Companion . zig B ee Payload Ċ import Ġcom . tun jid . rc switch control . common . Writable Ċ import Ġcom . tun jid . rc switch control . common . serialize Ċ import Ġcom . z smart systems . zig bee . z cl . protocol . Z cl Cluster Type Ċ Ċ @ kotlin x . serialization . Serializable Ċ data Ġclass ĠZ ig B ee Command ( ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġargs : ĠList < String > Ċ ): ĠWrit able Ġ{ ĊĠĠĠ Ġ// ĠCannot Ġbe Ġderived , Ġit Ġneed Ġto Ġbe Ġserialized ĊĠĠĠ Ġval Ġkey : ĠString Ġ= ĠZ ig B ee Protocol :: class . java . name ĊĊĠĠĠ Ġval Ġis Invalid : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġargs . isEmpty () Ċ } Ċ Ċ sealed Ġclass ĠZ ig B ee Input < Input T >( ĊĠĠĠĠĠĠĠ Ġval Ġinput : ĠInput T , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġnamed Command : ĠNamed Command Ċ ) Ġ{ ĊĊĠĠĠ Ġobject ĠRedis cover Ġ: ĠZ ig B ee Input < Unit >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ= ĠUnit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnamed Command Ġ= ĠNamed Command . Custom . Redis cover ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġobject ĠNode Ġ: ĠZ ig B ee Input < Unit >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ= ĠUnit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnamed Command Ġ= ĠNamed Command . Derived . Describe Node ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠToggle ( val Ġis On : ĠBoolean ) Ġ: ĠZ ig B ee Input < Boolean >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ= Ġis On , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnamed Command Ġ= Ġif Ġ( is On ) ĠNamed Command . Custom . On Ġelse ĠNamed Command . Custom . Off ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠLevel ( val Ġlevel : ĠFloat ) Ġ: ĠZ ig B ee Input < Float >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ= Ġlevel , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnamed Command Ġ= ĠNamed Command . Custom . Level ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠColor ( val Ġrgb : ĠInt ) Ġ: ĠZ ig B ee Input < Int >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ= Ġrgb , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnamed Command Ġ= ĠNamed Command . Custom . Color ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠRead ( val Ġfeature : ĠZ ig B ee Node . Feature ) Ġ: ĠZ ig B ee Input < Z ig B ee Node . Feature >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ= Ġfeature , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnamed Command Ġ= ĠNamed Command . Custom . Device Attributes ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠJoin ( val Ġduration : ĠByte ?) Ġ: ĠZ ig B ee Input < Byte ? >( ĊĠĠĠĠĠĠĠ Ġinput Ġ= Ġduration , ĊĠĠĠĠĠĠĠ Ġnamed Command Ġ= ĠNamed Command . Derived . Network Join ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinternal Ġfun Ġcommand For ( zig B ee Node : ĠZ ig B ee Node ): ĠZ ig B ee Command Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠRedis cover Ġ-> ĠlistOf ( zig B ee Node . ieee Address ) ĊĠĠĠĠĠĠĠ Ġis ĠNode Ġ-> ĠlistOf ( zig B ee Node . network Ad ress ) ĊĠĠĠĠĠĠĠ Ġis ĠJoin Ġ-> ĠlistOf ( duration ?. toString () Ġ?: Ġ" disable ") ĊĠĠĠĠĠĠĠ Ġis ĠToggle Ġ-> ĠlistOf ( zig B ee Node . address ( Z cl Cluster Type . ON _ OFF )) ĊĠĠĠĠĠĠĠ Ġis ĠLevel Ġ-> ĠlistOf ( zig B ee Node . address ( Z cl Cluster Type . LEVEL _ CONTROL ), Ġlevel . toString ()) ĊĠĠĠĠĠĠĠ Ġis ĠColor Ġ-> ĠlistOf ( zig B ee Node . address ( Z cl Cluster Type . COLOR _ CONTROL ), Ġrgb . red . toString (), Ġrgb . green . toString (), Ġrgb . blue . toString ()) ĊĠĠĠĠĠĠĠ Ġis ĠRead Ġ-> ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz ig B ee Node . address ( feature . cluster Type ), Ġfeature . cluster Type . id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ( zig B ee Node . cluster Attribute Map . getValue ( feature . cluster Type . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ( feature . descriptors . map ( Z ig B ee Attribute . Descriptor :: attribute Id ):: contains ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( Int :: toString ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}. let ( this :: args ) ĊĊĠĠĠ Ġprivate Ġfun Ġargs ( params : ĠList < String >): ĠZ ig B ee Command Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠZ ig B ee Command ( name Ġ= Ġnamed Command . name , Ġargs Ġ= ĠlistOf ( named Command . command ) Ġ+ Ġparams ) Ċ } Ċ Ċ val ĠZ ig B ee Command . payload ĊĠĠĠ Ġget () Ġ= Ġz ig B ee Payload ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= Ġname . as Action , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġserialize () ĊĠĠĠ Ġ)