discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Custom Header Format for Protocol Parser


From: Conner Awald
Subject: Custom Header Format for Protocol Parser
Date: Tue, 23 May 2023 13:02:51 -0400

Gnuradio version: 3.10.6.0
I'm trying to create a flowgraph that will output data from a packet-based communication system to a telemetry processing server. I'm able to demodulate the GMSK data and I've used the "correlate access code - tag" block to tag the stream when the preamble is identified. What I now want to do is output the actual payload over a TCP/UDP socket. It seems like the best way to do this is with the "Protocol Parser" block to convert the packets into a pdu that can just be dumped into a server sink, but I am a bit lost on how to define a custom format object for use in the protocol parser. 

I found the "Default Header Format Obj." block which seems to be documented on the wiki here: https://wiki.gnuradio.org/index.php/Default_Header_Format_Obj. and in the source code here: https://github.com/gnuradio/gnuradio/blob/master/gr-digital/lib/header_format_default.cc. So it seems like all I will need to do is just modify the default code to get it to correctly parse the header as needed. For example, instead of having two fields for length, I just want to modify it to only have one field for length before processing the rest as payload.

I'm getting confused about how I would actually install this into gnuradio. I've gone through the OOT c++ tutorial and the creation tool there seems to focus on blocks that have a work function to interact directly with samples whereas the header format object just sits in the flowgraph and provides methods to extract information from the header, which the protocol parser block actually executes on the samples. What do I need to do to "install" the class that I create that has the updated header processing information so that I could reference it in the "packet header parser" block? Is the process similar to what I would need to do with OOT c++ blocks? I want to try and do this the right way so I can extend it to different formats I might need to use and provide it to other users. Also, if there is a better solution to my overall problem, feel free to let me know.

- Conner

reply via email to

[Prev in Thread] Current Thread [Next in Thread]