package Ġcom . github . flo rent 3 7 . rx beacon Ċ Ċ import Ġorg . alt beacon . beacon . Beacon Ċ import Ġorg . alt beacon . beacon . utils . Url Beacon Url Compressor Ċ import Ġjava . util .* Ċ Ċ data Ġclass ĠBe acon Saved ( ĊĠĠĠĠĠĠĠ Ġval Ġhash code : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġval Ġbe acon Type : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġval Ġbe acon Address : ĠString ? Ġ= Ġnull , Ġ// ĠMAC Ġaddress Ġof Ġthe Ġbluetooth Ġemitter ĊĠĠĠĠĠĠĠ Ġval Ġmanufacturer : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġval Ġtx Power : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġval Ġr ssi : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġval Ġdistance : ĠDouble Ġ= Ġ 0 . toDouble (), ĊĠĠĠĠĠĠĠ Ġval Ġlast Seen : ĠLong Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġval Ġbe acon Name : String ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecial ized Ġfield Ġfor Ġevery Ġbe acon Ġtype ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġi beacon Data : ĠI beacon Data ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠ Ġval Ġed d yst one Url Data : ĠE dd yst one Url Data ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠ Ġval Ġed d yst one Uid Data : ĠE dd yst one Uid Data ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠ Ġval Ġtelemetry Data : ĠTe lemetry Data ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġval Ġr uu vi Data : ĠR uu vi Data ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ ED DY ST ONE _ UID Ġ= Ġ" edd yst one _ uid " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ ED DY ST ONE _ URL Ġ= Ġ" edd yst one _ url " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ ALT BE AC ON Ġ= Ġ" alt beacon " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ IBE AC ON Ġ= Ġ" i beacon " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ RU UV IT AG Ġ= Ġ" ru uv it ag " ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcreate From Beacon ( beacon : ĠBe acon ) Ġ: ĠBe acon Saved Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCommon Ġfields Ġto Ġevery Ġbe ac ons ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhash code Ġ= Ġbe acon . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Seen Ġ= ĠDate (). time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbe acon Address Ġ= Ġbe acon . bluetooth Address ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanufacturer Ġ= Ġbe acon . manufacturer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr ssi Ġ= Ġbe acon . rssi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Power Ġ= Ġbe acon . tx Power ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbluetooth Name Ġ= Ġbe acon . bluetooth Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdistance Ġ= Ġif Ġ( beacon . distance . isIn finite ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(- 1 ). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe acon . distance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbe acon Type : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi beacon Data : ĠI beacon Data ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġed d yst one Url Data : ĠE dd yst one Url Data ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġed d yst one Uid Data : ĠE dd yst one Uid Data ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtelemetry Data : ĠTe lemetry Data ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġr uu vi Data : ĠR uu vi Data ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( beacon . service Uuid Ġ== Ġ 0 xFE AA ) Ġ{ Ġ// ĠThis Ġis Ġan ĠE dd yst one Ġformat ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDo Ġwe Ġhave Ġtelemetry Ġdata ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( beacon . extra Data Fields . size Ġ>= Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtelemetry Data Ġ= ĠTe lemetry Data ( beacon . extra Data Fields [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe acon . extra Data Fields [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTe lemetry Data . get Temperature From T lm Field ( beacon . extra Data Fields [ 2 ]. toFloat ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe acon . extra Data Fields [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe acon . extra Data Fields [ 4 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( beacon . beacon TypeCode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 Ġ-> Ġ{ Ġ// ĠThis Ġis Ġa ĠE dd yst one - UID Ġframe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe acon Type Ġ= ĠTYPE _ ED DY ST ONE _ UID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġed d yst one Uid Data Ġ= ĠE dd yst one Uid Data ( beacon . id 1 . toString (), Ġbe acon . id 2 . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 1 0 Ġ-> Ġ{ Ġ// ĠThis Ġis Ġa ĠE dd yst one - URL Ġframe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe acon Type Ġ= ĠTYPE _ ED DY ST ONE _ URL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠUrl Beacon Url Compressor . un compress ( beacon . id 1 . toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġed d yst one Url Data Ġ= ĠE dd yst one Url Data ( url ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url ?. startsWith (" https :// ru u . vi /# ") Ġ== Ġtrue ) Ġ{ Ġ// ĠThis Ġis Ġa ĠR uu vi Tag ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhash Ġ= Ġurl . split ("# "). get ( 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġmanually Ġset Ġthe Ġhash code Ġof Ġthe ĠR uu vi Tag Ġso Ġit Ġonly Ġappears Ġonce Ġper Ġaddress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash code Ġ= Ġbe acon Address ?. hashCode () Ġ?: Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe acon Type Ġ= ĠTYPE _ RU UV IT AG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr uu vi Parser Ġ= ĠR uu vi Parser ( hash ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr uu vi Data Ġ= ĠR uu vi Data ( ru u vi Parser . humidity , Ġr uu vi Parser . air Pressure , Ġr uu vi Parser . temp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// ĠThis Ġis Ġan Ġi Beacon Ġor ĠALT Beacon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe acon Type Ġ= Ġif Ġ( beacon . beacon TypeCode Ġ== Ġ 0 x BE AC ) ĠTYPE _ ALT BE AC ON Ġelse ĠTYPE _ IBE AC ON Ġ// Ġ 0 x 4 c 0 0 0 2 1 5 Ġis Ġi Beacon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi beacon Data Ġ= ĠI beacon Data ( beacon . id 1 . toString (), Ġbe acon . id 2 . toString (), Ġbe acon . id 3 . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBe acon Saved ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash code Ġ= Ġhash code , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Seen Ġ= Ġlast Seen , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanufacturer Ġ= Ġmanufacturer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr ssi Ġ= Ġr ssi , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx Power Ġ= Ġtx Power , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance Ġ= Ġdistance , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe acon Type Ġ= Ġbe acon Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi beacon Data Ġ= Ġi beacon Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġed d yst one Url Data Ġ= Ġed d yst one Url Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġed d yst one Uid Data Ġ= Ġed d yst one Uid Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtelemetry Data Ġ= Ġtelemetry Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr uu vi Data Ġ= Ġr uu vi Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe acon Name Ġ= Ġbluetooth Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ