Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def __init__(self, type=ESType.url, param="https://goo.gl/m9UiEA"):
self.power = 0
self.payload = [] #As defined in https://github.com/google/eddystone/blob/master/protocol-specification.md
self.payload.append(aios.Byte("Flag Length",b'\x02'))
self.payload.append(aios.Byte("Flag Data Type",b'\x01'))
self.payload.append(aios.Byte("Flag Data",b'\x1a'))
self.payload.append(aios.Byte("Length UUID services",b'\x03'))
self.payload.append(aios.Byte("Complete List UUID Service",b'\x03'))
self.payload.append(aios.Byte("Eddystone UUID",b'\xaa'))
self.payload.append(aios.Byte("...",b'\xfe'))
self.service_data_length = aios.IntByte("Service Data length",4)
self.payload.append(self.service_data_length)
self.payload.append(aios.Byte("Service Data data type value",b'\x16'))
self.payload.append(aios.Byte("Eddystone UUID",b'\xaa'))
self.payload.append(aios.Byte("...",b'\xfe'))
self.type = aios.EnumByte("type",type.value,{ESType.uid.value:"Eddystone-UID",
ESType.url.value:"Eddystone-URL",
ESType.tlm.value:"Eddystone-TLM",
ESType.eid.value:"Eddystone-EID"})
self.payload.append(self.type)
self.parsed_payload = b''
self.type_payload=param
break
if not found:
return None
try:
top=found.retrieve("Adv Payload")[0]
except:
return None
#Rebuild that part of the structure
found.payload.remove(top)
#Now decode
result={}
data=top.val
etype = aios.EnumByte("type",self.type.val,{ESType.uid.value:"Eddystone-UID",
ESType.url.value:"Eddystone-URL",
ESType.tlm.value:"Eddystone-TLM",
ESType.eid.value:"Eddystone-EID"})
data=etype.decode(data)
found.payload.append(etype)
if etype.val== ESType.uid.value:
power=aios.IntByte("tx_power")
data=power.decode(data)
found.payload.append(power)
result["tx_power"]=power.val
nspace=aios.Itself("namespace")
xx=nspace.decode(data[:10]) #According to https://github.com/google/eddystone/tree/master/eddystone-uid
data=data[10:]
found.payload.append(nspace)
result["name space"]=nspace.val
found.payload.append(nspace)
result["name space"]=nspace.val
nspace=aios.Itself("instance")
xx=nspace.decode(data[:6]) #According to https://github.com/google/eddystone/tree/master/eddystone-uid
data=data[6:]
found.payload.append(nspace)
result["instance"]=nspace.val
elif etype.val== ESType.url.value:
power=aios.IntByte("tx_power")
data=power.decode(data)
found.payload.append(power)
result["tx_power"]=power.val
url=aios.EnumByte("type",0,{0x00:"http://www.",0x01:"https://www.",0x02:"http://",0x03:"https://"})
data=url.decode(data)
result["url"]=url.strval
for x in data:
if bytes([x]) == b"\x00":
result["url"]+=".com/"
elif bytes([x]) == b"\x01":
result["url"]+=".org/"
elif bytes([x]) == b"\x02":
result["url"]+=".edu/"
elif bytes([x]) == b"\x03":
result["url"]+=".net/"
elif bytes([x]) == b"\x04":
result["url"]+=".info/"
elif bytes([x]) == b"\x05":
result["url"]+=".biz/"
elif bytes([x]) == b"\x06":