mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-25 09:18:54 -05:00
scriptsapi: added LimeRFE USB support to PTT active script
This commit is contained in:
parent
0c86840647
commit
a2054032f2
@ -11,6 +11,9 @@
|
|||||||
- There is no assumption on the Rx or Tx nature you may as well switchover 2 Rx or 2 Tx
|
- There is no assumption on the Rx or Tx nature you may as well switchover 2 Rx or 2 Tx
|
||||||
- Both devices have not to belong to the same physical device necessarily. You could mix a RTL-SDR Rx and a
|
- Both devices have not to belong to the same physical device necessarily. You could mix a RTL-SDR Rx and a
|
||||||
HackRF Tx for example
|
HackRF Tx for example
|
||||||
|
- It can pilot a LimeRFE device via USB through SDRangel API (by giving TTY device with --limerfe-dev parameter)
|
||||||
|
and with the assumption that the first device set index given in the --link parameter is the Rx and the second
|
||||||
|
is the Tx
|
||||||
'''
|
'''
|
||||||
import requests
|
import requests
|
||||||
import time
|
import time
|
||||||
@ -26,6 +29,9 @@ RUNNING = set()
|
|||||||
DELAY = 1
|
DELAY = 1
|
||||||
FREQ_SYNC = False
|
FREQ_SYNC = False
|
||||||
FREQ_HAS_CHANGED = False
|
FREQ_HAS_CHANGED = False
|
||||||
|
LIMERFE_DEVICE = None
|
||||||
|
LIMERFE_RX = False
|
||||||
|
LIMERFE_TX = False
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
@ -46,6 +52,8 @@ def start_device(device_index, sdrangel_ip, sdrangel_port):
|
|||||||
print(f'start_device: Device {device_index} started')
|
print(f'start_device: Device {device_index} started')
|
||||||
else:
|
else:
|
||||||
print(f'start_device: Error starting device {device_index}')
|
print(f'start_device: Error starting device {device_index}')
|
||||||
|
if LIMERFE_DEVICE:
|
||||||
|
limerfe_switch(device_index, True, sdrangel_ip, sdrangel_port)
|
||||||
else:
|
else:
|
||||||
print(f'start_device: Device {device_index} not in idle state')
|
print(f'start_device: Device {device_index} not in idle state')
|
||||||
else:
|
else:
|
||||||
@ -70,6 +78,8 @@ def stop_device(device_index, sdrangel_ip, sdrangel_port):
|
|||||||
print(f'stop_device: Device {device_index} stopped')
|
print(f'stop_device: Device {device_index} stopped')
|
||||||
else:
|
else:
|
||||||
print(f'stop_device: Error stopping device {device_index}')
|
print(f'stop_device: Error stopping device {device_index}')
|
||||||
|
if LIMERFE_DEVICE:
|
||||||
|
limerfe_switch(device_index, False, sdrangel_ip, sdrangel_port)
|
||||||
else:
|
else:
|
||||||
print(f'stop_device: Device {device_index} not in running state')
|
print(f'stop_device: Device {device_index} not in running state')
|
||||||
else:
|
else:
|
||||||
@ -145,6 +155,34 @@ def set_center_frequency(new_frequency, device_index, sdrangel_ip, sdrangel_port
|
|||||||
print(f'set_center_frequency: error {r.status_code} getting settings for device {device_index}')
|
print(f'set_center_frequency: error {r.status_code} getting settings for device {device_index}')
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
# ======================================================================
|
||||||
|
def limerfe_switch(originator_index, start, sdrangel_ip, sdrangel_port):
|
||||||
|
""" Start or stop the LimeRFE device connected with first linked originator on Rx and second on Tx.
|
||||||
|
the start parameter is True to start and False to stop
|
||||||
|
"""
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
endpoint_url = f'http://{sdrangel_ip}:{sdrangel_port}/sdrangel/limerfe/run'
|
||||||
|
try:
|
||||||
|
if OTHER_DICT.keys().index(originator_index) == 0: # Rx
|
||||||
|
global LIMERFE_RX
|
||||||
|
LIMERFE_RX = start
|
||||||
|
else:
|
||||||
|
global LIMERFE_TX
|
||||||
|
LIMERFE_TX = start
|
||||||
|
except ValueError:
|
||||||
|
print(f'Invalid device index {originator_index}')
|
||||||
|
return
|
||||||
|
payload = {
|
||||||
|
'devicePath': LIMERFE_DEVICE,
|
||||||
|
'rxOn': 1 if LIMERFE_RX else 0,
|
||||||
|
'txOn': 1 if LIMERFE_TX else 0,
|
||||||
|
}
|
||||||
|
r = requests.put(url=endpoint_url, json=payload)
|
||||||
|
if r.status_code / 100 == 2:
|
||||||
|
print(f'LimeRFE at {LIMERFE_DEVICE} switched with Rx: {LIMERFE_RX} Tx: {LIMERFE_TX}')
|
||||||
|
else:
|
||||||
|
print(f'failed to switch LimeRFE at {LIMERFE_DEVICE} with Rx: {LIMERFE_RX} Tx: {LIMERFE_TX}')
|
||||||
|
|
||||||
# ======================================================================
|
# ======================================================================
|
||||||
@app.route('/sdrangel')
|
@app.route('/sdrangel')
|
||||||
def hello_sdrangel():
|
def hello_sdrangel():
|
||||||
@ -240,6 +278,7 @@ def getInputOptions():
|
|||||||
parser.add_argument("-l", "--link", dest="linked_devices", help="pair of indexes of devices to link", metavar="LIST", type=int, nargs=2)
|
parser.add_argument("-l", "--link", dest="linked_devices", help="pair of indexes of devices to link", metavar="LIST", type=int, nargs=2)
|
||||||
parser.add_argument("-d", "--delay", dest="delay", help="switchover delay in seconds", metavar="SECONDS", type=int)
|
parser.add_argument("-d", "--delay", dest="delay", help="switchover delay in seconds", metavar="SECONDS", type=int)
|
||||||
parser.add_argument("-f", "--freq-sync", dest="freq_sync", help="synchronize linked devices frequencies", action="store_true")
|
parser.add_argument("-f", "--freq-sync", dest="freq_sync", help="synchronize linked devices frequencies", action="store_true")
|
||||||
|
parser.add_argument("-L", "--limerfe-dev", dest="limerfe_dev", help="LimeRFE USB serial device (optional)", metavar="DEVICE", type=str)
|
||||||
options = parser.parse_args()
|
options = parser.parse_args()
|
||||||
|
|
||||||
if options.addr == None:
|
if options.addr == None:
|
||||||
@ -260,7 +299,7 @@ def getInputOptions():
|
|||||||
options.linked_devices[1]: options.linked_devices[0]
|
options.linked_devices[1]: options.linked_devices[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
return options.addr, options.port, options.sdrangel_port, options.delay, options.freq_sync, other_dict
|
return options.addr, options.port, options.sdrangel_port, options.delay, options.freq_sync, other_dict, options.limerfe_dev
|
||||||
|
|
||||||
# ======================================================================
|
# ======================================================================
|
||||||
def main():
|
def main():
|
||||||
@ -270,8 +309,9 @@ def main():
|
|||||||
global OTHER_DICT
|
global OTHER_DICT
|
||||||
global DELAY
|
global DELAY
|
||||||
global FREQ_SYNC
|
global FREQ_SYNC
|
||||||
addr, port, SDRANGEL_API_PORT, DELAY, FREQ_SYNC, OTHER_DICT = getInputOptions()
|
global LIMERFE_DEVICE
|
||||||
print(f'main: starting: SDRangel port: {SDRANGEL_API_PORT} links: {OTHER_DICT} freq sync: {FREQ_SYNC}')
|
addr, port, SDRANGEL_API_PORT, DELAY, FREQ_SYNC, OTHER_DICT, LIMERFE_DEVICE = getInputOptions()
|
||||||
|
print(f'main: starting: SDRangel port: {SDRANGEL_API_PORT} links: {OTHER_DICT} freq sync: {FREQ_SYNC} LimeRFE: {LIMERFE_DEVICE}')
|
||||||
app.run(debug=True, host=addr, port=port)
|
app.run(debug=True, host=addr, port=port)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user