# Copyright (C) by Josh Blum. See LICENSE.txt for licensing information. import gras class MyBlock(gras.Block): def __init__(self): gras.Block.__init__(self, "MyBlock") self.foo = 0 self.register_call("get_num", self.get_num) def work(self, *args): pass def get_num(self): return 42 gras.register_factory("/tests/my_block1", MyBlock)
except ImportError: from gnuradio.digital import packet_utils self.packet_utils = packet_utils def work(self, ins, outs): assert (len(ins[0]) == 0) msg = self.pop_input_msg(0) pkt_msg = msg() #print 'pop msg', msg, type(pkt_msg) if not isinstance(pkt_msg, gras.PacketMsg): return whitener = pkt_msg.info() assert (isinstance(whitener, int)) ok, payload = self.packet_utils.unmake_packet(pkt_msg.buff.get().tostring(), whitener) if ok: payload = numpy.fromstring(payload, numpy.uint8) #get a reference counted buffer to pass downstream buff = self.get_output_buffer(0) buff.offset = 0 buff.length = len(payload) buff.get()[:] = numpy.fromstring(payload, numpy.uint8) self.post_output_msg(0, gras.PacketMsg(buff)) else: print 'f', self.post_output_msg(0, gras.PacketMsg()) gras.register_factory("/grex/packet_deframer", PacketDeframer)
self.packet_utils = packet_utils def work(self, ins, outs): assert (len(ins[0]) == 0) msg = self.pop_input_msg(0) pkt_msg = msg() #print 'pop msg', msg, type(pkt_msg) if not isinstance(pkt_msg, gras.PacketMsg): return whitener = pkt_msg.info() assert (isinstance(whitener, int)) ok, payload = self.packet_utils.unmake_packet( pkt_msg.buff.get().tostring(), whitener) if ok: payload = numpy.fromstring(payload, numpy.uint8) #get a reference counted buffer to pass downstream buff = self.get_output_buffer(0) buff.offset = 0 buff.length = len(payload) buff.get()[:] = numpy.fromstring(payload, numpy.uint8) self.post_output_msg(0, gras.PacketMsg(buff)) else: print 'f', self.post_output_msg(0, gras.PacketMsg()) gras.register_factory("/grex/packet_deframer", PacketDeframer)
#print 'len pkt', len(pkt) pkt = numpy.fromstring(pkt, numpy.uint8) pkt = numpy.append(self._header, pkt) pkt = numpy.append(pkt, self._footer) if self._use_whitener_offset: self._whitener_offset = (self._whitener_offset + 1) % 16 assert len(outs[0]) >= len(pkt) outs[0][:len(pkt)] = pkt self.produce(0, len(pkt)) #print 'produce', len(pkt) #create an end of burst tag for each packet end length = ctypes.c_size_t(len(pkt)) tag = gras.StreamTag(PMC_M("length"), PMC_M(length)) self.post_output_tag(0, gras.Tag(self.get_produced(0), PMC_M(tag))) #post all tags found in the info if pkt_msg.info: try: for tag_p in pkt_msg.info(): tag = tag_p() tag.offset += self.get_produced(0) self.post_output_tag(0, tag) except: pass gras.register_factory("/grex/packet_framer", PacketFramer)
self._whitener_offset, ) #print 'len pkt', len(pkt) pkt = numpy.fromstring(pkt, numpy.uint8) pkt = numpy.append(self._header, pkt) pkt = numpy.append(pkt, self._footer) if self._use_whitener_offset: self._whitener_offset = (self._whitener_offset + 1) % 16 assert len(outs[0]) >= len(pkt) outs[0][:len(pkt)] = pkt self.produce(0, len(pkt)) #print 'produce', len(pkt) #create an end of burst tag for each packet end length = ctypes.c_size_t(len(pkt)) tag = gras.StreamTag(PMC_M("length"), PMC_M(length)) self.post_output_tag(0, gras.Tag(self.get_produced(0), PMC_M(tag))) #post all tags found in the info if pkt_msg.info: try: for tag_p in pkt_msg.info(): tag = tag_p() tag.offset += self.get_produced(0) self.post_output_tag(0, tag) except: pass gras.register_factory("/grex/packet_framer", PacketFramer)