{"id":57,"date":"2018-06-16T07:43:27","date_gmt":"2018-06-16T07:43:27","guid":{"rendered":"https:\/\/www.funwithelectronics.com\/wordpress\/?p=57"},"modified":"2018-06-17T18:21:26","modified_gmt":"2018-06-17T18:21:26","slug":"burst_msg_source_c-together-with-blocks-from-gr-iridium","status":"publish","type":"post","link":"https:\/\/www.funwithelectronics.com\/blog\/index.php\/2018\/06\/16\/burst_msg_source_c-together-with-blocks-from-gr-iridium\/","title":{"rendered":"burst_msg_source_c together with blocks from gr-iridium"},"content":{"rendered":"<p>You will find the burst_msg_source_c in this out-of-tree module: <a href=\"https:\/\/github.com\/rubund\/capture-tools\/tree\/master\/gr-capture_tools\">https:\/\/github.com\/rubund\/capture-tools\/tree\/master\/gr-capture_tools<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/muccc\/gr-iridium\"><em>gr-iridium<\/em><\/a> is a module made for receiving packets from Iridium satellites. One clever idea by the gr-iridium guys is to use an FFT to monitor a whole band and then detect peaks. This makes it possible to receive packets at multiple frequencies at the same time, without having a huge number of baseband processors working in parallel.<\/p>\n<p>Peaks in the FFT are discovered by the block\u00a0<em>fft_burst_tagger<\/em>. The frequency and various other information is added as a stream tag to the stream. Then the block\u00a0<em>tagged_burst_to_pdu<\/em> looks for these tags in the stream and whenever it finds one, it collects a number of IQ samples and stores them in a buffer which is then passed on as a GR message.<\/p>\n<p>In gr-iridium, the downstream blocks then operate purely on messages. This means that only &#8220;custom&#8221; blocks can be used there. Since I like the idea of being able to use standard GR blocks, I implemented a new block,\u00a0<em>burst_msg_source_c<\/em>, which then again converts the messages back to a normal stream. This has proven to be a quite useful &#8220;technique&#8221;. It allows receiving packets at multiple frequencies, even coming exactly at the same time, but having only a standard &#8220;one dimensional&#8221; baseband processor implemented in GNU Radio. Since the upstream blocks add tags to the stream, it is also possible to keep track of the exact time instant when the packets were being transmitted on air.<\/p>\n<p><a href=\"https:\/\/www.funwithelectronics.com\/wordpress\/wp-content\/uploads\/2018\/06\/burst_msg_source_c.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-60\" src=\"https:\/\/www.funwithelectronics.com\/wordpress\/wp-content\/uploads\/2018\/06\/burst_msg_source_c.png\" alt=\"\" width=\"776\" height=\"453\" srcset=\"https:\/\/www.funwithelectronics.com\/blog\/wp-content\/uploads\/2018\/06\/burst_msg_source_c.png 776w, https:\/\/www.funwithelectronics.com\/blog\/wp-content\/uploads\/2018\/06\/burst_msg_source_c-300x175.png 300w, https:\/\/www.funwithelectronics.com\/blog\/wp-content\/uploads\/2018\/06\/burst_msg_source_c-768x448.png 768w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.funwithelectronics.com\/wordpress\/other_data\/burst_msg_source_c.grc\">https:\/\/www.funwithelectronics.com\/wordpress\/other_data\/burst_msg_source_c.grc<\/a><\/p>\n<p><em>burst_msg_source_c<\/em> does the frequency translation for every sample burst so that the baseband processor can stay tuned to the same frequency (baseband) all the time. Since the frequency detection mechanism in fft_burst_tagger is not always exact,\u00a0<em>burst_msg_source\u00a0<\/em>supports specifying specific frequency intervals for the channels if such information is a priori known (&#8220;<i>Round factor<\/i>&#8221; and &#8220;<em>Round add<\/em>&#8220;).<\/p>\n<p>It can be seen that the output from\u00a0<em>burst_msg_source_c<\/em> will not be at a regular sampling rate. It will come in bursts. Sometimes, if for instance the threshold has been set too low in\u00a0<em>fft_burst_tagger, <\/em>the output from\u00a0<em>burst_msg_source_c<\/em>\u00a0 will be at a sampling rate much higher than the input! In that case, the handshaking mechanism between\u00a0<em>burst_msg_source_c<\/em> and\u00a0<em>tagged_burst_to_pdu<\/em> makes it possible to simply drop bursts instead of the whole flow graph hanging (&#8220;<em>Drop Overflowing Bursts<\/em>&#8220;).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You will find the burst_msg_source_c in this out-of-tree module: https:\/\/github.com\/rubund\/capture-tools\/tree\/master\/gr-capture_tools gr-iridium is a module made for receiving packets from Iridium satellites. One clever idea by the gr-iridium guys is to use an FFT to monitor a whole band and then detect peaks. This makes it possible to receive packets at multiple frequencies at the same &hellip; <a href=\"https:\/\/www.funwithelectronics.com\/blog\/index.php\/2018\/06\/16\/burst_msg_source_c-together-with-blocks-from-gr-iridium\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;burst_msg_source_c together with blocks from gr-iridium&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/www.funwithelectronics.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/57"}],"collection":[{"href":"https:\/\/www.funwithelectronics.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.funwithelectronics.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.funwithelectronics.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.funwithelectronics.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=57"}],"version-history":[{"count":10,"href":"https:\/\/www.funwithelectronics.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/57\/revisions"}],"predecessor-version":[{"id":70,"href":"https:\/\/www.funwithelectronics.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/57\/revisions\/70"}],"wp:attachment":[{"href":"https:\/\/www.funwithelectronics.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=57"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.funwithelectronics.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=57"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.funwithelectronics.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=57"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}