Also, to point out existing work, there is an HDLC framer and deframer in Gnuradio now. The deframer takes in a byte stream, 1 bit per byte, and outputs PDUs with your HDLC frames.
--n On Sat, Apr 18, 2015 at 6:46 AM, Marcus Müller <[email protected]> wrote: > Hi Mike, > > you might actually be doing something redundant here: > GNU Radio actually keeps tabs on how many items you produced; just call > nitems_written(0) to get that number. > > I don't really understand where your string comes from or where it ends > up, but do make sure your string isn't going to be longer than your > noutput_items. > > Generally, this is something that can most probably best be analyzed > using appropriate debugging methods -- I'd like to point you to [1]. > As soon as you find out where your segfault happens, it will be easier > to understand under which conditions it happens. Also, GDB allows you to > `print` the value of local variables, so that might actually shine quite > a light on what goes wrong :) > > On a more general note: what your block seems to do looks very much like > what tagged stream blocks (probably after gr-ax25) were designed to do. > Have a look at [2]; maybe I'm misjudging the situation, maybe you're > already using the TSB facilities. > > Greetings, > Marcus > > [1] http://gnuradio.org/redmine/projects/gnuradio/wiki/TutorialsGDB > [2] http://gnuradio.org/doc/doxygen/page_tagged_stream_blocks.html > On 04/18/2015 03:36 PM, Mike Willis wrote: > > I should have added, the packet decoding is based on Volkers rather > nifty gr-ax25, which I think is based on earlier implementations so I don't > think that is where the bug is. I have heavily modified that code as I am > using BPSK demodulator but the hdlc parts are the same. > > > > Mike > > > > -----Original Message----- > > From: Mike Willis [mailto:[email protected]] > > Sent: 18 April 2015 13:58 > > To: GNURadio Discussion List > > Subject: Input items vs Output items > > > > I am slightly confused with the way you implement a general work > function - here is my AX25 decoder which takes in bits and outputs decoded > packets in text format as a stream of 8 bit integers. This was based on the > general work example in the GR tutorial. > > > > int ax25_impl::general_work (int noutput_items, > > gr_vector_int &ninput_items, > > gr_vector_const_void_star &input_items, > > gr_vector_void_star &output_items) { int i; const char > *bit = (const char *) input_items[0]; out = (char *) output_items[0]; > > > > d_numchars=0; > > for (i=0;i <noutput_items; i++) > > { > > hdlc_rxbit( bit[i] ); > > } > > > > // Tell runtime system how many output items we produced. > > consume_each (noutput_items); > > return d_numchars; > > } > > > > I keep a tally of how many characters I output in the class member > variable d_numchars. I do this by initially printing to the "out" > > buffer (see above code) with the vsprintf() function and then using the > strlen() function to find out how long the out string is. > > > > It works for a while, perhaps 200-300 packets and then crashes with a > segfault and error 7. I know the crash is related to the number of output > items because if I reduce the number of characters I output it will run for > longer. If I don't output anything its fine, but not very useful. > > > > It gets complicated because the block outputs nothing at all until it > decodes a packet, then it outputs that entire packet, which might be up to > 1000 characters or so. > > > > I think I have made a fundamental error somewhere. Finding it is proving > problematic. I am also confused by ninput_items and noutput_items variables > as to me they appear reversed but that is how they are in the tutorial. > > > > > > Mike > > > > > > _______________________________________________ > > Discuss-gnuradio mailing list > > [email protected] > > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > > > _______________________________________________ > Discuss-gnuradio mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >
_______________________________________________ Discuss-gnuradio mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
