package Ġdk . cache t . car p . common . application . triggers Ċ Ċ import Ġdk . cache t . car p . common . application . Immutable Ċ import Ġdk . cache t . car p . common . application . Implement As Data Class Ċ import Ġdk . cache t . car p . common . application . data . Data Ċ import Ġdk . cache t . car p . common . application . devices . Device Configuration Ċ import Ġdk . cache t . car p . common . application . devices . Primary Device Configuration Ċ import Ġkotlinx . serialization . Pol ymorphic Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . Transient ĊĊ Ċ /** Ċ Ġ* ĠAny Ġcondition Ġon Ġa Ġdevice Ġ([ Device Configuration ]) Ġused Ġto Ġstart Ġor Ġstop Ġtasks Ġat Ġcertain Ġpoints Ġin Ġtime Ġwhen Ġthe Ġcondition Ġapplies . Ċ Ġ* ĠThe Ġcondition Ġcan Ġeither Ġbe Ġtime - bound , Ġbased Ġon Ġdata Ġstreams , Ġinitiated Ġby Ġa Ġuser Ġof Ġthe Ġplatform , Ġor Ġa Ġcombination Ġof Ġthese . Ċ Ġ*/ Ċ @ Serializable Ċ @ Pol ymorphic Ċ @ Immutable Ċ @ Implement As Data Class Ċ abstract Ġclass ĠTrigger Configuration < T Data Ġ: ĠData > Ċ { ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġwhether Ġthe Ġtrigger Ġneeds Ġto Ġbe Ġevaluated Ġon Ġa Ġprimary Ġdevice Ġ([ Primary Device Configuration ]). ĊĠĠĠĠ Ġ* ĠFor Ġexample , Ġthis Ġis Ġthe Ġcase Ġwhen Ġthe Ġtrigger Ġis Ġtime Ġbound Ġand Ġneeds Ġto Ġbe Ġevaluated Ġby Ġa Ġtask Ġscheduler Ġrunning Ġon Ġa Ġprimary Ġdevice . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Transient ĊĠĠĠ Ġopen Ġval Ġrequires Primary Device : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġdevice Ġrole Ġname Ġfrom Ġwhich Ġthe Ġtrigger Ġorig inates . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġval Ġsource Device Role Name : ĠString Ċ } Ċ