package Ġorg . j ames co wan . bluetooth . echo . packet Ċ Ċ class ĠPacket ( is End : Boolean , Ġmessage : ByteArray ) Ġ{ ĊĊĠĠĠ Ġval Ġdata : ByteArray ĊĠĠĠ Ġval Ġis End : Boolean ĊĠĠĠ Ġval Ġmessage : ByteArray ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . is End Ġ= Ġis End ĊĠĠĠĠĠĠĠ Ġthis . message Ġ= Ġmessage ĊĠĠĠĠĠĠĠ Ġif Ġ( is End ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġcopy Bytes ( END _ PACKET , Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġcopy Bytes ( 0 , Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcopy Bytes ( prefix : Byte , Ġsource : ByteArray ): ByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult : ByteArray Ġ= ĠByteArray ( source . size + 1 ) ĊĊĠĠĠĠĠĠĠ Ġresult . set ( 0 , prefix ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġcount : Int Ġ= Ġ 0 ; ĊĠĠĠĠĠĠĠ Ġval Ġmax : Int Ġ= Ġsource . size ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( count Ġ< Ġmax ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . set ( count + 1 , Ġsource [ count ++ ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEND _ PACKET : Byte Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate Packet ( value : ByteArray ): Packet Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Ġ= Ġvalue . size - 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcopy : ByteArray Ġ= ĠByteArray ( max ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( count Ġ< Ġmax ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcopy . set ( count , Ġvalue [++ count ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value . get ( 0 ) Ġ== ĠPacket . END _ PACKET ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPacket ( true , Ġcopy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPacket ( false , Ġcopy ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }