def parse(self, decryptionKey=None): if decryptionKey is not None: self.decrypt(decryptionKey) reader = BufferReader(self._data) reader.skip(2) if self.opCode == 7: try: self.payload = parseOpcode7(reader.getRemainingBytes()) except CrownstoneException: self.payload = AdvUnknownData() self.payload.data = self._data raise CrownstoneException( CrownstoneError.INVALID_SERVICE_DATA, "Protocol not supported. Unknown data type. Could be because decryption failed." ) elif self.opCode == 6: self.payload = parseOpCode6(reader.getRemainingBytes()) else: self.payload = AdvUnknownData() self.payload.data = self._data raise CrownstoneException( CrownstoneError.INVALID_SERVICE_DATA, "Protocol not supported. Unknown opcode.")
def load(self, data): reader = BufferReader(data) self.stateType = reader.getUInt16() self.id = reader.getUInt16() self.persistenceMode = reader.getUInt8() reserved = reader.getUInt8() self.payload = reader.getRemainingBytes()
def parse(self, data: list): """ Parses data. :returns True on success. """ try: reader = BufferReader(data) self.opCode = reader.getUInt16() self.payload = reader.getRemainingBytes() return True except CrownstoneError as e: _LOGGER.warning(F"Parse error: {e}") return False
def parse(self, buffer: list): """ Parses data between size field and CRC. :returns True on success. """ reader = BufferReader(buffer) try: self.protocolMajor = reader.getUInt8() self.protocolMinor = reader.getUInt8() self.messageType = reader.getUInt8() self.payload = reader.getRemainingBytes() return True except CrownstoneError as e: _LOGGER.warning(F"Parse error: {e}") return False
def _parse(self, reader: BufferReader): self.header.parse(reader) self.offset = reader.getUInt16() self.binaryChunk = reader.getRemainingBytes()
def _deserialize(self, reader: BufferReader): self.header.deserialize(reader) self.offset = reader.getUInt16() self.binaryChunk = reader.getRemainingBytes()
def _deserialize(self, reader: BufferReader): self.header.deserialize(reader) self.elementType = reader.getUInt8() self.elementSize = reader.getUInt8() self.elementData = reader.getRemainingBytes()