bistromath / gr-air-modes

Gnuradio Mode-S/ADS-B radio
This project implements a Mode S receiver for the Gnuradio software-defined radio project. It is designed to receive Mode S transmissions from aircraft and decode them to a human-readable format, including ADS-B information messages such as position and a
GNU General Public License v3.0
438 stars 126 forks source link

Can't decode by filename source #73

Closed shianglin closed 9 years ago

shianglin commented 9 years ago

hi Nick, My name is Siang Lin, I have one problem during I run the modes_rx by filename source. The filename source "raw1.dat" is recorded by usrp_source and file_sink in form of complex-float32. I want to replay this data by modes_rx and then the problem shows below:

command : modes_rx --source="/home/cnsl/raw1.dat" output: Using file source /home/cnsl/raw1.dat Using Volk machine: avx_64_mmx_orc Segmentation fault

what's wrong with "Segmentation fault"? Thx! Best Regards~

bistromath commented 9 years ago

What format is the data you're feeding gr-air-modes? It is expecting complex float32 format. If you feed it data formatted in a different way the Gnuradio file source can segfault.

On Sat, Jun 27, 2015 at 12:00 AM shianglin notifications@github.com wrote:

hi Nick, I name is Siang Lin, I have one problem during I run the modes_rx by filename source. the problem shows below: command : modes_rx --source="/home/cnsl/raw1.dat" output: Using file source /home/cnsl/raw1.dat Using Volk machine: avx_64_mmx_orc Segmentation fault

what' wrong with "Segmentation fault"? Thx! Best Regards~

— Reply to this email directly or view it on GitHub https://github.com/bistromath/gr-air-modes/issues/73.

shianglin commented 9 years ago

Hi Nick, Thank you for your responds.

I try the two different ways to record the data. One is I recorded data by usrp_source and file sink in gnuradio-companion application, and the usrp_source output format is complex float-32. The other way is I use "rx_sample_to_file" to record the data in "float" (fc32) format. In additionally, I also utilized the older gr-air-modes in 3.6 version gnuradio to replay this data. The data can be replayed by this version. So, I make sure that the data is complex-float32.

Thx! Best Regards~

bistromath commented 9 years ago

Did you figure this out?

On Wed, Jul 1, 2015, 12:33 AM shianglin notifications@github.com wrote:

Closed #73 https://github.com/bistromath/gr-air-modes/issues/73.

— Reply to this email directly or view it on GitHub https://github.com/bistromath/gr-air-modes/issues/73#event-345075375.

shianglin commented 9 years ago

Yes, the problem is in the pmt::pmt_t tag_to_timestamp of preamble_impl.cc. If the source is from file, the code line in "if(tstamp.key == NULL || pmt::symbol_to_string(tstamp.key) != "rx_time") " will return 0. Thus, the "tstamp.value" can not be obtained. Therefore, I add the few code in function of "static pmt::pmt_t tag_to_timestamp(gr::tag_t tstamp, uint64_t abs_sample_cnt, int rate)" as shown below: if(tstamp.key == NULL || pmt::symbol_to_string(tstamp.key) != "rx_time"){ last_whole_stamp = 0; last_frac_stamp = 0; { else{ .... {

bistromath commented 9 years ago

Can you submit a pull request?

Thanks!

On Wed, Jul 1, 2015 at 8:39 AM shianglin notifications@github.com wrote:

Yes, the problem is in the pmt::pmt_t tag_to_timestamp of preamble_impl.cc. If the source is from file, the code line in "if(tstamp.key == NULL || pmt::symbol_to_string(tstamp.key) != "rx_time") " will return 0. Thus, the "tstamp.value" can not be obtained. Therefore, I add the few code in function of "static pmt::pmt_t tag_to_timestamp(gr::tag_t tstamp, uint64_t abs_sample_cnt, int rate)" as shown below: if(tstamp.key == NULL || pmt::symbol_to_string(tstamp.key) != "rx_time"){ last_whole_stamp = 0; last_frac_stamp = 0; { else{ .... {

— Reply to this email directly or view it on GitHub https://github.com/bistromath/gr-air-modes/issues/73#issuecomment-117719175 .

shianglin commented 9 years ago

Sorry, what is the mean?