# Signal Generator Script

This script takes command line arguments to broadcast the sum of various signals
with differing strengths. The script takes in arguments by specifying a type of
signal to broadcast followed by the corresponding parameters for that signal.
This script requires the user to specify at least 1 signal in order to operate.

The script currently supports 4 types of signals:

1. It can broadcast a signal from a raw data file which is generated by a file
   source in GNURadio and by the bandpass_recorder.py script included in this
   project.
2. Periodic - Generates a single sine wave at a specified offset from the
   center frequency and should show up as a spike in the fourier transform.
3. Wifi - Mimics a wifi signal. The type-specific signals like this require
   that a config file be specified. The parameters of this signal can be
   generated using signal_analyzer.py. It also requires a signal profile stored
   in a .npy file.
4. Bluetooth - Mimics a Bluetooth signal. See Wifi for description.

Usage: `signal_generator.py [options]`

To print usage info use `./signal_generator.py -h` option.

Note: If you are playing from a file and are getting Underruns (U), try moving
the file to local storage.

A set of useful recordings and signal profiles have been placed at
`/google/data/rw/teams/gfiber/sdr/recordings` that can be used for testing or
other purposes.
