@ file : Suppress ( Ġ" Too Many Functions ", Ġ" Wildcard Import " Ġ) Ċ Ċ package Ġdk . cache t . car p . protocols . infrastructure Ċ Ċ import Ġdk . cache t . car p . common . serialization . create Default JSON Ċ import Ġdk . cache t . car p . protocols . domain . Protocol Owner Ċ import Ġdk . cache t . car p . protocols . domain . Protocol Version Ċ import Ġdk . cache t . car p . protocols . domain . Study Protocol Snapshot Ċ import Ġdk . cache t . car p . protocols . domain . sampling .* Ċ import Ġdk . cache t . car p . protocols . domain . devices .* Ċ import Ġdk . cache t . car p . protocols . domain . tasks .* Ċ import Ġdk . cache t . car p . protocols . domain . tasks . meas ures .* Ċ import Ġdk . cache t . car p . protocols . domain . triggers .* Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . modules . Pol ymorphic Module Builder Ċ import Ġkotlinx . serialization . modules . plus Ċ import Ġkotlinx . serialization . modules . pol ymorphic Ċ import Ġkotlinx . serialization . modules . Serial izers Module Ċ import Ġkotlinx . serialization . modules . subclass ĊĊ Ċ /** Ċ Ġ* ĠTypes Ġin Ġthe Ġ[ dk . cache t . car p . protocols ] Ġmodule Ġwhich Ġneed Ġto Ġbe Ġregistered Ġwhen Ġusing Ġ[ Json ] Ġserializer . Ċ Ġ*/ Ċ val ĠPROTO COL S _ SERIAL _ MODULE Ġ= ĠSerial izers Module Ġ{ ĊĠĠĠ Ġfun ĠPol ymorphic Module Builder < Any Master Device Descriptor >. register Master Device Descriptor Sub classes () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠCustom Protocol Device :: class Ġ) ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠS mar tp hone :: class Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpol ymorphic ( ĠDevice Descriptor :: class Ġ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠAlt Beacon :: class Ġ) ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠBLE Heart Rate Sensor :: class Ġ) ĊĠĠĠĠĠĠĠ Ġregister Master Device Descriptor Sub classes () ĊĠĠĠ Ġ} ĊĠĠĠ Ġpol ymorphic ( ĠMaster Device Descriptor :: class Ġ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġregister Master Device Descriptor Sub classes () ĊĠĠĠ Ġ} ĊĠĠĠ Ġpol ymorphic ( ĠS ampling Configuration :: class Ġ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠInterval Sampling Configuration :: class Ġ) ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠNo Options Sampling Configuration :: class Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġpol ymorphic ( ĠDevice Registration :: class Ġ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠAlt Beacon Device Registration :: class Ġ) ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠBLE SerialNumber Device Registration :: class Ġ) ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠDefault Device Registration :: class Ġ) ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠMAC Address Device Registration :: class Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġpol ymorphic ( ĠTask Descriptor :: class Ġ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠConcurrent Task :: class Ġ) ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠCustom Protocol Task :: class Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġpol ymorphic ( ĠMeasure :: class Ġ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠDataType Measure :: class Ġ) ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠPhone Sensor Measure :: class Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġpol ymorphic ( ĠTrigger :: class Ġ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠE lapsed Time Trigger :: class Ġ) ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠManual Trigger :: class Ġ) ĊĠĠĠĠĠĠĠ Ġsubclass ( ĠScheduled Trigger :: class Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate Ġa Ġ[ Json ] Ġserializer Ġadopt ing Ġa Ġdefault ĠCAR P Ġinfrastructure Ġconfiguration Ġwith Ġall Ġ[ dk . cache t . car p . protocols ] Ġtypes Ġregistered . Ċ Ġ* ĠThis Ġensures Ġa Ġglobal Ġconfiguration Ġon Ġhow Ġserialization Ġshould Ġoccur . Ċ Ġ* ĠAdditional Ġtypes Ġthe Ġserializer Ġneeds Ġto Ġbe Ġaware Ġabout Ġ( such Ġas Ġpol ym orph Ġextending Ġclasses ) Ġshould Ġbe Ġregistered Ġthrough Ġ[ module ]. Ċ Ġ*/ Ċ fun Ġcreate Protocols Serializer ( Ġmodule : ĠSerial izers Module ? Ġ= Ġnull Ġ): ĠJson Ċ { ĊĠĠĠ Ġval Ġserializers Module Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġmodule Ġ== Ġnull Ġ) ĠPROTO COL S _ SERIAL _ MODULE ĊĠĠĠĠĠĠĠ Ġelse ĠPROTO COL S _ SERIAL _ MODULE Ġ+ Ġmodule ĊĊĠĠĠ Ġreturn Ġcreate Default JSON ( Ġserializers Module Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġdefault ĠCAR P Ġinfrastructure Ġserializer Ġcapable Ġof Ġserial izing Ġall Ġ[ dk . cache t . car p . protocols ] Ġtypes . Ċ Ġ* ĠIn Ġcase Ġcustom Ġextending Ġtypes Ġare Ġdefined , Ġthis Ġvariable Ġshould Ġbe Ġre assigned Ġfor Ġserialization Ġextension Ġfunctions Ġto Ġwork Ġas Ġexpected . Ċ Ġ* Ġ[ create Protocols Serializer ] Ġcan Ġbe Ġused Ġto Ġthis Ġend , Ġby Ġincluding Ġall Ġextending Ġtypes Ġin Ġthe Ġ[ Serial Module ] Ġas Ġparameter . Ċ Ġ*/ Ċ var ĠJSON : ĠJson Ġ= Ġcreate Protocols Serializer () ĊĊ Ċ /** Ċ Ġ* ĠCreate Ġa Ġ[ Protocol Owner ] Ġfrom ĠJSON , Ġserialized Ġusing Ġthe Ġglobally Ġset Ġinfrastructure Ġserializer Ġ([ JSON ]). Ċ Ġ*/ Ċ fun ĠProtocol Owner . Companion . fromJson ( Ġjson : ĠString Ġ): ĠProtocol Owner Ġ= ĊĠĠĠ ĠJSON . decode FromString ( Ġserializer (), Ġjson Ġ) Ċ Ċ /** Ċ Ġ* ĠSerialize Ġto ĠJSON , Ġusing Ġthe Ġglobally Ġset Ġinfrastructure Ġserializer Ġ([ JSON ]). Ċ Ġ*/ Ċ fun ĠProtocol Owner . toJson (): ĠString Ġ= ĊĠĠĠ ĠJSON . encode ToString ( ĠProtocol Owner . serializer (), Ġthis Ġ) Ċ Ċ /** Ċ Ġ* ĠCreate Ġa Ġ[ Protocol Version ] Ġfrom ĠJSON , Ġserialized Ġusing Ġthe Ġglobally Ġset Ġinfrastructure Ġserializer Ġ([ JSON ]). Ċ Ġ*/ Ċ fun ĠProtocol Version . Companion . fromJson ( Ġjson : ĠString Ġ): ĠProtocol Version Ġ= ĊĠĠĠ ĠJSON . decode FromString ( Ġserializer (), Ġjson Ġ) Ċ Ċ /** Ċ Ġ* ĠSerialize Ġto ĠJSON , Ġusing Ġthe Ġglobally Ġset Ġinfrastructure Ġserializer Ġ([ JSON ]). Ċ Ġ*/ Ċ fun ĠProtocol Version . toJson (): ĠString Ġ= ĊĠĠĠ ĠJSON . encode ToString ( ĠProtocol Version . serializer (), Ġthis Ġ) Ċ Ċ /** Ċ Ġ* ĠCreate Ġa Ġ[ Study Protocol Snapshot ] Ġfrom ĠJSON , Ġserialized Ġusing Ġthe Ġglobally Ġset Ġinfrastructure Ġserializer Ġ([ JSON ]). Ċ Ġ*/ Ċ fun ĠStudy Protocol Snapshot . Companion . fromJson ( Ġjson : ĠString Ġ): ĠStudy Protocol Snapshot Ġ= ĊĠĠĠ ĠJSON . decode FromString ( Ġserializer (), Ġjson Ġ) Ċ Ċ /** Ċ Ġ* ĠSerialize Ġto ĠJSON , Ġusing Ġthe Ġglobally Ġset Ġinfrastructure Ġserializer Ġ([ JSON ]). Ċ Ġ*/ Ċ fun ĠStudy Protocol Snapshot . toJson (): ĠString Ġ= ĊĠĠĠ ĠJSON . encode ToString ( ĠStudy Protocol Snapshot . serializer (), Ġthis Ġ) Ċ Ċ /** Ċ Ġ* ĠCreate Ġa Ġ[ Device Registration ] Ġfrom ĠJSON , Ġserialized Ġusing Ġthe Ġglobally Ġset Ġinfrastructure Ġserializer Ġ([ JSON ]). Ċ Ġ*/ Ċ fun ĠDevice Registration . Companion . fromJson ( Ġjson : ĠString Ġ): ĠDevice Registration Ġ= ĊĠĠĠ ĠJSON . decode FromString ( ĠDevice Registration Serializer , Ġjson Ġ) Ċ Ċ /** Ċ Ġ* ĠSerialize Ġto ĠJSON , Ġusing Ġthe Ġglobally Ġset Ġinfrastructure Ġserializer Ġ([ JSON ]). Ċ Ġ*/ Ċ fun ĠDevice Registration . toJson (): ĠString Ġ= ĊĠĠĠ ĠJSON . encode ToString ( ĠDevice Registration Serializer , Ġthis Ġ) Ċ