# Interference Recorder Script

This script takes in a filename as in input and opens a GUI which allows
the user to adjust the frequency, bandwidth, gain, and record time. Upon
closing the GUI, the script will automatically begin recording for the
specified time.

Usage:

```
./bandpass_recorder.py filename
```

## Requirements:
- USRP Software Defined Radio
- GNURadio and UHD Driver
- `bandpass_recorder_file.py` and `bandpass_recorder_gui.py`

## Changing radio behavior
The recorder behavior can be changed by modifying `bandpass_recorder_file.py`
or `bandpass_recorder_gui.py` in 2 ways:

1. Editing the files directly
2. Opening `bandpass_recorder_file.grc` or `bandpass_recorder_gui.grc`
   with gnuradio-companion and regenerating the python files.

Note: the output of bandpass_recorder_file.py must be recorder.out as
this is used by the script to specify the output filename. The script
will output the data stream to recorder.out and it will then be renamed
to the specified filename.

# Signal Analysis Tool

`signal_analyzer.py` can be used to analyze recordings in order to extract
parameters from the data files created by the recorder script.

Use `./signal_analyzer.py -h` to view options

Note that large window/display values can crash your system as they are very
memory intensive. Window values should be less than or equal to 1e8 and
display values should be less than or equal to 1e7.
