Skip to content

Commit

Permalink
Quisk version 4.2.28
Browse files Browse the repository at this point in the history
  • Loading branch information
jimahlstrom committed Dec 26, 2023
0 parents commit ffa047c
Show file tree
Hide file tree
Showing 143 changed files with 52,434 additions and 0 deletions.
1,989 changes: 1,989 additions & 0 deletions CHANGELOG.txt

Large diffs are not rendered by default.

21 changes: 21 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Quisk Software Defined Radio by N2ADR
**December 26, 2023**

This is Quisk, a Software Defined Radio (SDR).
You supply radio hardware such as Hermes Lite2 or SoftRock to convert
the antenna voltage to I/Q samples.
Then send the samples to a computer running Quisk.
The Quisk software will read the I/Q data, tune it, filter it,
demodulate it, and send the audio to headphones or speakers.
Quisk has a microphone input and a key input so it can operate as a
complete transceiver.

The web page for this project is [https://groups.io/g/n2adr-sdr](https://groups.io/g/n2adr-sdr).

The change log is [here](CHANGELOG.txt).

The documentation is [here](docs.html).

The help file is [here](help.html).

This site is under construction. Check back soon.
2 changes: 2 additions & 0 deletions __init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#Quisk version 4.2.29
from .quisk import main
8 changes: 8 additions & 0 deletions __main__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
def main():
import quisk
if quisk.__file__.find('__init__') >= 0: # quisk is the package
import quisk.quisk as quisk
quisk.main()

if __name__ == "__main__":
main()
Binary file added ac2yd/Design_2022_0531.pdf
Binary file not shown.
1 change: 1 addition & 0 deletions ac2yd/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#
408 changes: 408 additions & 0 deletions ac2yd/control_common.py

Large diffs are not rendered by default.

54 changes: 54 additions & 0 deletions ac2yd/control_hermes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# This provides access to a remote radio. See ac2yd/remote_common.py and .pdf files for documentation.

from ac2yd.control_common import ControlCommon

class Hardware(ControlCommon):
def __init__(self, app, conf):
ControlCommon.__init__(self, app, conf)
self.hermes_code_version = 40
self.HL2_TEMP = ";;;"
self.var_rates = ['48', '96', '192', '384']
self.var_index = 0
#app.bandscope_clock = conf.rx_udp_clock
def ChangeLNA(self, value):
pass
def ChangeAGC(self, value):
pass
def HeartBeat(self):
ControlCommon.HeartBeat(self)
args = self.HL2_TEMP.split(';')
widg = self.app.bottom_widgets
if widg:
widg.text_temperature.SetLabel(args[0])
widg.text_pa_current.SetLabel(args[1])
widg.text_fwd_power.SetLabel(args[2])
widg.text_swr.SetLabel(args[3])
def RadioInit(self): # Send initial parameters not covered by CommonInit()
idName = "RfLna"
value = self.app.midiControls[idName][0].GetValue()
self.RemoteCtlSend("%s;%d\n" % (idName, value))
def VarDecimGetChoices(self): # return text labels for the control
return self.var_rates
def VarDecimGetLabel(self): # return a text label for the control
return "Sample rate ksps"
def VarDecimGetIndex(self): # return the current index
return self.var_index
def VarDecimSet(self, index=None): # set decimation, return sample rate
if index is None: # initial call to set rate before the call to open()
rate = self.app.vardecim_set # May be None or from different hardware
else:
rate = int(self.var_rates[index]) * 1000
if rate == 48000:
self.var_index = 0
elif rate == 96000:
self.var_index = 1
elif rate == 192000:
self.var_index = 2
elif rate == 384000:
self.var_index = 3
else:
self.var_index = 0
rate = 48000
return rate
def VarDecimRange(self):
return (48000, 384000)
40 changes: 40 additions & 0 deletions ac2yd/control_hiqsdr.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# This provides access to a remote radio. See ac3yd/remote_common.py and .pdf files for documentation.

from ac2yd.control_common import ControlCommon

class Hardware(ControlCommon):
def __init__(self, app, conf):
ControlCommon.__init__(self, app, conf)
self.index = 0
self.rx_udp_clock = 122880000
self.decimations = [] # supported decimation rates
for dec in (40, 20, 10, 8, 5, 4, 2):
self.decimations.append(dec * 64)
self.decimations.append(80)
self.decimations.append(64)
def RadioInit(self): # Send initial parameters not covered by CommonInit()
pass
def VarDecimGetChoices(self): # return text labels for the control
clock = self.rx_udp_clock
l = [] # a list of sample rates
for dec in self.decimations:
l.append(str(int(float(clock) / dec / 1e3 + 0.5)))
return l
def VarDecimGetLabel(self): # return a text label for the control
return "Sample rate ksps"
def VarDecimGetIndex(self): # return the current index
return self.index
def VarDecimSet(self, index=None): # set decimation, return sample rate
if index is None: # initial call to set decimation before the call to open()
rate = self.application.vardecim_set # May be None or from different hardware
try:
dec = int(float(self.rx_udp_clock // rate + 0.5))
self.index = self.decimations.index(dec)
except:
self.index = 0
else:
self.index = index
dec = self.decimations[self.index]
return int(float(self.rx_udp_clock) / dec + 0.5)
def VarDecimRange(self):
return (48000, 960000)
9 changes: 9 additions & 0 deletions ac2yd/control_softrock.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# This provides access to a remote radio. See ac2yd/remote_common.py and .pdf files for documentation.

from ac2yd.control_common import ControlCommon

class Hardware(ControlCommon):
def __init__(self, app, conf):
ControlCommon.__init__(self, app, conf)
def RadioInit(self): # Send initial parameters not covered by CommonInit()
pass
Loading

0 comments on commit ffa047c

Please sign in to comment.