def send(self, data): payloads = self.split(data, self.group_size) for payload in payloads: payload = self.escape(payload, self.flag, self.escape_byte) frame = self.flag + payload + self.flag print 'frame sent by {}: {}'.format(self.endpoint, utils.format_bytes(frame)) self.port.put(frame)
def collect_bits(self, port): # TODO # self.data += ibuffer.take_bytes() # # collect bits at multiples of 8 bits, port.ibuffer = utils.split_at(port.ibuffer, len(port.ibuffer) // 8 * 8) if bits: self.data += utils.unbitify(bits) print '{} Collected: {}'.format(self, utils.format_bytes(self.data)) raw_input()
data = '' break # receive data until end flag while True: # receive 8 bits for _ in range(8): yield self.port.bit_arrive.event data += self.port.get(1) # check if is escaping if data.endswith(escape_byte): # delete the escaper byte data = data[:-8] # get the escapee byte for _ in range(8): yield self.port.bit_arrive.event data += self.port.get(1) continue # end flag detected if data.endswith(flag): data = data[:-8] break mint.ret(utils.unbitify(data)) if __name__ == '__main__': data = '\xff\x01\x00' print utils.format_bytes(data) edata = Framer.escape(data, '\xff', '\x00') print utils.format_bytes(edata, 'hex') print utils.format_bytes(Framer.unescape(edata, '\x00'), 'hex')
if data.endswith(flag): data = '' break # receive data until end flag while True: # receive 8 bits for _ in range(8): yield self.port.bit_arrive.event data += self.port.get(1) # check if is escaping if data.endswith(escape_byte): # delete the escaper byte data = data[:-8] # get the escapee byte for _ in range(8): yield self.port.bit_arrive.event data += self.port.get(1) continue # end flag detected if data.endswith(flag): data = data[:-8] break mint.ret(utils.unbitify(data)) if __name__ == '__main__': data = '\xff\x01\x00' print utils.format_bytes(data) edata = Framer.escape(data, '\xff', '\x00') print utils.format_bytes(edata, 'hex') print utils.format_bytes(Framer.unescape(edata, '\x00'), 'hex')