package Ġch . semi . led c Ċ Ċ import Ġch . semi . led c . controllers . Backend Ċ import Ġch . semi . led c . controllers . Bluetooth Serial Ċ import Ġch . semi . led c . protocols . My 4 Byte Protocol Ċ import Ġch . semi . led c . protocols . Protocol Ċ import Ġch . semi . led c . utils . call Ignore Null Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . full . create Instance Ċ import Ġkotlin . reflect . full . primary Constructor ĊĊ Ċ class ĠFactory Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdrivers Ġ= Ġmap Of < String , ĠK Class < out ĠBackend >>( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" RN 4 2 - C DB 6 " Ġto ĠBluetooth Serial :: class ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġprotocols Ġ= Ġmap Of < String , ĠK Class < out ĠProtocol >>( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 Byte Protocol " Ġto ĠMy 4 Byte Protocol :: class ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinstantiate Driver ( driver Name : ĠString , Ġprotocol Name : ĠString , Ġparameters : ĠAny ?): ĠBackend ? Ġ= ĊĠĠĠĠĠĠĠ Ġprotocols [ protocol Name ]?. create Instance ()?. let Ġ{ Ġproto Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdriver Constructor Ġ= Ġdrivers [ driver Name ]?. primary Constructor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdriver Constructor ?. call Ignore Null ( proto , Ġparameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊ Ċ } Ċ