[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] HDLC framer
Re: [Discuss-gnuradio] HDLC framer
Fri, 05 Dec 2014 11:14:07 +0100
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0
Thank you, Nick, for clarification!
Yes, I was kind of messing that up.
I've done little PMT work -- is there a convenient way to "reinterpret"
the payload of any PMT as u8v/blob?
On 12/04/2014 06:01 PM, Nick Foster wrote:
> I wrote the HDLC framer to use PMT blobs (specifically, PMT pairs with a
> length field and a blob) because it seemed that was the convention we were
> settling upon in GR to handle binary messages. I'm unaware if there was any
> formal specification or agreement to this format.
> To clarify, the missing feature is just dealing with blobs that aren't a
> multiple of 8 bits in length. To do so would probably require changing the
> length field to represent nbits instead of nbytes, and using a padding
> convention (msbit or lsbit) to determine which bits in the last byte of the
> blob should be included.
> I haven't seen too many (len%8) HDLC frames out there so I never got down
> to putting that in there. The deframer would also have to be modified,
> specifically crc_ccitt().
> On Thu, Dec 4, 2014 at 8:25 AM, Marcus Müller <address@hidden>
>> Hi Daniel,
>> the HDLC framer can only deal with messages containing PMTs that are
>> "blobs", ie. u8vectors.
>> In fact, that's a missing feature:
>> pmt::pmt_t len(pmt::car(msg)); //TODO for non-mult-8 nbits
>> pmt::pmt_t blob(pmt::cdr(msg));
>> throw std::runtime_error("HDLC framer: PMT must be blob");
>> Instead of making a pmt.intern("String"), you will need to have a
>> u8vector. It's a bit ugly to generate that in single line:
>> pmt.pmt_to_python.numpy_to_uvector(numpy.array([ord(c) for c in "Hello
>> World"], numpy.uint8))
>> you might need to add an "import block" that does an "import numpy".
>> On 12/04/2014 11:52 AM, Daniel Batista wrote:
>>> Thank you Marcus,
>>> I try the following:
>>> MessageStrobe("Hello World") ----> HDCL framer ---->HDLC deframer ---->
>> Message Debug
>>> and I get the following error message:thread[thread-per-block: <block
>> hdlc_framer_pb (1)>]: pmt_car: wrong_type : Hello World!
>>> What did I do wrong?
>>> On Wednesday, December 3, 2014 10:55 AM, Marcus Müller <
>> address@hidden> wrote:
>>> Hi Daniel,
>>> PMT is short for "polymorphic type" .
>>> GNU Radio uses PMTs for stream tags and, more importantly here, for
>>> asynchronous message ports.
>>> So the idea is that you have a source of messages, sending your
>>> data to the HDLC framer, which frames it and generates output items.
>>> If you want some illustrated guide through these concept, I'd
>>> recommend the new guided tutorials on gnuradio.org numbers 1 through
>>> Greetings, and happy hacking,
>>>  http://gnuradio.org/doc/doxygen/page_pmt.html
>>>  http://gnuradio.org/doc/doxygen/page_msg_passing.html
>>>  http://gnuradio.org/redmine/projects/gnuradio/wiki/Guided_Tutorials
>>> On 12/02/2014 10:47 AM, Daniel Batista wrote:
>>>> Hi, I read in the documentation that HDLC framer takes in PMT
>>>> binary blobs and outputs HDLC frames as unpacked bits.I don't
>>>> undestand what are the PMT binary blobs.How can I put in an HDLC
>>>> frame a "Hello World" message? ThanksDaniel
>>>> _______________________________________________ Discuss-gnuradio
>>>> mailing list address@hidden
>>> Discuss-gnuradio mailing list
>> Discuss-gnuradio mailing list