This directory has files for the Hermes-Lite project versions 1 and 2.
Please perform all configuration with the Config screens in Quisk.
To start, go to Config/Radios and add a new radio with the general type "Hermes".
Quisk fully supports the Hermes-Lite project. But you may need a custom Widget or
Hardware file for special purposes. If you create these custom files, enter their
location (path) on the Config/radio/Hardware screen. Do not modify the files supplied
by Quisk, as these will be replaced with each new release.
# This is an example of a custom Widgets file. It changes the power calculations
# to that required by an external power bridge. Any methods (functions) defined here are used
# instead of the usual versions. See the original quisk_widgets.py to see what is available
# for replacement.
from hermes.quisk_widgets import BottomWidgets as BaseWidgets
class BottomWidgets(BaseWidgets): # Add extra widgets to the bottom of the screen
# This replaces the default version. You must alter the code to calculate watts for your
# external power meter that is connected to the Hermes-Lite power ADC.
def Code2FwdRevWatts(self): # Convert the HermesLite fwd/rev power code to watts forward and reverse
# volts = m * code + b # The N2ADR power circuit is linear in voltage
# power = (m**2 * code**2 + 2 * b * m * code + b**2) / 50
fwd = self.hardware.hermes_fwd_power # forward and reverse binary code
rev = self.hardware.hermes_rev_power
Vfwd = 3.26 * fwd / 4096.0 # forward and reverse volts
Vrev = 3.26 * rev / 4096.0
Pfwd = 2.493 * Vfwd**2 + 0.1165 * Vfwd # conversion from volts to power in watts
Prev = 2.493 * Vrev**2 + 0.1165 * Vrev
return Pfwd, Prev # return forward and reverse power in watts
# This is an example of a custom Hardware file:
from hermes.quisk_hardware import Hardware as BaseHardware
class Hardware(BaseHardware):
def __init__(self, app, conf):
BaseHardware.__init__(self, app, conf)
self.usingSpot = False # Use bit C2[7] as the Spot indicator
def ChangeBand(self, band):
# band is a string: "60", "40", "WWV", etc.
# The call to BaseHardware will set C2 according to the Hermes_BandDict{}
ret = BaseHardware.ChangeBand(self, band)
if self.usingSpot:
byte = self.GetControlByte(0, 2) # C0 index == 0, C2: user output
byte |= 0b10000000
self.SetControlByte(0, 2, byte)
return ret
def OnSpot(self, level):
# level is -1 for Spot button Off; else the Spot level 0 to 1000.
ret = BaseHardware.OnSpot(self, level)
if level >= 0 and not self.usingSpot: # Spot was turned on
byte = self.GetControlByte(0, 2)
byte |= 0b10000000
self.SetControlByte(0, 2, byte)
self.usingSpot = True
elif level < 0 and self.usingSpot: # Spot was turned off
byte = self.GetControlByte(0, 2)
byte &= 0b01111111
self.SetControlByte(0, 2, byte)
self.usingSpot = False
return ret