package Ġcom . w usp . s ht 2 x . drv ier Ċ Ċ import Ġandroid . util . Log Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġw usp Ġon Ġ 2 0 1 7 / 9 / 2 6 . Ċ Ġ*/ Ċ // ac cor ing Ġto Ġdoc . ĠP ( x )= x ^ 8 + x ^ 5 + x ^ 4 + 1 Ġ= Ġ 1 0 0 1 1 0 0 0 1 Ġis ĠCRC 8 - MAX IM Ċ fun Ġcrc 8 max im ( datas : ĠByteArray ): ĠInt ? Ġ{ ĊĠĠĠ Ġif Ġ( datas . isEmpty ()) Ġreturn Ġnull ĊĠĠĠ Ġval Ġpoly Ġ= Ġ 0 x 1 3 1 Ġ// 1 0 0 1 1 0 0 0 1 ĊĠĠĠ Ġvar Ġcrc Ġ= Ġ 0 x 0 0 Ġ// Doc . Ġinitialization Ġis Ġ 0 ĊĠĠĠ Ġdatas . forEach Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠ Ġcrc Ġ= Ġcrc . xor ( data . toInt ()) ĊĠĠĠĠĠĠĠ Ġfor Ġ( it Ġin Ġ 1 .. 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrc Ġ= Ġcrc Ġand Ġ 0 xFF ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrc Ġ= Ġif Ġ( crc Ġ> Ġ 0 x 8 0 ) Ġ( crc . sh l ( 1 ). xor ( poly )) Ġelse Ġcrc . sh l ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġcrc Ċ } Ċ Ċ /** Ċ Ġ* ĠConvert Ġthe Ġsensor Ġresponse Ġraw Ġdata Ġto Ġhum idity Ġdata , Ċ Ġ* Ġthe Ġinput Ġdata Ġset Ġshould Ġalready Ġbe Ġrolled Ġout Ġstatus Ġbits . Ċ Ġ* Ċ Ġ* Ġreturn Ġ- 1 Ġif Ġerror Ġoccurs . Ċ Ġ*/ Ċ fun ĠconvertTo Hum idity ( datas : ĠByteArray ): ĠFloat Ġ{ ĊĠĠĠ Ġif Ġ( datas . isEmpty ()) Ġreturn Ġ- 1 f ĊĠĠĠ Ġvar Ġraw Data : ĠFloat Ġ= Ġ( datas [ 0 ]. toInt (). and ( 0 xFF ). sh l ( 8 ) Ġ+ Ġdatas [ 1 ]. toInt (). and ( 0 xFF )). toFloat () ĊĠĠĠ Ġraw Data Ġ*= Ġ 1 2 5 ĊĠĠĠ Ġraw Data Ġ/= Ġ 2 . sh l ( 1 5 ) ĊĠĠĠ Ġreturn Ġraw Data Ġ- Ġ 6 Ċ } Ċ Ċ /** Ċ Ġ* ĠConvert Ġthe Ġsensor Ġresponse Ġraw Ġdata Ġto Ġtemperature Ġdata , Ċ Ġ* Ġthe Ġinput Ġdata Ġset Ġshould Ġalready Ġbe Ġrolled Ġout Ġstatus Ġbit . Ċ Ġ* Ċ Ġ* Ġreturn Ġ- 1 Ġif Ġerror Ġoccurs . Ċ Ġ*/ Ċ fun ĠconvertTo Temperature ( datas : ĠByteArray ): ĠFloat Ġ{ ĊĠĠĠ Ġif Ġ( datas . isEmpty ()) Ġreturn Ġ- 1 f ĊĠĠĠ Ġvar Ġraw Data : ĠFloat Ġ= Ġ( datas [ 0 ]. toInt (). and ( 0 xFF ). sh l ( 8 ) Ġ+ Ġdatas [ 1 ]. toInt (). and ( 0 xFF )). toFloat () ĊĠĠĠ Ġraw Data Ġ*= Ġ 1 7 5 . 7 2 f ĊĠĠĠ Ġraw Data Ġ/= Ġ 2 . sh l ( 1 5 ) ĊĠĠĠ Ġreturn Ġraw Data Ġ- Ġ 4 6 . 8 5 f Ċ } Ċ