Signal Generator Script 1.0
===============================================================================
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.
In order to broadcast from file, use the '-f' flag and specify the path to the
file as well as a factor which corresponds to a db-gain on the specific signal.
A general db-gain can also be specified by using the '-g' flag to amplify the
combined signal.

Options:
  -h, --help            Show this help message and exit
  -f FILENAME,FACTOR, --file=FILENAME,FACTOR
                        Add signal from file (raw 64 bit complex) which can be
                        generated using the 'bandpass_recorder.py' script. The
                        raw file can be read using scipy.fromfile.
  -u FREQUENCY, --frequency=FREQUENCY
                        Specify the desired frequency in KHz, defaults
                        to 2412KHz (Wifi Channel 1)
  -g DB_GAIN, --gain=DB_GAIN
                        Specify the db-gain amplification, defaults to 50db

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 have been placed at "/google/data/rw/teams/gfiber/sdr/recordings"
that can be used for testing or other purposes.
