Bug Fixes
- LimeSDR: fixed analog LP setting
SSB GUI enhancements
- Scale to show LSB/USB filters sliders position.
- Button to flip LSB to USB or vice versa
LimeSDR: Use latest version of LimeSuite
This helps support LimeSDR mini correctly in particular the change of Rx and Tx path routing according to antenna switch (issue #100)
Other changes
- Option to copy audio to UDP for SSB demod and WFM demod.
Web API
Main window can be controlled almost completely with the web API. A complete configuration can be set up using a script. For example the following Python script does the following:
- select BladeRF for the first Rx
- load a preset for the first Rx
- create a new device set (Rx tab)
- select SDRdaemonSource for the second Rx
- load a preset for the second Rx
- create a new device set (Rx tab)
- select SDRplay for the third Rx
- load a preset for the third Rx
- activate DV serial dongle support
import requests
base_url = "http://127.0.0.1:8091/sdrangel"
# commands list. Each command is a list:
# - URL suffix (API function)
# - HTTP method (GET, PATCH, POST, PUT, DELETE)
# - Params as key:value pairs or None if unused
# - JSON body or None if unused
# - Descriptive message fragment
commands = [
["/deviceset/0/device", "PUT", None, {"hwType": "BladeRF"}, "setup BladeRF on Rx 0"],
["/preset", "PATCH", None, {"deviceSetIndex": 0, "preset": {"groupName": "OM144", "centerFrequency": 145640000, "type": "R", "name": "Repeaters extended"}}, "load preset on Rx 0"],
["/devicesets", "POST", None, None, "add Rx 1 device set"],
["/deviceset/1/device", "PUT", None, {"hwType": "SDRdaemonSource"}, "setup SDRdaemonSource on Rx 1"],
["/preset", "PATCH", None, {"deviceSetIndex": 1, "preset": {"groupName": "OM430", "centerFrequency": 439550000, "type": "R", "name": "F5ZKP Daemon RPi3 SUSE"}}, "load preset on Rx 1"],
["/devicesets", "POST", None, None, "add Rx 2 device set"],
["/deviceset/2/device", "PUT", None, {"hwType": "SDRplay1"}, "setup SDRplay on Rx 2"],
["/preset", "PATCH", None, {"deviceSetIndex": 2, "preset": {"groupName": "40m", "centerFrequency": 7130000, "type": "R", "name": "SSB low"}}, "load preset on Rx 2"],
["/dvserial", "PATCH", {"dvserial": 1}, None, "set DV serial processing for AMBE frames decoding"]
]
requests_methods = {
"GET": requests.get,
"PATCH": requests.patch,
"POST": requests.post,
"PUT": requests.put,
"DELETE": requests.delete
}
for command in commands:
url = base_url + command[0]
method = requests_methods.get(command[1], None)
if method is not None:
r = method(url=url, params=command[2], json=command[3])
if r.status_code == 200:
print("Done: %s" % command[4])
else:
print("Error %d:%s" % (r.status_code, command[4]))
print(r.text)
exit(1)
else:
print("requests method error")
exit(1)
print("All done!")