[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] Custom Blocks and Number of Items Per Port
From: |
Josh Blum |
Subject: |
Re: [Discuss-gnuradio] Custom Blocks and Number of Items Per Port |
Date: |
Fri, 03 Aug 2012 15:10:04 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120714 Thunderbird/14.0 |
On 08/03/2012 02:16 PM, Alexander Olihovik wrote:
> Ideally, I'd like to have 10000 items on each port every time work() is
> called, since my sink will be sending 10k snapshots of data to another
> algorithm.
> Right now, since I don't have that many items on each port, I'm looking for
> the minimum number of items on all ports, saving that number of items from
> each stream to a numpy array, and then calling consume() for that number of
> items. Multiple calls to work() will eventually fill up the array. Is this
> not a good way of doing this?
>
That will work. There is more than 1 way to crack the egg.
I believe that you can overload forecast to make the scheduler to the
work for you. To enable that call set_auto_consume(False)
-josh
> On Fri, Aug 3, 2012 at 3:12 PM, Martin Braun (CEL) <address@hidden>wrote:
>
>> On Fri, Aug 03, 2012 at 02:23:39PM -0400, Alexander Olihovik wrote:
>>> It seems as if the gr_sync_block is close to what Josh Blum refers to as
>> an
>>> Arbitrary Ratio Block in his Blocks Coding Guide.
>>
>> Read the guide again :)
>> that's not at all what it is.
>>
>> This might also help:
>> http://gnuradio.org/redmine/projects/gnuradio/wiki/TutorialsCoreConcepts
>>
>> ...not quite finished, though.
>>
>>> Do you think if I were to use the forecast() function and make all
>>> ninput_items_required[i] to be the same set amount, I would always have
>> the
>>> same number of input_items[i] on each port every time the work()
>> function is
>>> called? Is it this simple?
>>
>> There should be no reason at all for wanting to have the same number of
>> input_items at every port. Leave that to the scheduler. Just consume
>> whatever items you need every time work() is called.
>>
>> MB
>>
>>
>>>
>>>
>>> On Fri, Aug 3, 2012 at 1:56 PM, Martin Braun (CEL) <address@hidden
>>>
>>> wrote:
>>>
>>>
>>> On Fri, Aug 03, 2012 at 01:38:38PM -0400, Alexander Olihovik wrote:
>>> > There are a few cases when input_items[0] doesn't equal
>> input_items[1].
>>> If say,
>>> > len(input_items[0]) = 1000 and len(input_items[1]) = 1500, and I
>> returned
>>> the
>>> > smaller of the two values, 1000, what would happen to the other 500
>>> samples on
>>> > port 1? Would they be buffered somewhere and then used the next
>> time the
>>> work
>>> > function is called?
>>>
>>>
>>> Yep. The case where the len(input_items) are different is what you
>>> should normally prepare for.
>>>
>>> Are you *certain* you can't use a
>> gr_sync_{block,decimator,interpolator}?
>>> That would make stuff much easier for you, I guess. For a start, you
>>> wouldn't even need to check input_items.
>>>
>>> MB
>>>
>>>
>>> >
>>> >
>>> > On Wed, Aug 1, 2012 at 8:40 PM, Tom Rondeau <address@hidden>
>> wrote:
>>> >
>>> >
>>> > On Wed, Aug 1, 2012 at 3:46 PM, Alexander Olihovik <
>>> address@hidden>
>>> > wrote:
>>> > > Hi all!
>>> > > I'm writing a custom sink block in Python with multiple
>> input ports
>>> of
>>> > all
>>> > > the same data type.
>>> > > I've been reading Josh's block coding guide, but I'm
>> confused at
>>> one
>>> > point:
>>> > > The value returned by a block should be the number of items
>>> produced by
>>> > that
>>> > > block.
>>> > > Is this to say that if I have multiple ports, I may return
>> the
>>> value of
>>> > > input_items[0]?
>>> > > Or is it correct to say that I must return the sum of all
>>> input_items[i],
>>> > i
>>> > > = range(number of input ports)?
>>> > >
>>> > >
>>> > > I would like to create a synchronous block where all ports
>> consume
>>> and
>>> > > produce an equal number of items every time the work
>> function is
>>> called.
>>> > > However, it appears that there are times when input_items[0]
>> !=
>>> > > input_items[1] != ... != input_items[numPorts-1]
>>> > > If I were to return input_items[0], I would assume that this
>> would
>>> not
>>> > yield
>>> > > the results I expect!
>>> > >
>>> > > Any help is greatly appreciated!
>>> > >
>>> > > From,
>>> > > Alex
>>> >
>>> >
>>> > If you have a block with multiple input items and you want to
>> produce
>>> > the same number every time, noutput_items will tell you how
>> much you
>>> > are capable of producing on every output stream. When you
>> 'return
>>> > noutput_items', you are saying that you have produced that
>> many items
>>> > on EVERY stream.
>>> >
>>> > There is another way that specifies the same thing. Each block
>>> > consumes some number of samples on every input stream and
>> produces
>>> > some number of samples on every output stream. You can
>> individually
>>> > specify "produce(i, N_i)" and "consume(o, N_o)" on each input
>> and
>>> > output stream, respectively. In this case i is the input
>> stream and
>>> > N_i is the number of items consumed on that input stream and o
>> is the
>>> > output stream and N_o is the number of items consumed on that
>> output
>>> > stream. When specifying your own 'produce' values, though,
>> make sure
>>> > to return WORKED_CALLED_PRODUCE, to tell the scheduler that
>> you have
>>> > done this yourself. But it sounds like you want to produce the
>> same
>>> > amount on every stream, so you should be fine just using
>> 'return
>>> > nouput_items'.
>>> >
>>> > Tom
>>> >
>>> >
>>> >
>>> >
>>> > --
>>> > Alex Olihovik
>>> > University of Virginia 2013
>>> > BS Electrical Engineering
>>> > BS Computer Engineering
>>> > address@hidden
>>>
>>>
>>> > _______________________________________________
>>> > Discuss-gnuradio mailing list
>>> > address@hidden
>>> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>
>>>
>>> --
>>> Karlsruhe Institute of Technology (KIT)
>>> Communications Engineering Lab (CEL)
>>>
>>> Dipl.-Ing. Martin Braun
>>> Research Associate
>>>
>>> Kaiserstraße 12
>>> Building 05.01
>>> 76131 Karlsruhe
>>>
>>> Phone: +49 721 608-43790
>>> Fax: +49 721 608-46071
>>> www.cel.kit.edu
>>>
>>> KIT -- University of the State of Baden-Württemberg and
>>> National Laboratory of the Helmholtz Association
>>>
>>> _______________________________________________
>>> Discuss-gnuradio mailing list
>>> address@hidden
>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>
>>>
>>>
>>>
>>>
>>> --
>>> Alex Olihovik
>>> University of Virginia 2013
>>> BS Electrical Engineering
>>> BS Computer Engineering
>>> address@hidden
>>
>>> _______________________________________________
>>> Discuss-gnuradio mailing list
>>> address@hidden
>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
>>
>> --
>> Karlsruhe Institute of Technology (KIT)
>> Communications Engineering Lab (CEL)
>>
>> Dipl.-Ing. Martin Braun
>> Research Associate
>>
>> Kaiserstraße 12
>> Building 05.01
>> 76131 Karlsruhe
>>
>> Phone: +49 721 608-43790
>> Fax: +49 721 608-46071
>> www.cel.kit.edu
>>
>> KIT -- University of the State of Baden-Württemberg and
>> National Laboratory of the Helmholtz Association
>>
>> _______________________________________________
>> Discuss-gnuradio mailing list
>> address@hidden
>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
>>
>
>
>
>
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
- [Discuss-gnuradio] Custom Blocks and Number of Items Per Port, Alexander Olihovik, 2012/08/01
- Re: [Discuss-gnuradio] Custom Blocks and Number of Items Per Port, Tom Rondeau, 2012/08/01
- Re: [Discuss-gnuradio] Custom Blocks and Number of Items Per Port, Alexander Olihovik, 2012/08/03
- Re: [Discuss-gnuradio] Custom Blocks and Number of Items Per Port, Martin Braun (CEL), 2012/08/03
- Re: [Discuss-gnuradio] Custom Blocks and Number of Items Per Port, Alexander Olihovik, 2012/08/03
- Re: [Discuss-gnuradio] Custom Blocks and Number of Items Per Port, Martin Braun (CEL), 2012/08/03
- Re: [Discuss-gnuradio] Custom Blocks and Number of Items Per Port, Alexander Olihovik, 2012/08/03
- Re: [Discuss-gnuradio] Custom Blocks and Number of Items Per Port,
Josh Blum <=
- Re: [Discuss-gnuradio] Custom Blocks and Number of Items Per Port, Alexander Olihovik, 2012/08/06
- Re: [Discuss-gnuradio] Custom Blocks and Number of Items Per Port, Josh Blum, 2012/08/06