示例#1
0
# 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)
示例#2
0
        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)
示例#3
0
        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)
# 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)
示例#5
0
        #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)
示例#6
0
            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)