Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,4 @@ Any transmit capable device that can be used to transmit using a GNURadio gr-osm
**lrs_pager.py** Generates a pager.bin file to be transmitted by lrs_tx.py. This code is based on [github.com/tony-tiger/lrs](https://github.com/tony-tiger/lrs)<br/>
**lrs_tx.py** Transmits an LRS signal, based on a pager.bin file generated by lrs_pager.py<br/>
**pocsagtx_osmocom.py** Transmits POCSAG messages using [gr-mixalot](https://github.com/unsynchronized/gr-mixalot)<br/>
**gotenna_pro_bladerf.py** Transmits goTenna Pro broadcast messages using bladeRF and packet encoding from [gr-tenna](https://github.com/argilo/gr-tenna)<br/>
45 changes: 45 additions & 0 deletions challengectl.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import subprocess

from challenges import ask, cw, usb_tx, nbfm, spectrum_paint, pocsagtx_osmocom, lrs_pager, lrs_tx
from challenges.gotenna import gotenna_pro_tx_bladerf, gotenna_pro_tx_usrp

def build_database(flagfile, devicefile):
"""Create sqlite database based on flags file and devices file. Database file name will be based on
Expand Down Expand Up @@ -232,6 +233,50 @@ def fire_lrs(self, device_string, flag_q, device_q, *flag_args):
flag_q.put(flag_args[0])
print("Returned flag to pool")

def fire_gotenna_pro(self, device_string, flag_q, device_q, *flag_args):
print("\nTransmitting goTenna Pro\n")
flag_args = flag_args[0]
flag = flag_args[1]
modopts = flag_args[2]
mintime = flag_args[4]
maxtime = flag_args[5]
freq = int(flag_args[6]) * 1000
norandsleep = flag_args[8]

devargs = [arg.strip() for arg in device_string.split(",") if arg.strip() != ""]
devtypes = [arg.lower() for arg in devargs]
gotenna_module = None
if("uhd" in devtypes):
gotenna_module = gotenna_pro_tx_usrp
gotennaopts = gotenna_module.argument_parser().parse_args(modopts.split())
gotennaopts.device_addr = ",".join([arg for arg in devargs if arg.lower() != "uhd"])
elif(any(devtype.startswith("hackrf") for devtype in devtypes)):
print("goTenna Pro is not supported on HackRF, skipping device {}".format(device_string))
elif(any(devtype.startswith("bladerf") for devtype in devtypes)):
gotenna_module = gotenna_pro_tx_bladerf
gotennaopts = gotenna_module.argument_parser().parse_args(modopts.split())
gotennaopts.device_args = device_string
antenna = get_antenna_port(device_string)
if(antenna != ""):
gotennaopts.antenna = antenna
else:
print("goTenna Pro is not supported on device {}, skipping".format(device_string))

if(gotenna_module != None):
gotennaopts.message = flag
gotennaopts.frequency = freq

gotenna_module.main(options=gotennaopts)
sleep(3)
disable_amp(device_string)
device_q.put(device_string)

if(norandsleep == False):
sleep(randint(mintime, maxtime))
replaceinqueue = flag_args[7]
if(replaceinqueue != False):
flag_q.put(flag_args[0])


def select_freq(band):
"""Read from frequencies text file, select row that starts with band argument.
Expand Down
4 changes: 4 additions & 0 deletions challenges/gotenna/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# The flowgraphs in this package are generated by GNU Radio Companion from the
# .grc files beside them, so they import the packet library under its bare name.
# Importing challenges.gotenna_packet first registers it under that name.
#from challenges import gotenna_packet # noqa: F401
Loading
Loading