package Ġai . comma . plus . off road Ċ Ċ import Ġai . comma . messaging . Context Ċ import Ġai . comma . messaging . Sub Socket Ċ import Ġai . comma . open pilot . c ere al . Log Ċ import Ġcom . facebook . react . bridge . Writable Map Ċ import Ġcom . facebook . react . bridge . Writable Native Array Ċ import Ġcom . facebook . react . bridge . Writable Native Map Ċ import Ġorg . cap n proto . Message Reader Ċ import Ġorg . cap n proto . Serialize Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . ByteBuffer Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġbat man Ġon Ġ 1 2 / 4 / 1 7 . Ċ Ġ*/ Ċ Ċ data Ġclass ĠTh ermal Sample ( ĊĠĠĠĠĠĠĠ Ġval Ġfree Space : ĠFloat , ĊĠĠĠĠĠĠĠ Ġval Ġstarted : ĠBoolean Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġto Writable Map (): ĠWrit able Map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠWrit able Native Map () ĊĠĠĠĠĠĠĠ Ġmap . put Int (" free Space ", Ġ( free Space * 1 0 0 ). toInt ()) ĊĠĠĠĠĠĠĠ Ġmap . put Boolean (" started ", Ġstarted ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġread From Th ermal Event ( reader : ĠLog . Th ermal Data . Reader ): ĠTh ermal Sample Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTh ermal Sample ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader . free Space , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader . started ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠTh ermal Poller Delegate Ġ{ ĊĠĠĠ Ġfun Ġon Th ermal Data Changed ( ther mal Sample : ĠTh ermal Sample ) Ċ } Ċ Ċ class ĠTh ermal Poller ( val Ġdelegate : ĠTh ermal Poller Delegate ) Ġ{ ĊĠĠĠ Ġval Ġmsg q Ctx : ĠContext ĊĠĠĠ Ġval Ġth ermal Thread Handle : ĠThread ĊĠĠĠ Ġvar Ġth ermal Sock : ĠSub Socket ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġrunning : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġvar Ġlast Th ermal : ĠTh ermal Sample ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġth ermal Thread Handle Ġ= ĠThread ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġth ermal Thread () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġmsg q Ctx Ġ= ĠContext () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġth ermal Thread () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! running ) Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġth ermal Sock !!. receive () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( msg Ġ== Ġnull Ġ|| Ġmsg . size Ġ< Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg buf Ġ= ĠByteBuffer . wrap ( msg . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġreader : ĠMessage Reader ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader Ġ= ĠSerialize . read ( msg buf ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . util . Log . e (" off road ", Ġ" read ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg . release () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Ġ= Ġreader . getRoot ( Log . Event . factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġth ermal Event Ġ= Ġlog . ther mal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġth ermal Ġ= ĠTh ermal Sample . read From Th ermal Event ( ther mal Event ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ther mal Ġ!= Ġlast Th ermal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . on Th ermal Data Changed ( ther mal ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Th ermal Ġ= Ġth ermal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . util . Log . e (" off road ", Ġ" bad Ġth ermal ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġth ermal Sock !!. close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġrunning Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġth ermal Sock Ġ= Ġmsg q Ctx . sub Socket (" ther mal ") ĊĠĠĠĠĠĠĠ Ġth ermal Sock !!. setTimeout ( 5 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġth ermal Thread Handle . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġrunning Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ