On 06/08/2015 07:16 PM, Anil Kumar Yerrapragada wrote: > I am trying to implement a state machine based synchronization > algorithm. The 2 states being "search for synch sequence" and "pass data > through". > > As far as I can see, the ideal way to do this is to have the work > function check what state it is in before proceeding. If it is in search > state, the work function will search for the synch sequence and once > found, switch to "pass data" and get out. > > Next time work is called (use forecast to make sure that the number of > input items available matches the amount I have data I have after the > synch sequence), it will pass data through. Switch state back to > "search" and so on.
FYI, the header/payload demux block does just that. It's pretty generic, so it'll catch more cases than you need, but have a look at its source code. > > My questions are these: > > 1. Before each work call, does GNURadio automatically know the state > that I left it in in the previous call? (Am I allowed to make work > return anything else apart from len(output_items)? No, but class attribute will persist between work calls. > > 2. Is it better/possible to implement a separate block for the state > machine that can somehow make the system aware of what state it is in? Just make the state a class variable / attribute. Have fun and good luck, M _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio