mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-23 08:28:36 -05:00
114 lines
3.8 KiB
Python
114 lines
3.8 KiB
Python
|
#!/usr/bin/env python3
|
||
|
"""
|
||
|
PTT feature control
|
||
|
Switches a PTT Feature on/off with optional link to a LimeRFE feature
|
||
|
"""
|
||
|
import sys
|
||
|
import traceback
|
||
|
import requests
|
||
|
import time
|
||
|
from optparse import OptionParser
|
||
|
|
||
|
base_url = "http://127.0.0.1:8091/sdrangel"
|
||
|
|
||
|
# ======================================================================
|
||
|
def getInputOptions():
|
||
|
|
||
|
parser = OptionParser(usage="usage: %%prog [-t]\n")
|
||
|
parser.add_option("-a", "--address", dest="address", help="Address and port. Default: 127.0.0.1:8091", metavar="ADDRESS", type="string")
|
||
|
parser.add_option("-p", "--ptt-index", dest="ptt_index", help="Index of PTT feture", metavar="INTEGER", type="int")
|
||
|
parser.add_option("-l", "--limerfe-index", dest="limerfe_index", help="Index of LimeRFE feture", metavar="INTEGER", type="int")
|
||
|
parser.add_option("-t", "--transmit", dest="transmit", help="PTT on else off", action="store_true")
|
||
|
|
||
|
(options, args) = parser.parse_args()
|
||
|
|
||
|
if (options.address == None):
|
||
|
options.address = "127.0.0.1:8091"
|
||
|
|
||
|
return options
|
||
|
|
||
|
|
||
|
# ======================================================================
|
||
|
def turn_ptt(options):
|
||
|
if options.limerfe_index is not None:
|
||
|
limerfe_url = f"{base_url}/featureset/feature/{options.limerfe_index}/actions"
|
||
|
if options.transmit:
|
||
|
limerfe_payload_rx = {
|
||
|
"featureType": "LimeRFE",
|
||
|
"LimeRFEActions": {
|
||
|
"setRx": 0
|
||
|
}
|
||
|
}
|
||
|
r = requests.post(url=limerfe_url, json=limerfe_payload_rx) # switch off Rx
|
||
|
print(f"LimeRFE switch off Rx {r.status_code}")
|
||
|
else:
|
||
|
limerfe_payload_tx = {
|
||
|
"featureType": "LimeRFE",
|
||
|
"LimeRFEActions": {
|
||
|
"setTx": 0
|
||
|
}
|
||
|
}
|
||
|
r = requests.post(url=limerfe_url, json=limerfe_payload_tx) # switch off Tx
|
||
|
print(f"LimeRFE switch off Tx {r.status_code}")
|
||
|
time.sleep(0.2)
|
||
|
|
||
|
ptt_payload = {
|
||
|
"featureType": "SimplePTT",
|
||
|
"SimplePTTActions": {
|
||
|
"ptt": 1 if options.transmit else 0
|
||
|
}
|
||
|
}
|
||
|
ptt_url = f"{base_url}/featureset/feature/{options.ptt_index}/actions"
|
||
|
r = requests.post(url=ptt_url, json=ptt_payload)
|
||
|
print(f"SimplePTT post action {r.status_code}")
|
||
|
|
||
|
if options.limerfe_index is not None:
|
||
|
time.sleep(0.2)
|
||
|
limerfe_url = f"{base_url}/featureset/feature/{options.limerfe_index}/actions"
|
||
|
if options.transmit:
|
||
|
limerfe_payload_tx = {
|
||
|
"featureType": "LimeRFE",
|
||
|
"LimeRFEActions": {
|
||
|
"setTx": 1
|
||
|
}
|
||
|
}
|
||
|
r = requests.post(url=limerfe_url, json=limerfe_payload_tx) # switch on Tx
|
||
|
print(f"LimeRFE switch on Tx {r.status_code}")
|
||
|
else:
|
||
|
limerfe_payload_rx = {
|
||
|
"featureType": "LimeRFE",
|
||
|
"LimeRFEActions": {
|
||
|
"setRx": 1
|
||
|
}
|
||
|
}
|
||
|
for i in range(5):
|
||
|
r = requests.post(url=limerfe_url, json=limerfe_payload_rx) # switch on Rx
|
||
|
print(f"LimeRFE switch on Rx {r.status_code}")
|
||
|
if r.status_code // 100 == 2:
|
||
|
break
|
||
|
time.sleep(0.5)
|
||
|
|
||
|
|
||
|
# ======================================================================
|
||
|
def main():
|
||
|
try:
|
||
|
options = getInputOptions()
|
||
|
|
||
|
global base_url
|
||
|
base_url = "http://%s/sdrangel" % options.address
|
||
|
|
||
|
if options.ptt_index is None:
|
||
|
print("You must at least give the PTT feature index (-p option)")
|
||
|
sys.exit(1)
|
||
|
|
||
|
turn_ptt(options)
|
||
|
|
||
|
except Exception as ex:
|
||
|
tb = traceback.format_exc()
|
||
|
print(tb, file=sys.stderr)
|
||
|
|
||
|
|
||
|
# ======================================================================
|
||
|
if __name__ == "__main__":
|
||
|
main()
|