<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.g4slv.info/dokuwiki/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Make It Tea</title>
        <description></description>
        <link>https://www.g4slv.info/dokuwiki/</link>
        <lastBuildDate>Tue, 14 Jul 2026 07:01:09 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=logo.png</url>
            <title>Make It Tea</title>
            <link>https://www.g4slv.info/dokuwiki/</link>
        </image>
        <item>
            <title>Old stuff but good</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:alpine</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:start&quot; data-wiki-id=&quot;public:computers:archive:start&quot;&gt;Archive&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;old_stuff_but_good&quot;&gt;Old stuff but good&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Old stuff but good&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;old_stuff_but_good&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-51&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;alpine&quot;&gt;Alpine&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_bbb72ee261cc7a5312d2d82ea0975a3d_1&quot;&gt;.pinerc &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_bbb72ee261cc7a5312d2d82ea0975a3d_1&quot;&gt;&lt;pre class=&quot;code&quot;&gt;#
# Alpine configuration file
#
# This file sets the configuration options used by Alpine and PC-Alpine. These
# options are usually set from within Alpine or PC-Alpine. There may be a
# system-wide configuration file which sets the defaults for some of the
# variables. On Unix, run alpine -conf to see how system defaults have been set.
# For variables that accept multiple values, list elements are separated by
# commas. A line beginning with a space or tab is considered to be a
# continuation of the previous line. For a variable to be unset its value must
# be blank. To set a variable to the empty string its value should be &amp;quot;&amp;quot;.
# You can override system defaults by setting a variable to the empty string.
# Lines beginning with &amp;quot;#&amp;quot; are comments, and ignored by Alpine.

# Over-rides your full name from Unix password file. Required for PC-Alpine.
personal-name=

# Sets domain part of From: and local addresses in outgoing mail.
user-domain=gm4slv.plus.com

# List of SMTP servers for sending mail. If blank: Unix Alpine uses sendmail.
smtp-server=relay.plus.net:587/user=gm4slv@gm4slv.plus.com

# NNTP server for posting news. Also sets news-collections for news reading.
nntp-server=&amp;quot;&amp;quot;

# Path of (local or remote) INBOX, e.g. ={mail.somewhere.edu}inbox
# Normal Unix default is the local INBOX (usually /var/spool/mail/$USER).
inbox-path={imap.plus.net:993/ssl/user=gm4slv@gm4slv.plus.com}inbox

# List of folder pairs; the first indicates a folder to archive, and the
# second indicates the folder read messages in the first should
# be moved to.
incoming-archive-folders=

# List of folders, assumed to be in first folder collection,
# offered for pruning each month.  For example: mumble
pruned-folders=

# Over-rides default path for sent-mail folder, e.g. =old-mail (using first
# folder collection dir) or ={host2}sent-mail or =&amp;quot;&amp;quot; (to suppress saving).
# Default: sent-mail (Unix) or SENTMAIL.MTX (PC) in default folder collection.
default-fcc={imap.plus.net:993/ssl/user=gm4slv@gm4slv.plus.com}Inbox.Sent

# Over-rides default path for saved-msg folder, e.g. =saved-messages (using 1st
# folder collection dir) or ={host2}saved-mail or =&amp;quot;&amp;quot; (to suppress saving).
# Default: saved-messages (Unix) or SAVEMAIL.MTX (PC) in default collection.
default-saved-msg-folder=

# Over-rides default path for postponed messages folder, e.g. =pm (which uses
# first folder collection dir) or ={host4}pm (using home dir on host4).
# Default: postponed-msgs (Unix) or POSTPOND.MTX (PC) in default fldr coltn.
postponed-folder=

# If set, specifies where already-read messages will be moved upon quitting.
read-message-folder=

# If set, specifies where form letters should be stored.
form-letter-folder=

# If set, specifies where trash is moved to in Web Alpine.
trash-folder=

# Contains the actual signature contents as opposed to the signature filename.
# If defined, this overrides the signature-file. Default is undefined.
literal-signature=

# Over-rides default path for signature file. Default is ~/.signature
signature-file=

# List of features; see Alpine&amp;#039;s Setup/options menu for the current set.
# e.g. feature-list= select-without-confirm, signature-at-bottom
# Default condition for all of the features is no-.
feature-list=combined-folder-display,
	expanded-view-of-folders,
	expose-hidden-config,
	no-force-arrow-cursor,
	enable-incoming-folders,
	combined-subdirectory-display,
	enable-incoming-folders-checking,
	preopen-stayopen-folders,
	no-enable-msg-view-forced-arrows,
	enable-full-header-and-text,
	enable-cruise-mode,
	prefer-plain-text,
	enable-mail-check-cue,
	no-show-cursor,
	quell-empty-directories,
	no-separate-folder-and-directory-entries,
	no-enable-dot-folders,
	vertical-folder-list,
	single-column-folder-list,
	expanded-view-of-distribution-lists,
	disable-take-last-comma-first,
	no-assume-slow-link,
	show-plain-text-internally,
	enable-msg-view-addresses,
	no-enable-arrow-navigation-relaxed,
	no-enable-lame-list-mode

# Alpine executes these keys upon startup (e.g. to view msg 13: i,j,1,3,CR,v)
initial-keystroke-list=

# Only show these headers (by default) when composing messages
default-composer-hdrs=

# Add these customized headers (and possible default values) when composing
customized-hdrs=

# When viewing messages, include this list of headers
viewer-hdrs=

# When viewing messages, number of blank spaces between left display edge and text
viewer-margin-left=

# When viewing messages, number of blank spaces between right display edge and text
viewer-margin-right=

# When viewing messages, number of lines of quote displayed before suppressing
quote-suppression-threshold=

# Determines default folder name for Saves...
# Choices: default-folder, by-sender, by-from, by-recipient, last-folder-used.
# Default: &amp;quot;default-folder&amp;quot;, i.e. &amp;quot;saved-messages&amp;quot; (Unix) or &amp;quot;SAVEMAIL&amp;quot; (PC).
saved-msg-name-rule=

# Determines default name for Fcc...
# Choices: default-fcc, by-recipient, last-fcc-used.
# Default: &amp;quot;default-fcc&amp;quot; (see also &amp;quot;default-fcc=&amp;quot; variable.)
fcc-name-rule=

# Sets presentation order of messages in Index. Choices:
# Subject, From, Arrival, Date, Size, To, Cc, OrderedSubj, Score, and Thread.
# Order may be reversed by appending /Reverse. Default: &amp;quot;Arrival&amp;quot;.
sort-key=

# Sets presentation order of address book entries. Choices: dont-sort,
# fullname-with-lists-last, fullname, nickname-with-lists-last, nickname
# Default: &amp;quot;fullname-with-lists-last&amp;quot;.
addrbook-sort-rule=

# Sets presentation order of folder list entries. Choices: alphabetical,
# alpha-with-dirs-last, alpha-with-dirs-first.
# Default: &amp;quot;alpha-with-directories-last&amp;quot;.
folder-sort-rule=

# Sets the default folder and collection offered at the Goto Command&amp;#039;s prompt.
goto-default-rule=

# Sets message which cursor begins on. Choices: first-unseen, first-recent,
# first-important, first-important-or-unseen, first-important-or-recent,
# first, last. Default: &amp;quot;first-unseen&amp;quot;.
incoming-startup-rule=

# Allows a default answer for the prune folder questions. Choices: yes-ask,
# yes-no, no-ask, no-no, ask-ask, ask-no. Default: &amp;quot;ask-ask&amp;quot;.
pruning-rule=

# Controls behavior when reopening an already open folder.
folder-reopen-rule=

# Style that MESSAGE INDEX is displayed in when threading.
threading-display-style=

# Style of THREAD INDEX or default MESSAGE INDEX when threading.
threading-index-style=

# When threading, character used to indicate collapsed messages underneath.
threading-indicator-character=

# When threading, character used to indicate expanded messages underneath.
threading-expanded-character=

# When threading, character used to indicate this is the last reply
# to the parent of this message.
threading-lastreply-character=

# Reflects capabilities of the display you have.
# If unset, the default is taken from your locale. That is usually the right
# thing to use. Typical alternatives include UTF-8, ISO-8859-x, and EUC-JP
# (where x is a number between 1 and 9).
display-character-set=

# Reflects capabilities of the keyboard you have.
# If unset, the default is to use the same value
# used for the display-character-set.
keyboard-character-set=

# Defaults to UTF-8. This is used for outgoing messages.
# It is usually correct to leave this unset.
posting-character-set=

# Defaults to nothing, which is equivalent to US-ASCII. This is used for
# unlabeled incoming messages. It is ok to leave this unset but if you receive
# unlabeled mail that is usually in some known character set, set that here.
unknown-character-set=

# Specifies the program invoked by ^_ in the Composer,
# or the &amp;quot;enable-alternate-editor-implicitly&amp;quot; feature.
editor=

# Specifies the program invoked by ^T in the Composer.
speller=

# Specifies the column of the screen where the composer should wrap.
composer-wrap-column=

# Specifies the string to insert when replying to a message.
reply-indent-string=

# Specifies the introduction to insert when replying to a message.
reply-leadin=

# Specifies the string to replace quotes with when viewing a message.
quote-replace-string=

# When these characters appear in the middle of a word in the composer
# the forward word function will stop at the first text following (as happens
# with SPACE characters by default)
composer-word-separators=

# Specifies the string to use when sending a  message with no to or cc.
empty-header-message=

# Program to view images (e.g. GIF or TIFF attachments).
image-viewer=

# If &amp;quot;user-domain&amp;quot; not set, strips hostname in FROM address. (Unix only)
use-only-domain-name=

# This variable takes a list of programs that message text is piped into
# after MIME decoding, prior to display.
display-filters=

# This defines a program that message text is piped into before MIME
# encoding, prior to sending
sending-filters=

# A list of alternate addresses the user is known by
alt-addresses=

# A list of keywords for use in categorizing messages
keywords=

# Characters which surround keywords in SUBJKEY token.
# Default is &amp;quot;{&amp;quot; &amp;quot;} &amp;quot;
keyword-surrounding-chars=

# Characters between subject and opening text in SUBJECTTEXT token.
# Default is &amp;quot; - &amp;quot;
opening-text-separator-chars=

# This is a list of formats for address books.  Each entry in the list is made
# up of space-delimited tokens telling which fields are displayed and in
# which order.  See help text
addressbook-formats=

# This gives a format for displaying the index.  It is made
# up of space-delimited tokens telling which fields are displayed and in
# which order.  See help text
index-format=

# The number of lines of overlap when scrolling through message text
viewer-overlap=

# Number of lines from top and bottom of screen where single
# line scrolling occurs.
scroll-margin=

# The number of seconds to sleep after writing a status message
status-message-delay=

# Number of times per-second to update busy cue messages
busy-cue-rate=

# The approximate number of seconds between checks for new mail
mail-check-interval=

# The approximate number of seconds between checks for new mail in folders
# other than the current folder and inbox.
# Default is same as mail-check-interval
mail-check-interval-noncurrent=

# The minimum number of seconds between checks for new mail in a Mail Drop.
# This is always effectively at least as large as the mail-check-interval
maildrop-check-minimum=

# For newsgroups accessed using NNTP, only messages numbered in the range
# lastmsg-range+1 to lastmsg will be considered
nntp-range=

# Full path and name of NEWSRC file
newsrc-path=

# Path and filename of news configuration&amp;#039;s active file.
# The default is typically &amp;quot;/usr/lib/news/active&amp;quot;.
news-active-file-path=

# Directory containing system&amp;#039;s news data.
# The default is typically &amp;quot;/var/spool/news&amp;quot;
news-spool-directory=

# Path and filename of the program used to upload text from your terminal
# emulator&amp;#039;s into Alpine&amp;#039;s composer.
upload-command=

# Text sent to terminal emulator prior to invoking the program defined by
# the upload-command variable.
# Note: _FILE_ will be replaced with the temporary file used in the upload.
upload-command-prefix=

# Path and filename of the program used to download text via your terminal
# emulator from Alpine&amp;#039;s export and save commands.
download-command=

# Text sent to terminal emulator prior to invoking the program defined by
# the download-command variable.
# Note: _FILE_ will be replaced with the temporary file used in the download.
download-command-prefix=

# Sets the search path for the mailcap configuration file.
# NOTE: colon delimited under UNIX, semi-colon delimited under DOS/Windows/OS2.
mailcap-search-path=

# Sets the search path for the mimetypes configuration file.
# NOTE: colon delimited under UNIX, semi-colon delimited under DOS/Windows/OS2.
mimetype-search-path=

# Sets the path for the system ssl certificates issued by a trusted
# certificate authority. Note that this could be a list of paths, if the same
# pinerc is used in different systems. Alpine always chooses the first one that
# it finds. Value must be an absolute path.
system-certs-path=

# Sets the path for the system ssl file container of certificates issued by a
# certificate authority. Note that this could be a list of container files,
# if the same pinerc is used in different systems. Alpine always chooses the,
# first one that it finds. Value must be an absolute path.
system-certs-file=

# Sets the path for a file that contains certificates that a user trusts.
Note that this could be a list of container files,
# if the same pinerc is used in different systems. Alpine always chooses the,
# first one that it finds. Value must be an absolute path.
user-certs-path=

# Sets the path for a file that contains certificates that a user trusts.
Note that this could be a list of container files,
# if the same pinerc is used in different systems. Alpine always chooses the,
# first one that it finds. Value must be an absolute path.
user-certs-file=

# List of programs to open Internet URLs (e.g. http or ftp references).
url-viewers=

# List of directories that are preferred locations to save or export attachments.
default-directories=

# The maximum number of non-stayopen remote connections that Alpine will use
max-remote-connections=

# A list of folders that should be left open once opened (INBOX is implicit)
stay-open-folders=&amp;quot;&amp;quot;

# Sets the time in seconds that Alpine will attempt to open a network
# connection when checking for new unseen messages in an incoming folder.
#  The default is 5.
incoming-check-timeout=

# Sets the approximate number of seconds between checks for unseen messages
# in incoming folders. The default is 180.
incoming-check-interval=

# Sets the approximate number of seconds between checks for unseen messages
# for other than local or IMAP folders. The default is 180.
incoming-check-interval-secondary=

# List of incoming folders to check for unseen messages. The default if left
# blank is to check all incoming folders.
incoming-check-list=

# Specifies the number of dead letter files to keep when canceling.
dead-letter-files=

# Sets the filename for the newmail fifo (named pipe). Unix only.
newmail-fifo-path=

# Sets the width for the NewMail screen.
newmail-window-width=

# List of incoming msg folders besides INBOX, e.g. ={host2}inbox, {host3}inbox
# Syntax: optnl-label {optnl-imap-host-name}folder-path
incoming-folders=W2W {imap.123-reg.co.uk:993/ssl/user=john@wire2waves.co.uk}INBOX

# List of directories where saved-message folders may be. First one is
# the default for Saves. Example: Main {host1}mail/[], Desktop mail\[]
# Syntax: optnl-label {optnl-imap-hostname}optnl-directory-path[]
folder-collections=&amp;quot;W2W Folders&amp;quot; {imap.123-reg.co.uk:993/ssl/user=john@wire2waves.co.uk}[],
	PlusNet {imap.plus.net:993/user=gm4slv@gm4slv.plus.com/ssl}INBOX.[]

# List, only needed if nntp-server not set, or news is on a different host
# than used for NNTP posting. Examples: News *[] or News *{host3/nntp}[]
# Syntax: optnl-label *{news-host/protocol}[]
news-collections=

# List of file or path names for personal addressbook(s).
# Default: ~/.addressbook (Unix) or \PINE\ADDRBOOK (PC)
# Syntax: optnl-label path-name
address-book=

# List of file or path names for global/shared addressbook(s).
# Default: none
# Syntax: optnl-label path-name
global-address-book=

# Set by Alpine; controls beginning-of-month sent-mail pruning.
last-time-prune-questioned=122.9

# Set by Alpine; controls display of &amp;quot;new version&amp;quot; message.
last-version-used=6.24

# This names the path to an alternative program, and any necessary arguments,
# to be used in posting mail messages.  Example:
#                    /usr/lib/sendmail -oem -t -oi
# or,
#                    /usr/local/bin/sendit.sh
# The latter a script found in Alpine distribution&amp;#039;s contrib/util directory.
# NOTE: The program MUST read the message to be posted on standard input,
#       AND operate in the style of sendmail&amp;#039;s &amp;quot;-t&amp;quot; option.
sendmail-path=

# This names the root of the tree to which the user is restricted when reading
# and writing folders and files.  For example, on Unix ~/work confines the
# user to the subtree beginning with their work subdirectory.
# (Note: this alone is not sufficient for preventing access.  You will also
# need to restrict shell access and so on, see Alpine Technical Notes.)
# Default: not set (so no restriction)
operating-dir=

# If no user input for this many hours, Alpine will exit if in an idle loop
# waiting for a new command.  If set to zero (the default), then there will
# be no timeout.
user-input-timeout=

# Sets the time in seconds that Alpine will attempt to open a network
# connection.  The default is 30, the minimum is 5, and the maximum is
# system defined (typically 75).
tcp-open-timeout=

# Network read warning timeout. The default is 15, the minimum is 5, and the
# maximum is 1000.
tcp-read-warning-timeout=

# Network write warning timeout. The default is 0 (unset), the minimum
# is 5 (if not 0), and the maximum is 1000.
tcp-write-warning-timeout=

# If this much time has elapsed at the time of a tcp read or write
# timeout, Alpine will ask if you want to break the connection.
# Default is 60 seconds, minimum is 5, maximum is 1000.
tcp-query-timeout=

# If this much time has elapsed at the time of a tcp read or write timeout,
# Alpine will close the connection automatically without user intervention.
# Setting this value to zero (the default) disables this. Setting this variable
# to a smaller value than tcp-query-timeout will close the connection
# automatically, and you will never be asked if you want to wait.
close-connection-timeout=

# Sets the format of the command used to open a UNIX remote
# shell connection.  The default is &amp;quot;%s %s -l %s exec /etc/r%sd&amp;quot;
# NOTE: the 4 (four) &amp;quot;%s&amp;quot; entries MUST exist in the provided command
# where the first is for the command&amp;#039;s path, the second is for the
# host to connect to, the third is for the user to connect as, and the
# fourth is for the connection method (typically &amp;quot;imap&amp;quot;)
rsh-command=

# Sets the name of the command used to open a UNIX remote shell connection.
# The default is typically /usr/ucb/rsh.
rsh-path=

# Sets the time in seconds that Alpine will attempt to open a UNIX remote
# shell connection.  The default is 15, min is 5, and max is unlimited.
# Zero disables rsh altogether.
rsh-open-timeout=

# Sets the format of the command used to open a UNIX secure
# shell connection.  The default is &amp;quot;%s %s -l %s exec /etc/r%sd&amp;quot;
# NOTE: the 4 (four) &amp;quot;%s&amp;quot; entries MUST exist in the provided command
# where the first is for the command&amp;#039;s path, the second is for the
# host to connect to, the third is for the user to connect as, and the
# fourth is for the connection method (typically &amp;quot;imap&amp;quot;)
ssh-command=

# Sets the name of the command used to open a UNIX secure shell connection.
# Typically this is /usr/bin/ssh.
ssh-path=

# Sets the time in seconds that Alpine will attempt to open a UNIX secure
# shell connection.  The default is 15, min is 5, and max is unlimited.
# Zero disables ssh altogether.
ssh-open-timeout=

# Sets the version number Alpine will use as a threshold for offering
# its new version message on startup.
new-version-threshold=

# List of mail drivers to disable.
disable-these-drivers=

# List of SASL authenticators to disable.
disable-these-authenticators=

# A range in the form min,max that sets the minimum amd maximum versions of the
# SSL protocol that Alpine will use when connecting to a secure server.
encryption-protocol-range=

# Set by Alpine; contains data for caching remote address books.
remote-abook-metafile=

# How many extra copies of remote address book should be kept. Default: 3
remote-abook-history=

# Minimum number of minutes between checks for remote address book changes.
# 0 means never check except when opening a remote address book.
# -1 means never check. Default: 5
remote-abook-validity=

# Your default printer selection
printer=

# List of special print commands
personal-print-command=

# Which category default print command is in
personal-print-category=

# Your client-id and client-secret information to authenticate using XOAUTH2
xoauth2-info=

# Patterns and their actions are stored here.
patterns-roles=LIT:pattern=&amp;quot;/NICK=Wire2waves/FLDTYPE=SPEC/FOLDER={imap.123-reg.co.uk:993\/ssl\/user=john@wire2waves.co.uk}Personal,W2W&amp;quot; action=&amp;quot;/ROLE=1/FROM=John Pumford-Green &amp;lt;john@wire2waves.co.uk&amp;gt;/SMTP=smtp.123-reg.co.uk\/ssl\/user=john@wire2waves.co.uk/RTYPE=NC/FTYPE=NC/CTYPE=NC&amp;quot;

# Patterns and their actions are stored here.
patterns-filters2=

# Patterns and their actions are stored here.
patterns-scores2=

# Patterns and their actions are stored here.
patterns-indexcolors=

# Patterns and their actions are stored here.
patterns-other=

# Patterns and their actions are stored here.
patterns-search=

# Controls display of color
color-style=use-termdef

# Controls display of color for current index line
current-indexline-style=flip-colors

# Controls display of color for the titlebar at top of screen
titlebar-color-style=default

# Choose: black, blue, green, cyan, red, magenta, yellow, or white.
normal-foreground-color=255,255,255
normal-background-color=000,000,000
reverse-foreground-color=
reverse-background-color=
title-foreground-color=000,255,255
title-background-color=000,000,174
title-closed-foreground-color=
title-closed-background-color=
folder-foreground-color=
folder-background-color=
directory-foreground-color=
directory-background-color=
folder-list-text-foreground-color=
folder-list-text-background-color=
status-foreground-color=
status-background-color=
keylabel-foreground-color=000,255,255
keylabel-background-color=000,000,174
keyname-foreground-color=255,255,000
keyname-background-color=000,000,174
selectable-item-foreground-color=
selectable-item-background-color=
meta-message-foreground-color=
meta-message-background-color=
quote1-foreground-color=
quote1-background-color=
quote2-foreground-color=
quote2-background-color=
quote3-foreground-color=
quote3-background-color=
incoming-unseen-foreground-color=
incoming-unseen-background-color=
signature-foreground-color=
signature-background-color=
prompt-foreground-color=
prompt-background-color=
header-general-foreground-color=
header-general-background-color=
index-to-me-foreground-color=
index-to-me-background-color=
index-important-foreground-color=
index-important-background-color=
index-deleted-foreground-color=
index-deleted-background-color=
index-answered-foreground-color=255,255,255
index-answered-background-color=000,000,174
index-new-foreground-color=
index-new-background-color=
index-recent-foreground-color=
index-recent-background-color=
index-forward-foreground-color=
index-forward-background-color=
index-unseen-foreground-color=
index-unseen-background-color=
index-highpriority-foreground-color=
index-highpriority-background-color=
index-lowpriority-foreground-color=
index-lowpriority-background-color=
index-arrow-foreground-color=
index-arrow-background-color=
index-subject-foreground-color=
index-subject-background-color=
index-from-foreground-color=
index-from-background-color=
index-opening-foreground-color=
index-opening-background-color=

# Colors in which tokens will be displayed in the index screen
index-token-colors=

# When viewing messages, these are the header colors
viewer-hdr-colors=

# Colors used to display keywords in the index
keyword-colors=

# Public certificates are kept in files in this directory. The files should
# contain certificates in PEM format. The name of each file should look
# like &amp;lt;emailaddress&amp;gt;.crt. The default directory is .alpine-smime/public.
smime-public-cert-directory=

# If this option is set then public certificates are kept in a single container
# &amp;quot;file&amp;quot; similar to a remote configuration file instead of in the
# smime-publiccert-directory. The value can be a remote or local folder
# specification like for a non-standard pinerc value. The default
# is that it is not set.
smime-public-cert-container=

# Private keys are kept in files in this directory. The files are in PEM format.
# The name of a file should look like &amp;lt;emailaddress&amp;gt;.key.
# The default directory is .alpine-smime/private.
smime-private-key-directory=

# If this option is set then private keys are kept in a single container
# &amp;quot;file&amp;quot; similar to a remote configuration file instead of in the
# private-key-directory. The value can be a remote or local folder
# specification like for a non-standard pinerc value. The default
# is that it is not set.
smime-private-key-container=

# Certificate Authority certificates (in addition to the normal CACerts for the
# system) are kept in files in this directory. The files are in PEM format.
# Filenames should end with .crt. The default directory is .alpine-smime/ca.
smime-cacert-directory=

# If this option is set then CAcerts are kept in a single container
# &amp;quot;file&amp;quot; similar to a remote configuration file instead of in the
# ca-cert-directory. The value can be a remote or local folder
# specification like for a non-standard pinerc value. The default
# is that it is not set.
smime-cacert-container=

# LDAP servers for looking up addresses.
ldap-servers=

# RSS News feed
rss-news=

# RSS Weather feed
rss-weather=

# Web Alpine index table row height
wp-indexheight=

# Web Alpine number of index lines in table
wp-indexlines=

# Web Alpine aggregate operations tab state
wp-aggstate=

# Web Alpine various aspects of cross-session state
wp-state=

# Web Alpine preferred width for message display in characters
wp-columns=
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Alpine&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;alpine&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;52-25617&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;telnet&quot;&gt;telnet&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I&amp;#039;ve put telnetd on the shack box and telnet clients on anything that didn&amp;#039;t already have it. 
&lt;/p&gt;

&lt;p&gt;
SSH is great, but sometimes it&amp;#039;s nice to go back to simpler times…..
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;telnet&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;telnet&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;25618-25804&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;ftp&quot;&gt;ftp&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
And the same for ftp….
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ftp&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ftp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;25805-25848&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;section_two&quot;&gt;Section Two&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 30/09/22 18:26&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Section Two&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;section_two&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;25849-25918&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;25919-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>CCIR493 Selcall</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:ccir493_selcall</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:start&quot; data-wiki-id=&quot;public:radio:topics:start&quot;&gt;Radio Topics&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ccir493_selcall&quot;&gt;CCIR493 Selcall&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; HF Selcall Experiments &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CCIR493 Selcall&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ccir493_selcall&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-78&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;background&quot;&gt;Background&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I became interested in HF selcall when I was looking for a way of setting up impromptu QSOs with specific stations, for doing tests etc., without the need for listening by ear for calls. Various ideas were considered for controlling an audio mute, and alerting the operator, on HF, but nothing seemed appropriate (CTCSS, DTMF etc) until I stumbled on CCIR493 HF Selcall, specifically designed to cope with conditions on the HF bands. 
&lt;/p&gt;

&lt;p&gt;
The protocol was familiar, as it&amp;#039;s very similar (but slightly simpler) than GMDSS DSC. This led to more reading and research. CCIR493 is widely used in Land Mobile HF SSB in Australia and in other countries which use HF SSB as a communications method. It seems largely unused in Europe. In Australia it is used on the networks set up to assist 4WD outback travellers, with Selcall used to initiate contact with the various base stations. 
&lt;/p&gt;

&lt;p&gt;
Selcall&amp;#039;s &lt;code&gt;beacon&lt;/code&gt; and &lt;code&gt;99 beacon&lt;/code&gt; functions can be used to check if a particular station is reachable before attempting a voice call. 
&lt;/p&gt;

&lt;p&gt;
This seemed ideal…. down the rabbit hole of HF Selcall…..
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Background&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;background&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;79-1182&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;basic_details&quot;&gt;Basic details&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
CCIR493 HF Selcall is a predecessor to GMDSS DSC used in Marine Radio. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Two Tone FSK with 170Hz shift&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 100baud signalling rate&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tone frequencies 1700 = 0, 1870 = 1 (tone centre = 1785)&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; compare with DSC: 1615 = 1, 1785 = 0 (tone centre = 1700, inverted shift)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Symbols are 10-bit words, 7 bit + 3 parity bits&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Dotting pre-amble of alternating 1010….. 2 to 20 seconds depending on expected scan-group size&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Same “symbol repeat after 4” RX/DX interleaving as DSC&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Same phasing sequence as DSC&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; No overall Error Check Sum, unlike DSC&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Accir493_selcall&amp;amp;media=public:radio:active:selcall_4_digit_ccir_493_4_hflink_a.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:active:selcall_4_digit_ccir_493_4_hflink_a.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=800&amp;amp;tok=846957&amp;amp;media=public:radio:active:selcall_4_digit_ccir_493_4_hflink_a.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;800&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; At its simplest a selcall transmission can be either:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Directed call to a specific address&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Selcall&lt;/code&gt; = send a revertive signal over the air AND alert the remote operator. The &lt;code&gt;FMT&lt;/code&gt; symbol = &lt;code&gt;120&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Directed-Beacon&lt;/code&gt; = send revertive signal over the air, but do not alert remote operator. The &lt;code&gt;FMT&lt;/code&gt; symbol = &lt;code&gt;123&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;99-beacon&lt;/code&gt; call to a group of addresses = all stations send revertive signal over the air, but do not alert remote operator. The &lt;code&gt;99-beacon call&lt;/code&gt; is a special form of a directed selcall, with the &lt;code&gt;FMT&lt;/code&gt; symbol of &lt;code&gt;120&lt;/code&gt; and the final two digits of the destination address = &lt;code&gt;99&lt;/code&gt;. Receiving decoders understand to treat the call as a special type of &lt;code&gt;beacon&lt;/code&gt; call despite the &lt;code&gt;FMT&lt;/code&gt; being &lt;code&gt;120&lt;/code&gt; (Selcall) &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
The &lt;code&gt;directed-beacon&lt;/code&gt; to a specific address will confirm if that station is reachable, without disturbing the operator. 
&lt;/p&gt;

&lt;p&gt;
The &lt;code&gt;99-beacon call&lt;/code&gt; confirms whether any station in the &lt;em&gt;group&lt;/em&gt; are reachable - the &lt;em&gt;group&lt;/em&gt; is “any station with the first two digits matching”. The address used for the &lt;code&gt;99-beacon call&lt;/code&gt; is &lt;code&gt;XX99&lt;/code&gt;, where &lt;code&gt;XX&lt;/code&gt; is the leading digits of the desired group. For example, a group stations &lt;code&gt;3610&lt;/code&gt;, &lt;code&gt;3602&lt;/code&gt;, &lt;code&gt;3603&lt;/code&gt;, &lt;code&gt;3654&lt;/code&gt; would all respond to a &lt;code&gt;99-beacon call&lt;/code&gt; addressed to &lt;code&gt;3699&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Basic details&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;basic_details&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1183-3133&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;jenal_sc2_mic&quot;&gt;Jenal SC2 Mic&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
HF Selcall is widely used in Australia, and there is a large market for add-on Selcall devices (to convert non-selcall radios) there. One manufacturer of Selcall equipment is &lt;strong&gt;JENAL&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
At the time of my first exploration of Selcall I found that the SC2 microphone seemed like the perfect solution. The SC2 had been out of production, but Jenal had just released a new batch and I bought TWO of them, allowing me to experiment in isolation, should I fail to find any other amateur stations suitably equipped.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:sc2prg7.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:active:sc2prg7.pdf (128.2 KB)&quot;&gt; SC2 Handbook&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
One SC2 microphone can be connected to a Xiegu G90 portable HF transceiver, capable of 20W pep, and the other SC2 can be connected to a home made 60m SSB transceiver, also capable of 20W PEP, at the main station. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Jenal SC2 Mic&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;jenal_sc2_mic&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3134-3945&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;scanning&quot;&gt;Scanning&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The SC2 is capable of controlling the transceiver to scan, waiting for incoming selcall &lt;code&gt;dotting&lt;/code&gt; signals, when it will pause the scan to decode any selcall message and act upon it as appropriate. Scan will resume after a certain period. The simplest scanning method is to pulse the &lt;code&gt;channel up&lt;/code&gt; or &lt;code&gt;channel down&lt;/code&gt; line present on most ham-grade transceivers on the mic-connector and thus the radio will step through its memory channels looking for selcall signals. 
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Scanning&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;scanning&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3946-4445&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;previous_selcall_activity&quot;&gt;Previous Selcall Activity&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
In previous periods of activity with Selcall I have managed a few contacts and QSOs. Mainly with two stations who were already equipped with Barrett or Codan radios which can use CCIR493 “out of the box”.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; GM4WMM - with a Barrett 950. We successfully operated on a small set of predetermined channels in the 80m, 60m, 40m bands, scanning, and selecting the optimum channel using &lt;code&gt;beacon&lt;/code&gt; calls.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.qrz.com/db/F6EMT&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.qrz.com/db/F6EMT&quot; rel=&quot;ugc nofollow noopener&quot;&gt; F6EMT &lt;/a&gt;- with a Codan &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;. Made several contacts on 20m, some of them while mobile, initiated as random Selcall QSOs.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
For 2023 I hope to find some more Selcall-equipped stations willing to try some experiments. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Previous Selcall Activity&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;previous_selcall_activity&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;4446-5139&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;selcall_activity_2023&quot;&gt;Selcall Activity 2023&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;span class=&quot;todo&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;todocheckbox&quot; data-index=&quot;0&quot; data-date=&quot;1780938498&quot; data-pageid=&quot;public:radio:topics:ccir493_selcall&quot; data-strikethrough=&quot;1&quot; checked=&quot;checked&quot; /&gt; &lt;span class=&quot;todouser&quot;&gt;[✓ John Pumford-Green, 2023-04-30]&lt;/span&gt;&lt;span class=&quot;todotext clickabletodo todohlght&quot;&gt;&lt;del&gt;&lt;span class=&quot;todoinnertext&quot;&gt; Attach SC2 to Xiegu G90&lt;/span&gt;&lt;/del&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;span class=&quot;todo&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;todocheckbox&quot; data-index=&quot;1&quot; data-date=&quot;1780938498&quot; data-pageid=&quot;public:radio:topics:ccir493_selcall&quot; data-strikethrough=&quot;1&quot; checked=&quot;checked&quot; /&gt; &lt;span class=&quot;todouser&quot;&gt;[✓ John Pumford-Green, 2023-04-30]&lt;/span&gt;&lt;span class=&quot;todotext clickabletodo todohlght&quot;&gt;&lt;del&gt;&lt;span class=&quot;todoinnertext&quot;&gt;Set up 60m homebrew radio &amp;amp; amplifier &amp;amp; attach SC2 &lt;/span&gt;&lt;/del&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;span class=&quot;todo&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;todocheckbox&quot; data-index=&quot;2&quot; data-date=&quot;1780938498&quot; data-pageid=&quot;public:radio:topics:ccir493_selcall&quot; data-strikethrough=&quot;1&quot; checked=&quot;checked&quot; /&gt; &lt;span class=&quot;todouser&quot;&gt;[✓ John Pumford-Green, 2023-05-05]&lt;/span&gt;&lt;span class=&quot;todotext clickabletodo todohlght&quot;&gt;&lt;del&gt;&lt;span class=&quot;todoinnertext&quot;&gt;Install mobile whip on van for use with G90&lt;/span&gt;&lt;/del&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;span class=&quot;todo&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;todocheckbox&quot; data-index=&quot;3&quot; data-date=&quot;1780938498&quot; data-pageid=&quot;public:radio:topics:ccir493_selcall&quot; data-strikethrough=&quot;1&quot; checked=&quot;checked&quot; /&gt; &lt;span class=&quot;todouser&quot;&gt;[✓ John Pumford-Green, 2023-04-30]&lt;/span&gt;&lt;span class=&quot;todotext clickabletodo todohlght&quot;&gt;&lt;del&gt;&lt;span class=&quot;todoinnertext&quot;&gt;Make adaptor for IC-M710 to allow easy connection of SC2 in place of usual datamode interface, for access to more bands&lt;/span&gt;&lt;/del&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;span class=&quot;todo&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;todocheckbox&quot; data-index=&quot;4&quot; data-date=&quot;1780938498&quot; data-pageid=&quot;public:radio:topics:ccir493_selcall&quot; data-strikethrough=&quot;1&quot; /&gt; &lt;span class=&quot;todotext clickabletodo todohlght&quot;&gt;&lt;span class=&quot;todoinnertext&quot;&gt;Try to make contact with like minded experimenters for on-air tests&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;UPDATE&lt;/strong&gt; — &lt;em&gt;John Pumford-Green 30/04/23 16:57&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt; When not otherwise engaged I&amp;#039;ll leave my main station IC-M710 monitoring &lt;code&gt;14.343MHz&lt;/code&gt; or &lt;code&gt;18.163MHz&lt;/code&gt;  with Selcall ID &lt;code&gt;3658&lt;/code&gt;. I may not be able to respond directly to any calls the Selcall will send revertives (at 50W) for successful selcall or beacon calls to &lt;code&gt;3658&lt;/code&gt;or for 99-beacon calls to &lt;code&gt;3699&lt;/code&gt;&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
For skeds please contact me by email - address at &lt;a href=&quot;https://www.qrz.com/db/GM4SLV&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.qrz.com/db/GM4SLV&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.qrz.com/db/GM4SLV&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I have re-enabled emails from the &lt;code&gt;hf-link&lt;/code&gt; groups.io &lt;a href=&quot;https://groups.io/g/hflink&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://groups.io/g/hflink&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://groups.io/g/hflink&lt;/a&gt; to see what&amp;#039;s happening here - the only place where CCIR493 appears to be discussed/used.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Selcall Activity 2023&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;selcall_activity_2023&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;5140-6277&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; For new (2026) adventures in Selcall : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:ccir493_-_2026&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:ccir493_-_2026&quot; data-wiki-id=&quot;public:radio:topics:ccir493_-_2026&quot;&gt;CCIR493 Selcall - 2026&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;del&gt;&lt;a href=&quot;https://youtu.be/Sbz8x2U-MqQ&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://youtu.be/Sbz8x2U-MqQ&quot; rel=&quot;ugc nofollow noopener&quot;&gt; My demonstration video &lt;/a&gt;&lt;/del&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://youtu.be/4CfKJiNFM3o&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://youtu.be/4CfKJiNFM3o&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Q-Mac HF90 demonstration &lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;del&gt;&lt;a href=&quot;https://youtube.com/playlist?list=PLQqFw4bopLF-ZJ6URtjXEAHlSpQrODwX-&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://youtube.com/playlist?list=PLQqFw4bopLF-ZJ6URtjXEAHlSpQrODwX-&quot; rel=&quot;ugc nofollow noopener&quot;&gt; My short YouTube playlist with some Selcall videos&lt;/a&gt;&lt;/del&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://youtube.com/playlist?list=PLvMzk-zSmB2Z8bRJ6vO-jSiiazgTl6Fzo&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://youtube.com/playlist?list=PLvMzk-zSmB2Z8bRJ6vO-jSiiazgTl6Fzo&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Australia Travel Net How-To series playlist &lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.jenal.com/page2.htm&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.jenal.com/page2.htm&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.jenal.com/page2.htm&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://hflink.com/selcall/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://hflink.com/selcall/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://hflink.com/selcall/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://hflink.com/selcall/directory/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://hflink.com/selcall/directory/&quot; rel=&quot;ugc nofollow noopener&quot;&gt; HFLink Ham Selcall directory &lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.sigidwiki.com/wiki/CCIR_493-4_Selcall&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.sigidwiki.com/wiki/CCIR_493-4_Selcall&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.sigidwiki.com/wiki/CCIR_493-4_Selcall&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:ccir_493_selcall.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:active:ccir_493_selcall.pdf (259.2 KB)&quot;&gt; A brief guide to CCIR493 what I wrote&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:vks-737-map-a4-2020-01-02.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:active:vks-737-map-a4-2020-01-02.pdf (96.4 KB)&quot;&gt; Map of the VKS-737 base stations &amp;amp; their Selcall addresses &lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:oz_map_5.jpg&quot; class=&quot;media mediafile mf_jpg&quot; title=&quot;public:radio:active:oz_map_5.jpg (919.3 KB)&quot;&gt; Map of the Bush Telegraph base stations VMS469&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;del&gt; &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.blackcatsystems.selcall&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://play.google.com/store/apps/details?id=com.blackcatsystems.selcall&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Blackcat Android app for generating various Selcalls, including Barrett/Codan &lt;/a&gt;&lt;/del&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;code_snippets&quot;&gt;Code snippets&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:selcal.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:radio:active:selcal.zip (6.9 KB)&quot;&gt; My Python2 Selcall TX encoder&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_ff20f88c1b3f9a8095d8a9db87a6a952_1&quot;&gt;selcal_functions.py (Click to view) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_ff20f88c1b3f9a8095d8a9db87a6a952_1&quot;&gt;&lt;pre class=&quot;code python&quot;&gt;&lt;span class=&quot;co1&quot;&gt;# CCIR 493-4 Selcal Symbol Generator / CPFSK Modulator&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Wire2waves Ltd&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# March 2015&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# with CW ID for use on Amateur Radio bands&lt;/span&gt;
&amp;nbsp;
version &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;v0.2&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# Imports&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; numpy
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; pyaudio
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;struct&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;math&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# quick and dirty CW Ident&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# words per minute&lt;/span&gt;
wpm &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# dot period&lt;/span&gt;
cwdit &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1.2&lt;/span&gt; / wpm
&lt;span class=&quot;co1&quot;&gt;# dash period&lt;/span&gt;
cwdah &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; cwdit * &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
&amp;nbsp;
w_amp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;**&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# define the output audio stream for the main data&lt;/span&gt;
p &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; pyaudio.&lt;span class=&quot;me1&quot;&gt;PyAudio&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
cpfsk_stream &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; p.&lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;format&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;pyaudio.&lt;span class=&quot;me1&quot;&gt;paInt16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; channels&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rate&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9600&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; output&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# make a second stream for the Tune carrier &amp;amp; cw ident&lt;/span&gt;
pt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; pyaudio.&lt;span class=&quot;me1&quot;&gt;PyAudio&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
tunestream &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; pt.&lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;format&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;pyaudio.&lt;span class=&quot;me1&quot;&gt;paInt16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; channels&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rate&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9600&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; output&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
pc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; pyaudio.&lt;span class=&quot;me1&quot;&gt;PyAudio&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
cwstream &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; pc.&lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;format&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;pyaudio.&lt;span class=&quot;me1&quot;&gt;paInt16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; channels&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rate&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9600&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; output&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# convert text to symbol value using dictionaries&lt;/span&gt;
fmt_symbol_dict &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sel&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;120&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;bcn&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;123&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
cat_symbol_dict &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rtn&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;100&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
eos_symbol_dict &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;req&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;117&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# list containing Phasing Symbols in DX/RX order. &lt;/span&gt;
&amp;nbsp;
phasing_symbol &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;125&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;109&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;125&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;108&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;125&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;107&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;125&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;106&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;125&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;105&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;125&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;104&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# Instead of doing bit-twiddling to convert each symbol&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# value to its 10-bit parity protected word, which involves padding to full 7-bits, counting zeros,&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# reversing the bit order, shifting bits and &amp;quot;ORing&amp;quot; in the parity bits&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# we just use a dictionary containing the conversion between symbol value and its 10-bit parity protected word&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
parity_table &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;00&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0000000111&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;01&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1000000110&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;02&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0100000110&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;03&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1100000101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;04&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0010000110&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;05&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1010000101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;06&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0110000101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;07&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1110000100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;08&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0001000110&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;09&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1001000101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;10&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0101000101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;11&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1101000100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;12&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0011000101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;13&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1011000100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;14&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0111000100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;15&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1111000011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;16&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0000100110&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;17&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1000100101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;18&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0100100101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;19&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1100100100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;20&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0010100101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;21&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1010100100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;22&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0110100100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;23&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1110100011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;24&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0001100101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;25&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1001100100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;26&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0101100100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;27&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1101100011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;28&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0011100100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;29&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1011100011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;30&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0111100011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;31&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1111100010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;32&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0000010110&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;33&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1000010101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;34&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0100010101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;35&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1100010100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;36&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0010010101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;37&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1010010100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;38&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0110010100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;39&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1110010011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;40&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0001010101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;41&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1001010100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;42&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0101010100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;43&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1101010011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;44&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0011010100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;45&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1011010011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;46&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0111010011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;47&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1111010010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;48&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0000110101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;49&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1000110100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;50&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0100110100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;51&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1100110011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;52&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0010110100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;53&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1010110011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;54&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0110110011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;55&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1110110010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;56&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0001110100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;57&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1001110011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;58&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0101110011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;59&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1101110010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;60&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0011110011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;61&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1011110010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;62&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0111110010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;63&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1111110001&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;64&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0000001110&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;65&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1000001101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;66&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0100001101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;67&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1100001100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;68&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0010001101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;69&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1010001100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;70&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0110001100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;71&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1110001011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;72&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0001001101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;73&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1001001100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;74&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0101001100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;75&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1101001011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;76&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0011001100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;77&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1011001011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;78&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0111001011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;79&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1111001010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;80&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0000101101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;81&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1000101100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;82&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0100101100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;83&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1100101011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;84&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0010101100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;85&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1010101011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;86&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0110101011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;87&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1110101010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;88&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0001101100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;89&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1001101011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;90&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0101101011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;91&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1101101010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;92&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0011101011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;93&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1011101010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;94&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0111101010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;95&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1111101001&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;96&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0000011101&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;97&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1000011100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;98&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0100011100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;99&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1100011011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;100&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0010011100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;101&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1010011011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;102&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0110011011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;103&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1110011010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;104&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0001011100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;105&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1001011011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;106&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0101011011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;107&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1101011010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;108&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0011011011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;109&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1011011010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;110&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0111011010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;111&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1111011001&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;112&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0000111100&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;113&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1000111011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;114&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0100111011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;115&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1100111010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;116&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0010111011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;117&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1010111010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;118&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0110111010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;119&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1110111001&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;120&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0001111011&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;121&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1001111010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;122&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0101111010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;123&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1101111001&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
&lt;span class=&quot;st0&quot;&gt;&amp;quot;124&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0011111010&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;125&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1011111001&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;126&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;0111111001&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;127&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;1111111000&amp;quot;&lt;/span&gt; 
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
cw_table &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;A&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;.-&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;B&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;-...&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;C&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;-.-.&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;D&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;-..&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;E&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;F&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;..-.&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;G&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;--.&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;H&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;....&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;I&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;..&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;J&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;.---&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;K&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;-.-&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;L&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;.-..&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;M&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;--&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;N&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;-.&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;O&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;---&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;P&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;.--.&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;Q&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;--.-&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;R&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;.-.&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;S&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;...&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;T&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;-&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;U&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;..-&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;V&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;...-&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;W&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;.--&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;X&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;-..-&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;Y&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;--.-&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;Z&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;--..&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;1&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;.----&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;2&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;..---&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;3&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;...--&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;4&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;....-&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;5&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;.....&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;6&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;-....&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;7&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;--...&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;8&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;---..&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;9&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;----.&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;-----&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;/&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;-..-.&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;?&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;..--..&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;st0&quot;&gt;&amp;quot;+&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;.-.-.&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#####################&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# function definitions&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;##############&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#  Tone generators (not used for data, but for Tune and CW signals)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Setting the &amp;quot;cspace&amp;quot; and &amp;quot;lspace&amp;quot; amplitudes (pwr) to non-zero&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# will produce FSK-style CW, as used in Beacons etc,&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; sine&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;frequency&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; length&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rate&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    length &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;length * rate&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    factor &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;frequency&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; * &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pi * &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / rate
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; numpy.&lt;span class=&quot;me1&quot;&gt;sin&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;numpy.&lt;span class=&quot;me1&quot;&gt;arange&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;length&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; * factor&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Generate a carrier to allow Auto-ATU to re-tune when changing frequency&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# reduced amplitude, 3 seconds &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; tune_carrier&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    frequency &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1785&lt;/span&gt;
    length &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
    rate &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9600&lt;/span&gt;
    chunks &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    chunks.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sine&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;frequency&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; length&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rate&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;chunk&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; numpy.&lt;span class=&quot;me1&quot;&gt;concatenate&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chunks&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; * &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;w_amp * pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    tunestream.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;chunk&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;astype&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;numpy.&lt;span class=&quot;me1&quot;&gt;int16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; dash&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    frequency&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1900&lt;/span&gt;
    length&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;cwdah 
    rate&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9600&lt;/span&gt;
    chunks &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    chunks.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sine&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;frequency&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; length&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rate&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;chunk&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; numpy.&lt;span class=&quot;me1&quot;&gt;concatenate&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chunks&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; *  &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;w_amp * pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    cwstream.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;chunk&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;astype&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;numpy.&lt;span class=&quot;me1&quot;&gt;int16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;    
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; dot&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    frequency&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1900&lt;/span&gt;
    length&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;cwdit
    rate&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9600&lt;/span&gt;
    chunks &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    chunks.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sine&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;frequency&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; length&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rate&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;chunk&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; numpy.&lt;span class=&quot;me1&quot;&gt;concatenate&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chunks&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; *  &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;w_amp * pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    cwstream.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;chunk&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;astype&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;numpy.&lt;span class=&quot;me1&quot;&gt;int16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; cspace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    frequency&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1700&lt;/span&gt;
    length&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;cwdit
    rate&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9600&lt;/span&gt; 
    chunks &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    chunks.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sine&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;frequency&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; length&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rate&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;chunk&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; numpy.&lt;span class=&quot;me1&quot;&gt;concatenate&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chunks&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; *  &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;w_amp * pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    cwstream.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;chunk&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;astype&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;numpy.&lt;span class=&quot;me1&quot;&gt;int16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;     
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; lspace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    frequency&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1700&lt;/span&gt;
    length&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;cwdah
    rate&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9600&lt;/span&gt;
    chunks &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    chunks.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sine&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;frequency&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; length&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rate&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;chunk&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; numpy.&lt;span class=&quot;me1&quot;&gt;concatenate&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;chunks&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; *  &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;w_amp * pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    cwstream.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;chunk&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;astype&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;numpy.&lt;span class=&quot;me1&quot;&gt;int16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;      
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;################################&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; make_call&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cw_table&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; call&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    callsign &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; call:
        callsign +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; cw_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        callsign +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;s&amp;quot;&lt;/span&gt;        
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; callsign
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; cwid&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;call&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    callsign &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; make_call&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cw_table&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; call&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; callsign:
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;-&amp;quot;&lt;/span&gt;:
            dash&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            cspace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; i &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;.&amp;quot;&lt;/span&gt;:
            dot&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            cspace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; i &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;s&amp;quot;&lt;/span&gt;:
            lspace&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;###########&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# split a 4 digit Selcal into two 2-digit symbols&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# resulting symbols are returned as a list&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; sel_id_symbol&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sel_id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    sel_id_list &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sel_id&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i:i+&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sel_id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;    
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; sel_id_list
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# build the basic Call:&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Selcal messages are of the form:  &amp;quot;fmt to_id cat self_id eos eos eos&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; build_call&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f_s&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; a_s&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; c_s&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; s_s&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; eos_s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
    sel_call &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
    sel_call.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f_s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; a_s:
        sel_call.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    sel_call.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c_s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; s_s:
        sel_call.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    sel_call.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;eos_s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    sel_call.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;eos_s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    sel_call.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;eos_s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; sel_call
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# interleave the symbols into DX and RX sequence &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# at the same time convert between symbol value and&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# 10-bit parity word by looking in the parity_table dictionary.&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; interleave&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parity_table&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; phasing&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sel_list&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
    symbol_count &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sel_list&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    sel_dxrx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# interleave the phasing sequence&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; p &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sel_dxrx.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parity_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;phasing&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;#dxrx&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# add dx and rx copies of the format symbol&lt;/span&gt;
    sel_dxrx.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parity_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sel_list&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;#dx&lt;/span&gt;
    sel_dxrx.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parity_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sel_list&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;#rx&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# add the DX copy of the the to_ID&lt;/span&gt;
    sel_dxrx.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parity_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sel_list&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;#dx&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# add another RX copy of the format symbol&lt;/span&gt;
    sel_dxrx.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parity_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sel_list&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;#rx&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# add the DX copy of the category symbol&lt;/span&gt;
    sel_dxrx.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parity_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sel_list&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;#dx&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# loop through the remaining symbols to add the RX and DX versions &lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;symbol_count-&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sel_dxrx.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parity_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sel_list&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;#rx&lt;/span&gt;
        sel_dxrx.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parity_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sel_list&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i+&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;#dx&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# add a final DX and RX copy of the EOS symbol&lt;/span&gt;
    sel_dxrx.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parity_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sel_list&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    sel_dxrx.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parity_table&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;sel_list&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;    
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# sel_dxrx is a list of 10-bit words, as ones and noughts, for the complete message&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; sel_dxrx
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# Make a 600-bit dotting period of alternating 1/0 in a string&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# Selcal dotting periods often 6 seconds (and up to 20 seconds in some&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# instances) to allow for capturing scanning radios. &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# We send 300 bits / 6 seconds for now, pending a decision to extend or reduce the dotting period.&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# Append to the string each 10-bit interleaved word, to create a string of &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# ones and noughts.&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# return a string of ones &amp;amp; noughts representing the complete message&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; make_bitstream&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sel_dxrx&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    sel_bitstream&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;10&amp;quot;&lt;/span&gt;  * &lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;# dotting&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; sel_dxrx:
        sel_bitstream +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; i
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; sel_bitstream
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# DSC and Selcall use tone spacing and baud rate that prevents the use of &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# &amp;quot;Sunde&#039;s FSK&amp;quot; method to create glitch-less bit transitions.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# To minimize bandwidth it&#039;s necessary to use &amp;quot;Continuous Phase FSK&amp;quot; which&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# has a smooth transition of the waveform at the bit boundary. The method used is time-consuming&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# as we have to create each audio sample based on the phase-advance of each bit-period and &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# store them in a buffer before sending them out to the soundcard via PyAudio.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# This function is courtesy of Bill Lionheart : billlionheart@gmail.com&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Make the CPFSK-modulated sample values, pack them into a list, and convert to a string &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# to feed PyAudio  &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; modulate&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fmsg&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fcarrier&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; f0&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; f1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fsample&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; baud&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; amp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; amp &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1.0&lt;/span&gt;:
       amp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1.0&lt;/span&gt;
&amp;nbsp;
    sel_amp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;w_amp * amp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    mlen &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fmsg&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    mtime &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; mlen/baud  
&amp;nbsp;
    nsamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fsample*mtime&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    deltaT &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1.0&lt;/span&gt;/fsample
&amp;nbsp;
    ph&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
    y &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * nsamp
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nsamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span class=&quot;co1&quot;&gt;# i = sample number&lt;/span&gt;
&amp;nbsp;
        thisbit &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;floor&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i/&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;nsamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;* mlen&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# &amp;quot;thisbit&amp;quot; is the index number of the data-bit being modulated,&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# the same data-bit is used for &amp;quot;the number of samples which occupy 1 bit period&amp;quot;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; fmsg&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;thisbit&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;:
            f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; f1 
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; f0 
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# if this bit is a 1 then f = mark-freq, else f = space-freq&lt;/span&gt;
&amp;nbsp;
        ph +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;  &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;*pi*&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fcarrier + f&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;*deltaT
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# phase advances during sample period according the actual mark or space freq&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# when the bit changes between 1 and 0, the phase advance in deltaT is small, and&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# continuity in phase is achieved. The signal then starts to advance&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# in phase according to the new frequency appropriate the the bit (one or nought)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#being sent.&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# reset phase to zero every 360 degrees&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; ph&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;*pi: 
            ph &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; ph - &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;*pi
&amp;nbsp;
        y&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;sel_amp*&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sin&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ph&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;# y is an 8-bit value&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# y[i] is the current sample&#039;s amplitude - the &amp;quot;sin of current accumulated phase&amp;quot;&lt;/span&gt;
&amp;nbsp;
    wave_list &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; v &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; y:
        vp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;struct&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pack&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;h&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;v&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        wave_list.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;vp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    wavestring &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&#039;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;wave_list&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; wavestring
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# Take the message to be sent and&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# 1) interleave&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# 2) make bitstream as a string&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# 3) convert to list, for the CPFSK modulator function, &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# 4) calculate the sample values using the &amp;quot;modulate()&amp;quot; function&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# 5) write the string of sample values to pyaudio&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; transmit_sel&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sel_call&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# 1) interleave the message and phasing DX and RX symbols together, and also convert to 10-bit parity words&lt;/span&gt;
    sel_dxrx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; interleave&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;parity_table&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; phasing_symbol&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sel_call&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# 2) create a string with the ones and noughts representing the full message&lt;/span&gt;
    sel_bitstream &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; make_bitstream&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sel_dxrx&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# 3) convert the string into a list, to feed the CPFSK modulator&lt;/span&gt;
    bitstream_list &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sel_bitstream&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i:i+&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sel_bitstream&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# 4) get a list of sample values from the CPFSK modulator&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# arguments for modulate() : (source of message_bits(a list), f-centre, space_dev, mark_dev, sample_rate, baud_rate, amplitude)&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# returns a string of 8-bit signed values to feed PyAudio&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw3&quot;&gt;wave&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; modulate&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bitstream_list&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1785&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;85&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; +&lt;span class=&quot;nu0&quot;&gt;85&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9600&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100.0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# 5) make some noise...&lt;/span&gt;
&amp;nbsp;
    cpfsk_stream.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;wave&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_ff20f88c1b3f9a8095d8a9db87a6a952_2&quot;&gt;selcal_gui.py (Click to view ) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_ff20f88c1b3f9a8095d8a9db87a6a952_2&quot;&gt;&lt;pre class=&quot;code python&quot;&gt;&lt;span class=&quot;co1&quot;&gt;# Wire2waves Ltd&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# CCIR 493-4 Selcal Generator &amp;amp; Modulator&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Generic, non-TX GUI&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Tkinter&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; selcal_functions &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Queue&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
&amp;nbsp;
version &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;v0.2&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; Application&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Frame&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; master&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&amp;quot; Initialize frame&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
        Frame.&lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; master&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_widgets&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# we manage the three sound-producing functions in Threads, run at startup but only produce&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# output when their Queues are set to &amp;quot;1&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;selqueue&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Queue&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;Queue&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tunequeue&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Queue&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;Queue&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cwqueue&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Queue&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;Queue&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tunequeue&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;selqueue&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cwqueue&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        t1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;target &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tune&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        t1.&lt;span class=&quot;me1&quot;&gt;setDaemon&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        t1.&lt;span class=&quot;me1&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        c1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;target &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;send_cwid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        c1.&lt;span class=&quot;me1&quot;&gt;setDaemon&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        c1.&lt;span class=&quot;me1&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        d1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;target &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;send_sel&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        d1.&lt;span class=&quot;me1&quot;&gt;setDaemon&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        d1.&lt;span class=&quot;me1&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; create_widgets&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;###### &lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# The Address Entry Fields&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;To ID&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;red&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to_sel_id_e&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Entry&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;red&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to_sel_id_e&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; padx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; pady &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to_sel_id_e&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;3922&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Self ID&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;blue&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from_sel_id_e&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Entry&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;blue&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from_sel_id_e&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; padx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; pady &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from_sel_id_e&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;3921&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;###################&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# The &amp;quot;Format&amp;quot; selection radio buttons&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;fmt&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;fmt_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Format&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sel_r&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Sel&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;fmt&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sel&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sel_r&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;bcn_r&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Bcn&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;fmt&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;bcn&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;bcn_r&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.fmt_e = Entry(self, width = 10, fg = &#039;blue&#039;)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.fmt_e.grid(row = 5, column = 1, padx = 5, pady = 5, sticky = W)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.fmt_e.insert(0, &amp;quot;120&amp;quot;)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# click the &amp;quot;SEL&amp;quot; radio button&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sel_r&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;invoke&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;########&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;######&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# The &amp;quot;Category&amp;quot; selection radio buttons&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cat&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cat_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Category&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;saf_r&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Routine&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cat&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rtn&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;saf_r&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.cat_e = Entry(self, width = 10, fg = &#039;blue&#039;)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.cat_e.grid(row = 6, column = 1, padx = 5, pady = 5, sticky = W)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.cat_e.insert(0, &amp;quot;100&amp;quot;)&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# For selcal we may require other categories, but at present only &amp;quot;Routine&amp;quot; is used&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.urg_r = Radiobutton(self, text = &amp;quot;Urgent&amp;quot;, variable = self.cat, value = &amp;quot;urg&amp;quot;)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.urg_r.grid(row = 6, column = 2, sticky = W)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.dis_r = Radiobutton(self, text = &amp;quot;Distress&amp;quot;, variable = self.cat, value = &amp;quot;dis&amp;quot;)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.dis_r.grid(row = 6, column = 3, sticky = W)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# click the &amp;quot;Safety&amp;quot; radio-button&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;saf_r&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;invoke&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;########&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;####&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# The &amp;quot;EOS&amp;quot; selection radio buttons&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;eosv&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;eos_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;EOS&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;req_r&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;REQ&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;eosv&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;req&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;req_r&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.eos_e = Entry(self, width = 10, fg = &#039;blue&#039;)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.eos_e.grid(row = 9, column = 1, padx = 5, pady = 5, sticky = W)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.eos_e.insert(0, &amp;quot;117&amp;quot;)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# leave these in case other EOS symbols would be useful in the future &lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.ack_r = Radiobutton(self, text = &amp;quot;ACK&amp;quot;, variable = self.eosv, value = &amp;quot;ack&amp;quot;)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.ack_r.grid(row = 9, column = 2, sticky = W)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#self.eos_r = Radiobutton(self, text = &amp;quot;EOS&amp;quot;, variable = self.eosv, value = &amp;quot;eos&amp;quot;)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.eos_r.grid(row = 9, column = 3, sticky = W)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# click the &amp;quot;REQ&amp;quot; radio button&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;req_r&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;invoke&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;###########&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;###########&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# The &amp;quot;do something&amp;quot; buttons&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;go_b&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Send Selcal&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;selqueue_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;go_b&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W+E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tune_b&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Tune&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tunequeue_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tune_b&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W+E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cw_call_e&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Entry&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cw_call_e&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; columnspan &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# The CW Text is pre-set, but can be edited as required on the GUI&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cw_call_e&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;   de GM4SLV   &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cw_b&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Send CW -&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cwqueue_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cw_b&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W+E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;######&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# The display of Selcal Symbols&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sel_title&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Sending Selcal Symbols: &amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;blue&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sel_call_f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Frame&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; relief &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; GROOVE&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; borderwidth &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; pady &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sel_call_f.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; columnspan &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; padx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; pady &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W+E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sel_label&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sel_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sel_call_f&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sel_label&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;blue&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; height &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; wraplength &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;350&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; anchor &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sel_l&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#####&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# When a Tune is required we call tunequeue_on() which puts a &amp;quot;1&amp;quot; into the queue.&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# The queue is read by tune() which is running constantly (while True:) in a thread. &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# If a &amp;quot;1&amp;quot; is found the tune_carrier() function is triggered&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# then tunequeue_off() will put a &amp;quot;0&amp;quot; in the queue which will inhibit any further&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# tune signals. &lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# Since the Tune, CWID and Selcal Transmit all run in their own threads, with their own queues&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# it&#039;s possible to do all three functions at once, and still retain an active GUI&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# this may not be &amp;quot;the right way&amp;quot; to do this, but it works...&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; tunequeue_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tunequeue&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; tunequeue_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tunequeue&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; tune&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;:
            t_on &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tunequeue&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; t_on &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:   
                pwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0.7&lt;/span&gt;
                tune_carrier&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tunequeue_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; cwqueue_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cwqueue&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; cwqueue_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cwqueue&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; send_cwid&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;:
            c_on &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cwqueue&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; c_on &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:
                pwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0.7&lt;/span&gt;
                call &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cw_call_e&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;upper&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                cwid&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;call&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cwqueue_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; selqueue_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;selqueue&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; selqueue_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;selqueue&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;put&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; send_sel&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;:   
            go &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;selqueue&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; go &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:
                a_sel_id &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;to_sel_id_e&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                s_sel_id &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;from_sel_id_e&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                fmt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;fmt&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                cat &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cat&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                eos &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;eosv&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                pwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0.7&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;# restrict to 4-digit 493-4&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;a_sel_id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;:
                    &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;s_sel_id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;:
                    &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;# convert the format, category and eos to the appropriate symbol values&lt;/span&gt;
                fmt_symbol &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fmt_symbol_dict&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;fmt&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;#fmt_symbol = self.fmt_e.get()&lt;/span&gt;
&amp;nbsp;
                cat_symbol &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cat_symbol_dict&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;cat&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;#cat_symbol = self.cat_e.get()&lt;/span&gt;
&amp;nbsp;
                eos_symbol &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;eos_symbol_dict&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;eos&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;#eos_symbol = self.eos_e.get()&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;# convert the 4-digit selcal IDs into two 2-digit symbols&lt;/span&gt;
                a_symbol &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; sel_id_symbol&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;a_sel_id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                s_symbol &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; sel_id_symbol&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;s_sel_id&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;# build the call by joining the symbol values into a list&lt;/span&gt;
                sel_call &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; build_call&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fmt_symbol&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; a_symbol&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cat_symbol&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; s_symbol&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; eos_symbol&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;#we want the basic selcal message returned to us, to display on the GUI&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sel_label&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sel_call&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;# turn the selcal queue off to stop further transmissions&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;selqueue_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;# then we pass the selcal list and required &amp;quot;power&amp;quot; into &amp;quot;transmit_sel() which does the rest...&lt;/span&gt;
                transmit_sel&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sel_call&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; __name__ &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;__main__&#039;&lt;/span&gt;:
    root &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Tk&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    root.&lt;span class=&quot;me1&quot;&gt;geometry&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;350x350+10+10&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    root.&lt;span class=&quot;me1&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;GM4SLV HF CCIR 493-4 Selcal &amp;quot;&lt;/span&gt; + version&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    root.&lt;span class=&quot;me1&quot;&gt;resizable&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    app &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Application&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;root&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    root.&lt;span class=&quot;me1&quot;&gt;mainloop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
— &lt;em&gt;John Pumford-Green 29/04/23 11:42&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Last Modified : 08/06/26 18:08 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:selcall&amp;amp;do=showtag&amp;amp;tag=selcall&quot; class=&quot;wikilink1&quot; title=&quot;tag:selcall&quot; rel=&quot;tag&quot;&gt;selcall&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;6278-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 08 Jun 2026 17:08:18 +0000</pubDate>
        </item>
        <item>
            <title>I3 Window Manager</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:i3_window_manager</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:start&quot; data-wiki-id=&quot;public:computers:archive:start&quot;&gt;Archive&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;i3_window_manager&quot;&gt;I3 Window Manager&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Various Things related to I3 &lt;/strong&gt;
&lt;/p&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;group wrap__dark plugin_wrap&quot;&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_half wrap_column wrap__dark plugin_wrap&quot;&gt;
&lt;p&gt;
Background &amp;amp; Conky
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acomputers%3Aarchive%3Ai3_window_manager&amp;amp;media=public:computers:2022-10-09-131610_1440x900_scrot.png&quot; class=&quot;media&quot; title=&quot;public:computers:2022-10-09-131610_1440x900_scrot.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=35dd39&amp;amp;media=public:computers:2022-10-09-131610_1440x900_scrot.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_half wrap_column wrap__dark plugin_wrap&quot;&gt;
&lt;p&gt;
Some tiled windows
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acomputers%3Aarchive%3Ai3_window_manager&amp;amp;media=public:computers:2022-10-08-204455_1440x900_scrot.png&quot; class=&quot;media&quot; title=&quot;public:computers:2022-10-08-204455_1440x900_scrot.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=c1bc1a&amp;amp;media=public:computers:2022-10-08-204455_1440x900_scrot.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;group wrap__dark plugin_wrap&quot;&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_half wrap_column wrap__dark plugin_wrap&quot;&gt;
&lt;p&gt;
Floating scratchpad terminal with &lt;code&gt;ranger&lt;/code&gt; file manager
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acomputers%3Aarchive%3Ai3_window_manager&amp;amp;media=public:computers:2022-10-09-132014_1440x900_scrot.png&quot; class=&quot;media&quot; title=&quot;public:computers:2022-10-09-132014_1440x900_scrot.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=8e9f98&amp;amp;media=public:computers:2022-10-09-132014_1440x900_scrot.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_half wrap_column wrap__dark plugin_wrap&quot;&gt;
&lt;p&gt;
Floating scratchpad terminal with &lt;code&gt;Alpine&lt;/code&gt; email client
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acomputers%3Aarchive%3Ai3_window_manager&amp;amp;media=public:computers:2022-10-09-133519_1440x900_scrot.png&quot; class=&quot;media&quot; title=&quot;public:computers:2022-10-09-133519_1440x900_scrot.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=7eddfc&amp;amp;media=public:computers:2022-10-09-133519_1440x900_scrot.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;I3 Window Manager&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;i3_window_manager&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-655&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;i3_config_and_tweaks&quot;&gt;I3 Config and tweaks&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;autotile&quot;&gt;Autotile&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Make new windows be created in alternating &lt;code&gt;horizontal&lt;/code&gt; / &lt;code&gt;vertical&lt;/code&gt; arrangement, depending on aspect ratio of the current window.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/nwg-piotr/autotiling&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/nwg-piotr/autotiling&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/nwg-piotr/autotiling&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acomputers%3Aarchive%3Ai3_window_manager&amp;amp;media=public:computers:2022-10-09-132505_1440x900_scrot.png&quot; class=&quot;media&quot; title=&quot;public:computers:2022-10-09-132505_1440x900_scrot.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=4583e6&amp;amp;media=public:computers:2022-10-09-132505_1440x900_scrot.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;i3_config_file&quot;&gt;I3 Config File&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_aa0642f8e44b4a219db8d085bf394263_1&quot;&gt;config &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_aa0642f8e44b4a219db8d085bf394263_1&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;# This file has been auto-generated by i3-config-wizard(1).&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# It will not be overwritten, so edit it as you like.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# Should you change your keyboard layout some time, delete&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# this file and re-run i3-config-wizard(1).&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# i3 config file (v4)&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# Please see https://i3wm.org/docs/userguide.html for a complete reference!&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt; Mod4
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Font for window titles. Will also be used by the bar unless a different font&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# is used in the bar {} block below.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#font pango:monospace 8&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# This font is widely installed, provides lots of unicode glyphs, right-to-left&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# text rendering and scalability on retina/hidpi displays (thanks to pango).&lt;/span&gt;
font pango:DejaVu Sans &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
default_border normal &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
hide_edge_borders none
binding_mode_indicator &lt;span class=&quot;kw2&quot;&gt;yes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;#set $bg-color #2f446f&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#set $inactive-bg-color #2f343f&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#set $text-color #ffb25a&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#set $inactive-text_color #676e7d&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#set $urgent-bg-color #bd2c40&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;#client.focused $bg-color $bg-color $text-color #2255ff&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#client.unfocused $inactive-bg-color $bg-color $text-color #225ff&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color #2255ff&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#client.urgent $urgent-bg-color $urgent-bg-color $text_color #2255ff&lt;/span&gt;
&amp;nbsp;
workspace_auto_back_and_forth &lt;span class=&quot;kw2&quot;&gt;yes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# The combination of xss-lock, nm-applet and pactl is a popular choice, so&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# they are included here as an example. Modify as you see fit.&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# screen before suspend. Use loginctl lock-session to lock your screen.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# NetworkManager is the most popular way to manage wireless networks on Linux,&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# and nm-applet is a desktop environment-independent system tray GUI for it.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#exec --no-startup-id nm-applet&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; synclient &lt;span class=&quot;re2&quot;&gt;tapbutton1&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;noblank.sh
&lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; conky
&lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; xsetroot &lt;span class=&quot;re5&quot;&gt;-solid&lt;/span&gt; midnightblue
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; ~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;background.sh
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;#exec --no-startup-id polybar example&lt;/span&gt;
&amp;nbsp;
exec_always &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; autotile
&lt;span class=&quot;co0&quot;&gt;#exec_always --no-startup-id ~/autosplit&lt;/span&gt;
&amp;nbsp;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+p &lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; ~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;promote-window
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Use pactl to adjust volume in PulseAudio.&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$refresh_i3status&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;killall&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-SIGUSR1&lt;/span&gt; i3status
bindsym XF86AudioRaiseVolume &lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; pactl set-sink-volume &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;DEFAULT_SINK&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt; +&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$refresh_i3status&lt;/span&gt;
bindsym XF86AudioLowerVolume &lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; pactl set-sink-volume &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;DEFAULT_SINK&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$refresh_i3status&lt;/span&gt;
bindsym XF86AudioMute &lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; pactl set-sink-mute &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;DEFAULT_SINK&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt; toggle &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$refresh_i3status&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle &amp;amp;&amp;amp; $refresh_i3status&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;#bindsym XF86AudioMute exec amixer sset &#039;Master&#039; toggle&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#bindsym XF86AudioLowerVolume exec amixer sset &#039;Master&#039; 5%-&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#bindsym XF86AudioRaiseVolume exec amixer sset &#039;Master&#039; 5%+&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Use Mouse+$mod to drag floating windows to their wanted position&lt;/span&gt;
floating_modifier &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# start a terminal&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#bindsym $mod+Return exec i3-sensible-terminal&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Return &lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; lxterminal
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# kill focused window&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+q &lt;span class=&quot;kw3&quot;&gt;kill&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# start dmenu (a program launcher)&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+d &lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; dmenu_run
&lt;span class=&quot;co0&quot;&gt;# A more modern dmenu replacement is rofi:&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# bindcode $mod+40 exec &amp;quot;rofi -modi drun,run -show drun&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# There also is i3-dmenu-desktop which only displays applications shipping a&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# .desktop file. It is a wrapper around dmenu, so you need that installed.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# change focus&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+h focus left
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+j focus down
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+k focus up
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+l focus right
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# alternatively, you can use the cursor keys:&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Left focus left
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Down focus down
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Up focus up
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Right focus right
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# move focused window&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+h move left
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+j move down
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+k move up
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+l move right
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# alternatively, you can use the cursor keys:&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+Left move left
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+Down move down
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+Up move up
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+Right move right
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# split in horizontal orientation&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#bindsym $mod+h split h&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# split in vertical orientation&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#bindsym $mod+v split v&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# enter fullscreen mode for the focused container&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+f fullscreen toggle
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# change container layout (stacked, tabbed, toggle split)&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+s layout stacking
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+&lt;span class=&quot;kw2&quot;&gt;w&lt;/span&gt; layout tabbed
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+e layout toggle &lt;span class=&quot;kw2&quot;&gt;split&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# toggle tiling / floating&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+space floating toggle
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# change focus between tiling / floating windows&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+space focus mode_toggle
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# focus the parent container&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+a focus parent
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# focus the child container&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#bindsym $mod+d focus child&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Define names for default workspaces for which we configure key bindings later on.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# We use variables to avoid repeating the names in multiple places.&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ws1&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;1&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ws2&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;2&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ws3&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;3&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ws4&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;4&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ws5&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;5&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ws6&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;6&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ws7&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;7&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ws8&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;8&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ws9&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;9&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ws10&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;10&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# switch to workspace&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; workspace number &lt;span class=&quot;re1&quot;&gt;$ws1&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; workspace number &lt;span class=&quot;re1&quot;&gt;$ws2&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; workspace number &lt;span class=&quot;re1&quot;&gt;$ws3&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; workspace number &lt;span class=&quot;re1&quot;&gt;$ws4&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; workspace number &lt;span class=&quot;re1&quot;&gt;$ws5&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; workspace number &lt;span class=&quot;re1&quot;&gt;$ws6&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt; workspace number &lt;span class=&quot;re1&quot;&gt;$ws7&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; workspace number &lt;span class=&quot;re1&quot;&gt;$ws8&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt; workspace number &lt;span class=&quot;re1&quot;&gt;$ws9&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; workspace number &lt;span class=&quot;re1&quot;&gt;$ws10&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# move focused container to workspace&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; move container to workspace number &lt;span class=&quot;re1&quot;&gt;$ws1&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; move container to workspace number &lt;span class=&quot;re1&quot;&gt;$ws2&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; move container to workspace number &lt;span class=&quot;re1&quot;&gt;$ws3&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; move container to workspace number &lt;span class=&quot;re1&quot;&gt;$ws4&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; move container to workspace number &lt;span class=&quot;re1&quot;&gt;$ws5&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; move container to workspace number &lt;span class=&quot;re1&quot;&gt;$ws6&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt; move container to workspace number &lt;span class=&quot;re1&quot;&gt;$ws7&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; move container to workspace number &lt;span class=&quot;re1&quot;&gt;$ws8&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt; move container to workspace number &lt;span class=&quot;re1&quot;&gt;$ws9&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; move container to workspace number &lt;span class=&quot;re1&quot;&gt;$ws10&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# reload the configuration file&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+c reload
&lt;span class=&quot;co0&quot;&gt;# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+r restart
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+x &lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; i3lock
&lt;span class=&quot;co0&quot;&gt;# exit i3 (logs you out of your X session)&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+e &lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;i3-nagbar -t warning -m &#039;You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.&#039; -B &#039;Yes, exit i3&#039; &#039;i3-msg exit&#039;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;##############################&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#  Program Shortcuts&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;##############################&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# &amp;quot;b&amp;quot; for &amp;quot;browser&amp;quot;&lt;/span&gt;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+b &lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; firefox
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;##############################&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#  SCRATCHPAD&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;###############################&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$scratchpad&lt;/span&gt;-size &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;700&lt;/span&gt;
&amp;nbsp;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+Shift+minus move scratchpad
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+minus scratchpad show
&amp;nbsp;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+m &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;title&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;AlpineMail&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; scratchpad show ; move position center
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+n &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;title&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;NewsboatReader&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; scratchpad show ; move position center
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+comma &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;title&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;RangerFM&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; scratchpad show ; move position center
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+period &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;title&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Connman&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; scratchpad show ; move position center
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; lxterminal &lt;span class=&quot;re5&quot;&gt;-T&lt;/span&gt; AlpineMail &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; ~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpine 
&lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; lxterminal &lt;span class=&quot;re5&quot;&gt;-T&lt;/span&gt; NewsboatReader &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;newsboat
&lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; lxterminal &lt;span class=&quot;re5&quot;&gt;-T&lt;/span&gt; RangerFM &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; ranger
&lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--no-startup-id&lt;/span&gt; cmst &lt;span class=&quot;re5&quot;&gt;-M&lt;/span&gt;
&amp;nbsp;
for_window &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;title&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Connman System Tray&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; floating &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt;, resize &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$scratchpad&lt;/span&gt;-size, move scratchpad
for_window &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;title&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;AlpineMail&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; floating &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt;, resize &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$scratchpad&lt;/span&gt;-size, move scratchpad
for_window &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;title&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;NewsboatReader&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; floating &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt;, resize &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$scratchpad&lt;/span&gt;-size, move scratchpad 
for_window &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;title&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;RangerFM&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; floating &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt;, resize &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$scratchpad&lt;/span&gt;-size, move scratchpad 
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;################################################&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# resize window (you can also use the mouse for that)&lt;/span&gt;
mode &lt;span class=&quot;st0&quot;&gt;&amp;quot;resize&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co0&quot;&gt;# These bindings trigger as soon as you enter the resize mode&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co0&quot;&gt;# Pressing left will shrink the window’s width.&lt;/span&gt;
        &lt;span class=&quot;co0&quot;&gt;# Pressing right will grow the window’s width.&lt;/span&gt;
        &lt;span class=&quot;co0&quot;&gt;# Pressing up will shrink the window’s height.&lt;/span&gt;
        &lt;span class=&quot;co0&quot;&gt;# Pressing down will grow the window’s height.&lt;/span&gt;
        bindsym j resize shrink width &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; px or &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; ppt
        bindsym k resize grow height &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; px or &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; ppt
        bindsym l resize shrink height &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; px or &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; ppt
        bindsym semicolon resize grow width &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; px or &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; ppt
&amp;nbsp;
        &lt;span class=&quot;co0&quot;&gt;# same bindings, but for the arrow keys&lt;/span&gt;
        bindsym Left resize shrink width &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; px or &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; ppt
        bindsym Down resize grow height &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; px or &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; ppt
        bindsym Up resize shrink height &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; px or &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; ppt
        bindsym Right resize grow width &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; px or &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; ppt
&amp;nbsp;
        &lt;span class=&quot;co0&quot;&gt;# back to normal: Enter or Escape or $mod+r&lt;/span&gt;
        bindsym Return mode &lt;span class=&quot;st0&quot;&gt;&amp;quot;default&amp;quot;&lt;/span&gt;
        bindsym Caps_Lock mode &lt;span class=&quot;st0&quot;&gt;&amp;quot;default&amp;quot;&lt;/span&gt;
        bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+r mode &lt;span class=&quot;st0&quot;&gt;&amp;quot;default&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
bindsym &lt;span class=&quot;re1&quot;&gt;$mod&lt;/span&gt;+r mode &lt;span class=&quot;st0&quot;&gt;&amp;quot;resize&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Start i3bar to display a workspace bar (plus the system information i3status&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# finds out, if available)&lt;/span&gt;
bar &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
     font pango:DejaVu Sans mono &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
     status_command i3status &lt;span class=&quot;re5&quot;&gt;-c&lt;/span&gt; ~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;i3status.conf
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h4 id=&quot;i3status_bar&quot;&gt;i3status bar&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_aa0642f8e44b4a219db8d085bf394263_2&quot;&gt;i3status.conf &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_aa0642f8e44b4a219db8d085bf394263_2&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;# i3status configuration file.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# see &amp;quot;man i3status&amp;quot; for documentation.&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# It is important that this file is edited as UTF-8.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# The following line should contain a sharp s:&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# ß&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# If the above line is not correctly displayed, fix your editor first!&lt;/span&gt;
&amp;nbsp;
general &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        colors = &lt;span class=&quot;kw2&quot;&gt;true&lt;/span&gt;
        interval = &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;#order += &amp;quot;ipv6&amp;quot;&lt;/span&gt;
order += &lt;span class=&quot;st0&quot;&gt;&amp;quot;wireless _first_&amp;quot;&lt;/span&gt;
order += &lt;span class=&quot;st0&quot;&gt;&amp;quot;ethernet _first_&amp;quot;&lt;/span&gt;
order += &lt;span class=&quot;st0&quot;&gt;&amp;quot;battery 0&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#order += &amp;quot;disk /&amp;quot;&lt;/span&gt;
order += &lt;span class=&quot;st0&quot;&gt;&amp;quot;load&amp;quot;&lt;/span&gt;
order += &lt;span class=&quot;st0&quot;&gt;&amp;quot;cpu_usage&amp;quot;&lt;/span&gt;
order += &lt;span class=&quot;st0&quot;&gt;&amp;quot;cpu_temperature 0&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#order += &amp;quot;memory&amp;quot;&lt;/span&gt;
order += &lt;span class=&quot;st0&quot;&gt;&amp;quot;tztime local&amp;quot;&lt;/span&gt;
&amp;nbsp;
wireless _first_ &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        format_up = &lt;span class=&quot;st0&quot;&gt;&amp;quot;W: (%quality at %essid) %ip&amp;quot;&lt;/span&gt;
        format_down = &lt;span class=&quot;st0&quot;&gt;&amp;quot;W: down&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
ethernet _first_ &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        format_up = &lt;span class=&quot;st0&quot;&gt;&amp;quot;E: %ip (%speed)&amp;quot;&lt;/span&gt;
        format_down = &lt;span class=&quot;st0&quot;&gt;&amp;quot;E: down&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
battery &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	status_chr = &lt;span class=&quot;st0&quot;&gt;&amp;quot;⚡&amp;quot;&lt;/span&gt;
        status_bat = &lt;span class=&quot;st0&quot;&gt;&amp;quot;🔋&amp;quot;&lt;/span&gt;
        status_unk = &lt;span class=&quot;st0&quot;&gt;&amp;quot;? &amp;quot;&lt;/span&gt;
        status_full = &lt;span class=&quot;st0&quot;&gt;&amp;quot;☻ &amp;quot;&lt;/span&gt;
	low_threshold = &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
        format = &lt;span class=&quot;st0&quot;&gt;&amp;quot;B: %status %percentage %remaining&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
disk &lt;span class=&quot;st0&quot;&gt;&amp;quot;/&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        format = &lt;span class=&quot;st0&quot;&gt;&amp;quot;%avail&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
load &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        format = &lt;span class=&quot;st0&quot;&gt;&amp;quot;L: %1min&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
cpu_temperature &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	format = &lt;span class=&quot;st0&quot;&gt;&amp;quot;T: %degrees°C&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
cpu_usage &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	format = &lt;span class=&quot;st0&quot;&gt;&amp;quot;CPU0 %cpu0 / CPU1 %cpu1&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
memory &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	memory_used_method = &lt;span class=&quot;st0&quot;&gt;&amp;quot;classical&amp;quot;&lt;/span&gt;
        format = &lt;span class=&quot;st0&quot;&gt;&amp;quot;%free / %used&amp;quot;&lt;/span&gt;
	threshold_degraded = &lt;span class=&quot;st0&quot;&gt;&amp;quot;2G&amp;quot;&lt;/span&gt;
        format_degraded = &lt;span class=&quot;st0&quot;&gt;&amp;quot;MEMORY &amp;lt; %available&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
tztime &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        format = &lt;span class=&quot;st0&quot;&gt;&amp;quot;%Y-%m-%d %H:%M&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h4 id=&quot;conky&quot;&gt;Conky&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_aa0642f8e44b4a219db8d085bf394263_3&quot;&gt;.conkyrc &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_aa0642f8e44b4a219db8d085bf394263_3&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;# Standard antiX .conkyrc file&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# For conky editing help and commands visit = Casey&#039;s Conky Reference with Examples {http://www.ifxgroup.net/conky.htm}&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# set to yes if you want Conky to be forked in the background&lt;/span&gt;
background &lt;span class=&quot;kw2&quot;&gt;yes&lt;/span&gt;
&amp;nbsp;
short_units &lt;span class=&quot;kw2&quot;&gt;yes&lt;/span&gt;
&amp;nbsp;
cpu_avg_samples &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
net_avg_samples &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
out_to_console no
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# X font when Xft is disabled, you can pick one with program xfontsel&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#font 7x12&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#font 6x10&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#font 7x13&lt;/span&gt;
font 8x12
&lt;span class=&quot;co0&quot;&gt;#font 7x12&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Use Xft?&lt;/span&gt;
use_xft &lt;span class=&quot;kw2&quot;&gt;yes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Xft font when Xft is enabled&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#xftfont gentium:size=12&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ftfont DejaVu Sans:size=10&lt;/span&gt;
xftfont DejaVu Sans:bold:&lt;span class=&quot;re2&quot;&gt;size&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#xftfont DejaVu Sans:size=9&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Create own window instead of using desktop (required in nautilus, pcmanfm and rox desktops)&lt;/span&gt;
own_window &lt;span class=&quot;kw2&quot;&gt;yes&lt;/span&gt;
own_window_class Conky
own_window_transparent &lt;span class=&quot;kw2&quot;&gt;yes&lt;/span&gt;
own_window_hints undecorated,below,sticky,skip_taskbar
own_window_type override
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Text alpha when using Xft&lt;/span&gt;
xftalpha &lt;span class=&quot;nu0&quot;&gt;1.0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;#on_bottom no&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Update interval in seconds&lt;/span&gt;
update_interval &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Use double buffering (reduces flicker, may not work for everyone)&lt;/span&gt;
double_buffer &lt;span class=&quot;kw2&quot;&gt;yes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Minimum size of text area&lt;/span&gt;
minimum_size &lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt;
maximum_width &lt;span class=&quot;nu0&quot;&gt;190&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Draw shades?&lt;/span&gt;
draw_shades no
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Draw outlines?&lt;/span&gt;
draw_outline no
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Draw borders around text&lt;/span&gt;
draw_borders no
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Stippled borders?&lt;/span&gt;
stippled_borders &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# border margins&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#border_margin 10&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# border width&lt;/span&gt;
border_width &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Default colors and also border colors&lt;/span&gt;
default_color white
default_shade_color white
default_outline_color white
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;#color ffffff&lt;/span&gt;
color4 yellow
color8 77ccff
color9 5599cc
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Text alignment, other possible values are commented&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# alignment top_left&lt;/span&gt;
alignment top_right
&lt;span class=&quot;co0&quot;&gt;#alignment bottom_left&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#alignment bottom_right&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Gap between borders of screen and text&lt;/span&gt;
&amp;nbsp;
gap_x &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
gap_y &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Add spaces to keep things from moving about?  This only affects certain objects.&lt;/span&gt;
use_spacer right
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Subtract file system buffers from used memory?&lt;/span&gt;
no_buffers &lt;span class=&quot;kw2&quot;&gt;yes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# if_up_strictness link:  up | link | address&lt;/span&gt;
if_up_strictness address
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# set to yes if you want all text to be in uppercase&lt;/span&gt;
uppercase no
&amp;nbsp;
TEXT
&lt;span class=&quot;co1&quot;&gt;${alignc}&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$nodename&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignc}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${color8}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${font DejaVu Sans:size=12}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${time %H:%M}&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${font}&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${color}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignc}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${time %a %d %b}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignc}&lt;/span&gt;Uptime: &lt;span class=&quot;re1&quot;&gt;$uptime&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#${alignc}${exec disp=${DISPLAY#:}; disp=${disp%.[0-9]}; cat $HOME/.desktop-session/desktop-code.$disp 2&amp;gt;/dev/null}&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#res:${alignr}${execi 60 xdpyinfo | sed -n -r &amp;quot;s/^\s*dimensions:.*\s([0-9]+x[0-9]+).*/\1/p&amp;quot;}&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#dpi:${alignr}${execi 60 sed -nr &amp;quot;s/^\s*Xft.dpi:\s*([0-9]+(x[0-9]+)?).*/\1/p&amp;quot; $HOME/.Xresources | grep &amp;quot;[0-9]&amp;quot; || echo 96}&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#Automount: ${alignr}${execi 60 grep -q &amp;quot;^automount=TRUE&amp;quot; $HOME/.desktop-session/automount.conf 2&amp;gt;/dev/null &amp;amp;&amp;amp; echo &amp;quot;enabled&amp;quot; || echo &amp;quot;disabled&amp;quot;}&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;Freq:$&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;alignr&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${freq}&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;CPU:$&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;alignr&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${cpu}&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#${color}Init:${alignr}${color3}${execi 60 detect-init.sh}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignr}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${cpugraph cpu0 30,170 5599cc 5599cc}&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;Disk:$&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;alignr&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${diskio}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignr}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${diskiograph 30,170 5599cc 5599cc}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${if_up eth0}&lt;/span&gt;
eth0 up: &lt;span class=&quot;re1&quot;&gt;$alignr&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${upspeed eth0}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignr}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${upspeedgraph   eth0 30,170 5599cc 5599cc}&lt;/span&gt;
eth0 down: &lt;span class=&quot;re1&quot;&gt;$alignr&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${downspeed eth0}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignr}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${downspeedgraph eth0 30,170  5599cc 5599cc}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${endif}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${if_up eth1}&lt;/span&gt;
eth1 up: &lt;span class=&quot;re1&quot;&gt;$alignr&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${upspeed eth1}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignr}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${upspeedgraph   eth1 30,170 5599cc 5599cc}&lt;/span&gt;
eth1 down: &lt;span class=&quot;re1&quot;&gt;$alignr&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${downspeed eth1}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignr}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${downspeedgraph eth1 30,170  5599cc 5599cc}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${endif}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${if_up wlan0}&lt;/span&gt;
&amp;nbsp;
Wireless 
IP  &lt;span class=&quot;re1&quot;&gt;$alignr&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${addr wlan0}&lt;/span&gt;
Gate &lt;span class=&quot;re1&quot;&gt;$alignr&lt;/span&gt;  &lt;span class=&quot;re1&quot;&gt;$gw_ip&lt;/span&gt;
NS &lt;span class=&quot;re1&quot;&gt;$alignr&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$nameserver&lt;/span&gt;
&amp;nbsp;
wlan0 up: &lt;span class=&quot;re1&quot;&gt;$alignr&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${upspeed wlan0}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignr}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${upspeedgraph   wlan0 30,170 5599cc 5599cc}&lt;/span&gt;
wlan0 down: &lt;span class=&quot;re1&quot;&gt;$alignr&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${downspeed wlan0}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignr}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${downspeedgraph wlan0 30,170 5599cc 5599cc}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${endif}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${if_up wlan1}&lt;/span&gt;
wlan1 up: &lt;span class=&quot;re1&quot;&gt;$alignr&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${upspeed wlan1}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignr}&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${upspeedgraph   wlan1 30,170 5599cc 5599cc}&lt;/span&gt;
wlan1 down: &lt;span class=&quot;re1&quot;&gt;$alignr&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${downspeed wlan1}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignr}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${downspeedgraph wlan1 30,170 5599cc 5599cc}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${endif}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;${alignr}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${color8}&lt;/span&gt;Used &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; Total &lt;span class=&quot;co1&quot;&gt;${color}&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;RAM:$&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;alignr&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$mem&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$memmax&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;Swap:$&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;alignr&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$swap&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$swapmax&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; Disk:&lt;span class=&quot;co1&quot;&gt;${alignr}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${fs_used /}&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${fs_size /}&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#${alignc}${execi 1000 persist-enabled}&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;${font DejaVu Sans Mono:size=10}&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${execi 30 ~/ruptime}&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
Gather &lt;code&gt;ruptime&lt;/code&gt; information about local LAN Linux boxes from the &lt;code&gt;rwhod&lt;/code&gt; service and format it with a small script &lt;code&gt;~/ruptime&lt;/code&gt; called from conkyrc
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;${font DejaVu Sans Mono:size=10}${execi 30 ~/ruptime}&lt;/pre&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_aa0642f8e44b4a219db8d085bf394263_4&quot;&gt;ruptime local script &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_aa0642f8e44b4a219db8d085bf394263_4&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ruptime &lt;span class=&quot;re5&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;cut&lt;/span&gt; -c1-&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;27&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
Real &lt;code&gt;ruptime&lt;/code&gt; returns:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;antix1:~ $ ruptime 
antix1        up    &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;+04:&lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;,     &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;users&lt;/span&gt;,  load &lt;span class=&quot;nu0&quot;&gt;0.63&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0.48&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0.47&lt;/span&gt;
aprs          up  &lt;span class=&quot;nu0&quot;&gt;116&lt;/span&gt;+04:03,     &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;users&lt;/span&gt;,  load &lt;span class=&quot;nu0&quot;&gt;0.00&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0.01&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0.00&lt;/span&gt;
laptop        up    &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;:04,     &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;users&lt;/span&gt;,  load &lt;span class=&quot;nu0&quot;&gt;1.27&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1.09&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;1.04&lt;/span&gt;
nas1          up  &lt;span class=&quot;nu0&quot;&gt;185&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;,     &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;users&lt;/span&gt;,  load &lt;span class=&quot;nu0&quot;&gt;0.33&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0.48&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0.47&lt;/span&gt;
shack         up      &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;,     &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;users&lt;/span&gt;,  load &lt;span class=&quot;nu0&quot;&gt;0.16&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0.22&lt;/span&gt;, &lt;span class=&quot;nu0&quot;&gt;0.21&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
My small script formats it for conky
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;antix1:~ $ .&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ruptime 
antix1    up   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;+04:&lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;
aprs      up &lt;span class=&quot;nu0&quot;&gt;116&lt;/span&gt;+04:03
laptop    up   &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;:04
nas1      up &lt;span class=&quot;nu0&quot;&gt;185&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;
shack     up     &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;add_neofetch_output_as_image_to_root_window&quot;&gt;add neofetch output as image to root window&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_aa0642f8e44b4a219db8d085bf394263_5&quot;&gt;background.sh &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_aa0642f8e44b4a219db8d085bf394263_5&quot;&gt;&lt;pre class=&quot;code&quot;&gt;#!/bin/bash



while :
do
	
	neofetch --disable term &amp;gt; fetch

	ansilove -q -m transparent fetch

	feh --bg-center -B midnightblue fetch.png

	sleep 300

done&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h4 id=&quot;keys_cheatsheet&quot;&gt;Keys cheatsheet&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;$mod+p = promote window

$mod+Return = terminal

$mod+Shift+q = kill window

$mod+d = dmenu

$mod+h = focus left
$mod+j = focus down
$mod+k = focus up
$mod+l = focus right


$mod+Shift+h = move left
$mod+Shift+j = move down
$mod+Shift+k = move up
$mod+Shift+l = move right


$mod+f = fullsreen toggle


=== When using Autotile these are for the next window to be created ====

$mod+s = stacking
$mod+w = tabbed
$mod+e = toggle h or v

=== Toggle a window between tiled and floating ===

$mod+Shift+space = floating toggle

=== Switch focus between a floating window and the tiled window(s)

$mod+space focus mode_toggle


$mod+a = focus parent
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;I3 Config and tweaks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;i3_config_and_tweaks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;656-17340&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;additional_software&quot;&gt;Additional Software&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Additional Software&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;additional_software&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;17341-17373&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;urxvt&quot;&gt;urxvt&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Configured vi ~/.Xdefaults
&lt;/p&gt;

&lt;p&gt;
For Ranger icons use &lt;code&gt;DejavuSansMono NFM:size=11:style=Book&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
A bug makes font rendering &lt;em&gt;odd&lt;/em&gt;, with too much space between characters (&lt;em&gt;kerning&lt;/em&gt; is wrong)
&lt;/p&gt;

&lt;p&gt;
A fix is to put &lt;code&gt;Xft.rgba: none&lt;/code&gt; into ~/.Xdefaults
&lt;/p&gt;

&lt;p&gt;
Another fix is to put &lt;code&gt;URxvt.letterSpace=-1&lt;/code&gt; into &lt;code&gt;~/.Xdefaults&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Here&amp;#039;s the &lt;code&gt;~/.Xdefaults&lt;/code&gt; I use:
&lt;/p&gt;

&lt;p&gt;
Some un-used lines are commented out, but might be useful in testing….
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;Xft.rgba: none
&lt;span class=&quot;co0&quot;&gt;#Xft.hintstyle: hintfull&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#URxvt.letterSpace:-1&lt;/span&gt;
&amp;nbsp;
Xcursor.size:&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#URxvt.skipBuiltinGlyphs: true&lt;/span&gt;
URxvt.scrollBar: &lt;span class=&quot;kw2&quot;&gt;false&lt;/span&gt;
URxvt.boldFont: 
&lt;span class=&quot;co0&quot;&gt;#URxvt.font: xft:DejaVuSansMono:style=Book:size=11&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#URxvt.font: xft:Monospace:size=11, xft:DejaVuSansMono NFM:style=Book&lt;/span&gt;
URxvt.font: xft:DejaVuSansMono NFM:&lt;span class=&quot;re2&quot;&gt;size&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;:&lt;span class=&quot;re2&quot;&gt;style&lt;/span&gt;=Book&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;urxvt&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;urxvt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;17374-18161&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;ranger&quot;&gt;Ranger&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Image Previews: &lt;code&gt;/etc/ranger/config/rc.conf&lt;/code&gt; :&lt;pre class=&quot;code&quot;&gt;set preview_images true&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;set preview_images_method w3m&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Draw borders round segments of display &lt;code&gt;/etc/ranger/config/rc.conf&lt;/code&gt; : &lt;pre class=&quot;code&quot;&gt;set draw_borders both&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Icons following instructions here: &lt;a href=&quot;https://github.com/alexanderjeurissen/ranger_devicons&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/alexanderjeurissen/ranger_devicons&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/alexanderjeurissen/ranger_devicons&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/etc/ranger/config/rc.conf&lt;/code&gt; :&lt;pre class=&quot;code&quot;&gt;default_linemode devicons&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Font for icons : &lt;a href=&quot;https://github.com/ryanoasis/nerd-fonts/releases/download/v2.2.2/DejaVuSansMono.zip&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/ryanoasis/nerd-fonts/releases/download/v2.2.2/DejaVuSansMono.zip&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/ryanoasis/nerd-fonts/releases/download/v2.2.2/DejaVuSansMono.zip&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; unzipped into : ~/.fonts&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; font cache re-built with &lt;pre class=&quot;code&quot;&gt;fc-cache -fv&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Use Lxterminal - handles icons and image previews (&lt;code&gt;st&lt;/code&gt; is poor for image previews)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; commands for exracting and creating compressed archives (&lt;code&gt;zip&lt;/code&gt;, &lt;code&gt;tar&lt;/code&gt;, &lt;code&gt;tar.gz&lt;/code&gt; etc) from here &lt;a href=&quot;https://wiki.archlinux.org/title/ranger#Archives&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://wiki.archlinux.org/title/ranger#Archives&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://wiki.archlinux.org/title/ranger#Archives&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; added both &lt;code&gt;python&lt;/code&gt; snippets to &lt;code&gt;/etc/ranger/config/commands.py&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; added keybindings to &lt;code&gt;/etc/ranger/config/rc.conf&lt;/code&gt; &lt;pre class=&quot;code&quot;&gt; 
map ,n console compress 
map ,m compress temp.zip
map ,e console extract_here &lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; extract a zip/tar/tar.gz by the keystroke &lt;kbd class=&quot;__keyboard&quot;&gt;,&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; create an automatically named &lt;code&gt;temp.zip&lt;/code&gt; archive by selecting the files (&lt;kbd class=&quot;__keyboard&quot;&gt;Space&lt;/kbd&gt;) and then &lt;kbd class=&quot;__keyboard&quot;&gt;,&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;m&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; create a named archive of your choice &lt;kbd class=&quot;__keyboard&quot;&gt;,&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;n&lt;/kbd&gt; &lt;code&gt;your_archive_name.[tar|zip|tar.gz]&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;insert&amp;gt; : touch (new file)

gg   : move to top
G    : move to bottom

&amp;lt;F1&amp;gt; : help
&amp;lt;F2&amp;gt; : rename
&amp;lt;F3&amp;gt; : view (less)
&amp;lt;F4&amp;gt; : edit (vim) 
&amp;lt;F5&amp;gt; : copy
&amp;lt;F6&amp;gt; : cut
&amp;lt;F7&amp;gt; : mkdir
&amp;lt;F8&amp;gt; : delete
&amp;lt;F10&amp;gt;: quit


&amp;lt;space&amp;gt; : select
uv : un-select

yy : yank (copy)
dd : cut

ud : un-cut
uy : un-cut(yank)

pp : paste


gh : GoHome
zh : show hidden dotfiles

Archive operation commands
,n : new named archive 
,m : new &amp;quot;temp.zip&amp;quot;
,e : extract_here
&lt;/pre&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 09/10/22 12:38&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ranger&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ranger&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;18162-20082&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:16,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;20083-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>GM4SLV Allstar 2025</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:gm4slv_allstar_2025</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:start&quot; data-wiki-id=&quot;public:radio:topics:allstar:start&quot;&gt;AllStar Linking&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;gm4slv_allstar_2025&quot;&gt;GM4SLV Allstar 2025&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; New explorations into Allstar and Bridging &lt;/strong&gt;
&lt;/p&gt;
&lt;div class=&quot;plugin_note notetip&quot;&gt;This was an initial experiment, I&amp;#039;ve used what I learned to set up a bigger system (still under development) and described here : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:allstar_expands&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:allstar_expands&quot; data-wiki-id=&quot;public:radio:topics:allstar:allstar_expands&quot;&gt;Explorations&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;GM4SLV Allstar 2025&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;gm4slv_allstar_2025&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-273&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;hardware&quot;&gt;Hardware&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;table sectionedit3&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Platform&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Rapsberry Pi&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Interface&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;CM108 Soundcard - modified&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Radio&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;FT-1500M&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Frequency&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;144.9125MHz&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Allstar Node &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 48148 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Dashboards&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;http://gm4slv.plus.com:42110/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://gm4slv.plus.com:42110/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://gm4slv.plus.com:42110/&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;297-468&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Hardware&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hardware&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;274-469&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;dvswitch_bridging&quot;&gt;DVSwitch Bridging&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To investigate the bridging of Allstar analogue nodes and DMR I installed DVSwitch on the Allstar node. 
&lt;/p&gt;

&lt;p&gt;
Instructions here: &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:asl-to-dmr-bridge.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:asl-to-dmr-bridge.pdf (367.2 KB)&quot;&gt; ASL to DMR Bridge&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The first part is easy, modifying a working Allstar node to add the private node and the USRP channel driver that will be used for the connection to the bridging.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DVSwitch Bridging&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dvswitch_bridging&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;470-850&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;my_configs&quot;&gt;My configs&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_ed4ecf13d41d641e55f7d559ac75cabb_3&quot;&gt;/etc/asterisk/rpt.conf before bridging added &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_ed4ecf13d41d641e55f7d559ac75cabb_3&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;; Radio Repeater configuration &lt;span class=&quot;kw2&quot;&gt;file&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; use with app_rpt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; Your Repeater
&lt;span class=&quot;sy0&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
;
; This is where you define your nodes &lt;span class=&quot;kw2&quot;&gt;which&lt;/span&gt; can be connected to.
;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nodes&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
; Note, &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; you are using automatic update &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; allstar &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; nodes,
; no allstar &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; nodes should be defined here. Only place a definition
; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; your &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; nodes, and private &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;off of allstar &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; nodes here.
&amp;nbsp;
;&lt;span class=&quot;nu0&quot;&gt;481480&lt;/span&gt; = radio&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;4569&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;481480&lt;/span&gt;,NONE	; This must be changed to your node number
&lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt; = radio&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;4569&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt;,NONE	; This must be changed to your node number
                                        ; and iax port number &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; not the default
&amp;nbsp;
;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;481480&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;					; Change this to your assigned node number
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;					; Change this to your assigned node number
&amp;nbsp;
                                        ; Must also be enabled &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; modules.conf
					; Rx audio&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;signalling channel. Choose ONLY &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; per node stanza
&amp;nbsp;
					; Enable the selected channel driver &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; modules.conf &lt;span class=&quot;sy0&quot;&gt;!!!&lt;/span&gt;
;rxchannel = dahdi&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;pseudo	        ; No radio &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;hub&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
rxchannel = SimpleUSB&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usb_48148	; SimpleUSB
; rxchannel = Pi&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;                      ; Raspberry Pi PiTA
; rxchannel = Radio&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usb_48148		; USBRadio &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DSP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; rxchannel = Dahdi&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;			; PCI Quad card
; rxchannel = Beagle&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;			; BeagleBoard
; rxchannel = USRP&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;34001&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;32001&lt;/span&gt;; GNU Radio interface USRP
; rxchannel = Voter&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt;                ; RTCM device
&amp;nbsp;
&amp;nbsp;
duplex = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;                              ; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; = Half duplex with no telemetry tones or hang time.
                                        ;     Special Case: Full duplex &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; linktolink is &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; to yes.
                                        ;     This mode is preferred when interfacing with an external multiport repeater controller.
					;     Comment out idrecording and idtalkover to suppress IDs also
                                        ; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; = Half duplex with telemetry tones and hang time. Does not repeat audio.
                                        ;     This mode is preferred when interfacing a simplex node.
                                        ; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; = Full Duplex with telemetry tones and hang time.
                                        ;     This mode is preferred when interfacing a repeater.
                                        ; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; = Full Duplex with telemetry tones and hang &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt;, but no repeated audio.
                                        ; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; = Full Duplex with telemetry tones and hang time. Repeated audio only when the autopatch is down.
&amp;nbsp;
linktolink = no				; disables forcing physical half-duplex operation of main repeater &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt;
					; still keeping half-duplex semantics &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;optional&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
linkmongain = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;				; Link Monitor Gain adjusts the audio level of monitored nodes when a signal from another node or the &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; receiver is received.
					; If linkmongain is &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; to a negative number the monitored audio will decrease by the &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; amount &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; db.
					; If linkmongain &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; to a positive number monitored audio will increase by the &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; amount &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; db.
					; The value of linkmongain is &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; db. The default value is &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; db.
&amp;nbsp;
erxgain = &lt;span class=&quot;re5&quot;&gt;-3&lt;/span&gt;				; Echolink receive gain adjustment
					; Note: Gain is &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; db-volts &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;20logVI&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;VO&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
etxgain = &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;				; Echolink transmit gain adjustment
					; Note: Gain is &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; db-volts &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;20logVI&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;VO&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
eannmode = &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                           ; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; = Say only node number on echolink connects &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;default = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                                        ; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; = say phonetic call sign only on echolink connects
                                        ; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; = say phonetic call sign and node number on echolink connects
&amp;nbsp;
;controlstates = controlstates		; system control state stanza
&amp;nbsp;
scheduler = schedule			; scheduler stanza
functions = functions			; Repeater Function stanza
phone_functions = functions		; Phone Function stanza
link_functions = functions		; Link Function stanza
&amp;nbsp;
telemetry = telemetry			; Telemetry stanza
morse = morse				; Morse stanza
wait_times = wait-times			; Wait &lt;span class=&quot;kw3&quot;&gt;times&lt;/span&gt; stanza
&amp;nbsp;
context = radio				; dialing context &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; phone
callerid = &lt;span class=&quot;st0&quot;&gt;&amp;quot;Repeater&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;0000000000&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;	; callerid &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; phone calls
accountcode = RADIO                     ; account code &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;optional&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
hangtime = &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;				; squelch &lt;span class=&quot;kw2&quot;&gt;tail&lt;/span&gt; hang &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; ms&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;optional, default &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; seconds, &lt;span class=&quot;nu0&quot;&gt;5000&lt;/span&gt; ms&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
althangtime = &lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;			; longer squelch &lt;span class=&quot;kw2&quot;&gt;tail&lt;/span&gt;
totime = &lt;span class=&quot;nu0&quot;&gt;300000&lt;/span&gt;				; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; mins &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; transmit time-out &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; ms&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;optional, default &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; minutes &lt;span class=&quot;nu0&quot;&gt;180000&lt;/span&gt; ms&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
telemnomdb = &lt;span class=&quot;re5&quot;&gt;-3&lt;/span&gt;				;
telemduckdb = &lt;span class=&quot;re5&quot;&gt;-10&lt;/span&gt;			;
&amp;nbsp;
;idrecording = &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv_id
;idrecording = &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mb7aze_id
idrecording = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;iGM4SLV				; Main ID message
&amp;nbsp;
;idtalkover = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;iGM4SLV				; Talkover ID message
idtalkover = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;iGM4SLV				; Talkover ID message
					; See Telemetry section Example: idrecording = rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt;
idtime = &lt;span class=&quot;nu0&quot;&gt;900000&lt;/span&gt;				; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt; mins &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;id&lt;/span&gt; interval &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; ms&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;optional&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; Default &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; minutes &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;300000&lt;/span&gt; ms&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
politeid = &lt;span class=&quot;nu0&quot;&gt;30000&lt;/span&gt;			; &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; milliseconds before ID timer expires to try and ID &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; the tail. &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;optional, default &lt;span class=&quot;nu0&quot;&gt;30000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
unlinkedct = ct12			; Send a this courtesy tone when the user unkeys &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; the node is not connected to any other nodes. &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;optional, default is none&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
remotect = ct3				; remote linked courtesy tone &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;indicates a remote is &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; the list of links&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
linkunkeyct = ct4			; sent when a transmission received over the &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; unkeys
;nolocallinkct = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;			; Send unlinkedct instead &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; another &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; node is connected to this node &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;hosted on the same PC&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.
&amp;nbsp;
; Supermon smlogger
&lt;span class=&quot;re2&quot;&gt;connpgm&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sbin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;supermon&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;smlogger &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;discpgm&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sbin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;supermon&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;smlogger &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
;connpgm = yourconnectprogram		; Disabled. Execute a program you specify on connect. &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;default&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
					; passes &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;command&lt;/span&gt; line arguments to your program:
					; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;. node number &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; this stanza &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;us&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
					; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;. node number being connected to us &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;them&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;discpgm = yourdisconnectprogram	; Disabled. Execute a program you specify on disconnect. &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;default&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
					; passes &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;command&lt;/span&gt; line arguments to your program:
					; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;. node number &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; this stanza &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;us&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
					; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;. node number being disconnected from us &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;them&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
lnkactenable = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;			; Set to &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; to &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt; the &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; activity timer. Applicable to standard nodes only.
&amp;nbsp;
lnkacttime = &lt;span class=&quot;nu0&quot;&gt;3600&lt;/span&gt;			; Link activity timer &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; seconds.
lnkactmacro = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;73&lt;/span&gt;			; Function to execute when &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; activity timer expires.
lnkacttimerwarn = custom&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;timeout		; Message to play when the &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; activity timer has &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt; seconds left.
&amp;nbsp;
;remote_inact_timeout =	&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;		; Specifies the amount of &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt; without keying from the link. Set to &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; to disable timeout. &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;remote_timeout =			; Session &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt; out &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; remote base. Set to &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; to disable. &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;remote_timeout_warning_freq =		; &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;
;remote_timeout_warning =		; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
;nounkeyct = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;				; Set to a &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; to eliminate courtesy tones and associated delays.
&amp;nbsp;
holdofftelem = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;			; Hold off all telemetry when signal is present on receiver or from connected nodes
					; except when an ID needs to be &lt;span class=&quot;kw1&quot;&gt;done&lt;/span&gt; and there is a signal coming from a connected node.
&amp;nbsp;
telemdefault = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;                        ; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; = telemetry output off
                                        ; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; = telemetry output on &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;default = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                                        ; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; = timed telemetry output on &lt;span class=&quot;kw3&quot;&gt;command&lt;/span&gt; execution and &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; a short &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt; thereafter.
&amp;nbsp;
telemdynamic = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;                        ; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; = disallow &lt;span class=&quot;kw2&quot;&gt;users&lt;/span&gt; to change the &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; telemetry setting with a COP &lt;span class=&quot;kw3&quot;&gt;command&lt;/span&gt;,
                                        ; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; = Allow &lt;span class=&quot;kw2&quot;&gt;users&lt;/span&gt; to change the setting with a COP command. &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;default = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
beaconing = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;				; Send ID regardless of repeater activity &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Required &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; the UK, but probably illegal &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; the US&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
parrotmode = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;				; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; = Parrot Off &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;default = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
					; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; = Parrot On Command
					; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; = Parrot Always
					; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; = Parrot Once by Command
&amp;nbsp;
parrottime = &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;			; Set the amount of &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; milliseconds
					; to &lt;span class=&quot;kw3&quot;&gt;wait&lt;/span&gt; before parroting what was received
&amp;nbsp;
;&lt;span class=&quot;re2&quot;&gt;rxnotch&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1065&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;                        ; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Optional&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; Notch a particular frequency &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; a specified
                                        ; b&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;w. app_rpt must have been compiled with
                                        ; the notch option
&amp;nbsp;
startup_macro = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;81&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;70&lt;/span&gt;
&amp;nbsp;
; nodenames = &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames.callsign	; Point to alternate nodename sound directory
&amp;nbsp;
; Stream your node audio to Broadcastify or similar. See https:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;wiki.allstarlink.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;wiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Stream_Node_Audio_to_Broadcastify
; outstreamcmd = &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;sh&lt;/span&gt;,-c,&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;lame&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--preset&lt;/span&gt; cbr &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-r&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-m&lt;/span&gt; m &lt;span class=&quot;re5&quot;&gt;-s&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--bitwidth&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt; - - &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ezstream &lt;span class=&quot;re5&quot;&gt;-qvc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ezstream.xml
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
; Need &lt;span class=&quot;kw2&quot;&gt;more&lt;/span&gt; information on these
&amp;nbsp;
;extnodes = extnodes-different	; section &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; extnodefile containing dynamic node information &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;optional&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;extnodefile = &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt_extnodes	; Points to nodelist &lt;span class=&quot;kw2&quot;&gt;file&lt;/span&gt; containing dynamic node info default = &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt_extnodes &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;optional&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;extnodefile2 =			; Is this a list of node files? Possible a list of private nodes or a list of static IPs &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; known nodes????
;nodenames = &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;foo&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;names         ; locaton of node sound files default = &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames
;archivedir = &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;tmp              ; defines and enables activity recording into specified directory &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;optional&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;monminblocks = &lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;            ; Min 1K blocks to be left on partition &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;will not save monitor output &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; disk too full&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
;                               ; The tailmessagetime,tailsquashedtime, and tailmessagelist need to be &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt;
;                               ; to support &lt;span class=&quot;kw2&quot;&gt;tail&lt;/span&gt; messages. They can be omitted otherwise.
;tailmessagetime = &lt;span class=&quot;nu0&quot;&gt;300000&lt;/span&gt;       ; Play a &lt;span class=&quot;kw2&quot;&gt;tail&lt;/span&gt; message every &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; mins
;tailsquashedtime = &lt;span class=&quot;nu0&quot;&gt;30000&lt;/span&gt;       ; If squashed by another user,
;                               ; try again after &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt; seconds
;tailmessagelist = msg1,msg2    ; list of messages to be played &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;tail&lt;/span&gt; message
&amp;nbsp;
; alt_functions
; ctgroup
; dphone_functions
; idtime
; iobase
; iospeed
; locallist
; mars		Remote Base
; memory
; nobusyout
; nodes
; nolocallinkct
; notelemtx
; outxlat
; parrot
; propagate_phonedtmf
; rptnode
; rptinactmacro  Macro to execute when inactivity timer expires
; rptinacttime   Inactivity timer &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; seconds  &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; seconds disables feature&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; rxnotch	Optional Audio notch
; simplexphonedelay
; tonemacro
; tonezone
; txlimits
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;;
&amp;nbsp;
&amp;nbsp;
; &lt;span class=&quot;sy0&quot;&gt;***&lt;/span&gt; Status Reporting &lt;span class=&quot;sy0&quot;&gt;***&lt;/span&gt;
&amp;nbsp;
; Comment the following statpost line stop to reporting of the status of your node to stats.allstarlink.org
statpost_url = http:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;stats.allstarlink.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;uhandler ; Status updates
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;functions&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
; Prefix	Functions
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;		Disconnect Link
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;		Monitor Link
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;		Connect Link
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;		Command Mode
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;		Macros
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;		User Functions
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;		Connection Status&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Functions
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;		User Functions
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;		User Functions
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;		User Functions
&amp;nbsp;
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;A		User Functions
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;B		User Functions
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;C		User Functions
; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;D		User Functions
&amp;nbsp;
&amp;nbsp;
; Mandatory Command Codes
&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;		; Disconnect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;		; Connect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--&lt;/span&gt; monitor only
&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;		; Connect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--&lt;/span&gt; tranceive
&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;		; Enter &lt;span class=&quot;kw3&quot;&gt;command&lt;/span&gt; mode on specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;70&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;		; System status
&amp;nbsp;
;&lt;span class=&quot;nu0&quot;&gt;99&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;              ; PTT &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;phone mode only&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
; End Mandatory Command Codes
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;73&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;		; Disconnect All Links
&lt;span class=&quot;nu0&quot;&gt;74&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;		; Reconnect links disconnected with &lt;span class=&quot;st0&quot;&gt;&amp;quot;disconnect all links&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; = status,&lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;         ; Force ID &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; only&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;81&lt;/span&gt; = status,&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;         ; Give Time of Day &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; only&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;91&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt;		; Enable Parrot Mode
&lt;span class=&quot;nu0&quot;&gt;92&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt;		; Disable Parrot Mode
&lt;span class=&quot;nu0&quot;&gt;93&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt;		; Parrot Once &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; parrot mode is disabled
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;98&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;		; System &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;99&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;		; System disable
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;901&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;				; System warm boot
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&amp;nbsp;
; Macro Commands
&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; = macro
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;;
&amp;nbsp;
; Autopatch Commands
; Note, This may be a good place &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; other &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; digit frequently used commands
&amp;nbsp;
;&lt;span class=&quot;nu0&quot;&gt;61&lt;/span&gt; = autopatchup,noct = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,farenddisconnect = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,dialtime = &lt;span class=&quot;nu0&quot;&gt;20000&lt;/span&gt;  ; Autopatch up
;&lt;span class=&quot;nu0&quot;&gt;62&lt;/span&gt; = autopatchdn                                                 ; Autopatch down
&amp;nbsp;
; autopatchup can optionally take comma delimited &lt;span class=&quot;re2&quot;&gt;setting&lt;/span&gt;=value pairs:
&amp;nbsp;
; context = string		; Override default context with &lt;span class=&quot;st0&quot;&gt;&amp;quot;string&amp;quot;&lt;/span&gt;
; dialtime = ms			; Specify the max number of milliseconds between phone number digits &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt; milliseconds = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; second&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; farenddisconnect = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;		; Automatically disconnect when called party hangs up
; noct = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;			; Don&lt;span class=&quot;st_h&quot;&gt;&#039;t send repeater courtesy tone during autopatch calls
; quiet = 1			; Don&#039;&lt;/span&gt;t send dial tone, or connect messages. Do not send &lt;span class=&quot;kw2&quot;&gt;patch&lt;/span&gt; down message when called party hangs up
				; Example: &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt;=autopatchup,&lt;span class=&quot;re2&quot;&gt;dialtime&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;20000&lt;/span&gt;,&lt;span class=&quot;re2&quot;&gt;noct&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;re2&quot;&gt;farenddisconnect&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;;
&amp;nbsp;
; Status Commands
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; - Force ID &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;global&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; - Give Time of Day &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;global&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; - Give software Version &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;global&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; - Give GPS location info
; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; - Last &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dtmf&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; user
; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt; - Force ID &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; only&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt; - Give Time of Day &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; only&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
;&lt;span class=&quot;nu0&quot;&gt;721&lt;/span&gt; = status,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;          ; Force ID &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;global&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;722&lt;/span&gt; = status,&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;          ; Give Time of Day &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;global&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;723&lt;/span&gt; = status,&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;          ; Give software Version &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;global&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;724&lt;/span&gt; = status,&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;          ; Give GPS location info
;&lt;span class=&quot;nu0&quot;&gt;725&lt;/span&gt; = status,&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;          ; Last &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dtmf&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; user
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;;
&amp;nbsp;
; Link Commands
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; - Disconnect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; - Connect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--&lt;/span&gt; monitor only
; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; - Connect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--&lt;/span&gt; tranceive
; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; - Enter &lt;span class=&quot;kw3&quot;&gt;command&lt;/span&gt; mode on specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; - System status
; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; - Disconnect all links
; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt; - Last Node to Key Up
; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; - Connect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; monitor only
; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt; - Send Text Message &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;,&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;destnodeno or &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; all&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;,Message Text, etc.
; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; - Disconnect all RANGER links &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;except permalinks&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt; - Disconnect a previously permanently connected &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt; - Permanently connect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--&lt;/span&gt; monitor only
; &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt; - Permanently connect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--&lt;/span&gt; tranceive
; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt; - Full system status &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;all nodes&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt; - Reconnect links disconnected with &lt;span class=&quot;st0&quot;&gt;&amp;quot;disconnect all links&amp;quot;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt; - MDC &lt;span class=&quot;kw3&quot;&gt;test&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; diag purposes&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt; - Permanently Connect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; monitor only
&amp;nbsp;
; ilink commands &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; through &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; are defined &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; the Mandatory Command section
&amp;nbsp;
;&lt;span class=&quot;nu0&quot;&gt;806&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;			; Disconnect all links
;&lt;span class=&quot;nu0&quot;&gt;827&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;			; Last Node to Key Up
;&lt;span class=&quot;nu0&quot;&gt;808&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;			; Connect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; monitor only
;&lt;span class=&quot;nu0&quot;&gt;809&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt;,&lt;span class=&quot;st0&quot;&gt;&amp;quot;Testing&amp;quot;&lt;/span&gt;	; would send a text message to node &lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt; replace &lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt; with &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; all connected nodes
;&lt;span class=&quot;nu0&quot;&gt;810&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;			; Disconnect all RANGER links &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;except permalinks&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;811&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;			; Disconnect a previously permanently connected &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;812&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;			; Permanently connect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--&lt;/span&gt; monitor only
;&lt;span class=&quot;nu0&quot;&gt;823&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;			; Permanently connect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--&lt;/span&gt; tranceive
;&lt;span class=&quot;nu0&quot;&gt;815&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;			; Full system status &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;all nodes&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;817&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;			; MDC &lt;span class=&quot;kw3&quot;&gt;test&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; diag purposes&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;818&lt;/span&gt; = ilink,&lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;			; Permanently Connect specified &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; monitor only
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&amp;nbsp;
; Control operator &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cop&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; functions.
; Change these to something other than these codes listed below&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;
; Uncomment &lt;span class=&quot;kw2&quot;&gt;as&lt;/span&gt; needed.
&amp;nbsp;
;&lt;span class=&quot;nu0&quot;&gt;901&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;				; System warm boot
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;904&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;				; Test tone on&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;off &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;toggle&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;905&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;				; Dump system variables on console &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;debug use only&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;907&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;				; Time out timer &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;908&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;				; Time out timer disable
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;909&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;				; Autopatch &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;910&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;				; Autopatch disable
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;911&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;				; User linking functions &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;912&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;				; User linking functions disable
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;913&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;				; Query system control state
; &lt;span class=&quot;nu0&quot;&gt;914&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;				; Set system control state
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;915&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;				; Scheduler &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;916&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;				; Scheduler disable
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;917&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;				; User functions &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt;, &lt;span class=&quot;kw2&quot;&gt;id&lt;/span&gt;, etc&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;918&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;				; User functions disable
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;919&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;				; Select alternate hang &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;althangtime&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;920&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;				; Select standard hangtime &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;hangtime&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;924&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;				; Flush all telemetry
; &lt;span class=&quot;nu0&quot;&gt;925&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;				; Query &lt;span class=&quot;kw2&quot;&gt;last&lt;/span&gt; node un-keyed
; &lt;span class=&quot;nu0&quot;&gt;926&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;26&lt;/span&gt;				; Query all nodes keyed&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;unkeyed
; &lt;span class=&quot;nu0&quot;&gt;927&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;27&lt;/span&gt;				; Reset DAQ minimum on a pin
; &lt;span class=&quot;nu0&quot;&gt;928&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;28&lt;/span&gt;				; Reset DAQ maximum on a pin
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;930&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;				; Recall Memory Setting &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; Attached Xcvr
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;931&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;				; Channel Selector &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; Parallel Programmed Xcvr
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;932&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;				; Touchtone pad test: &lt;span class=&quot;kw3&quot;&gt;command&lt;/span&gt; + Digit string + &lt;span class=&quot;co0&quot;&gt;# to playback all digits pressed&lt;/span&gt;
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;933&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;				; Local Telemetry Output Enable
; &lt;span class=&quot;nu0&quot;&gt;934&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;				; Local Telemetry Output Disable
; &lt;span class=&quot;nu0&quot;&gt;935&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;35&lt;/span&gt;				; Local Telemetry Output on Demand
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;936&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;				; Foreign Link Local Output Path Enable
; &lt;span class=&quot;nu0&quot;&gt;937&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;37&lt;/span&gt;				; Foreign Link Local Output Path Disable
; &lt;span class=&quot;nu0&quot;&gt;938&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;38&lt;/span&gt;				; Foreign Link Local Output Path Follows Local Telemetry
; &lt;span class=&quot;nu0&quot;&gt;939&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;39&lt;/span&gt;				; Foreign Link Local Output Path on Demand
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;942&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt;				; Echolink announce node &lt;span class=&quot;co0&quot;&gt;# only&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;943&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;43&lt;/span&gt;				; Echolink announce node Callsign only
; &lt;span class=&quot;nu0&quot;&gt;944&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;44&lt;/span&gt;				; Echolink announce node &lt;span class=&quot;co0&quot;&gt;# &amp;amp; Callsign&lt;/span&gt;
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;945&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;45&lt;/span&gt;				; Link Activity timer &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;945&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;46&lt;/span&gt;				; Link Activity timer disable
; &lt;span class=&quot;nu0&quot;&gt;947&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;47&lt;/span&gt;				; Reset &lt;span class=&quot;st0&quot;&gt;&amp;quot;Link Config Changed&amp;quot;&lt;/span&gt; Flag
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;948&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt;				; Send Page Tone &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Tone specs separated by parenthesis&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;949&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;49&lt;/span&gt;				; Disable incoming connections &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;control state noice&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;950&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;				; Enable incoming connections &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;control state noicd&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;951&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;51&lt;/span&gt;				; Enable &lt;span class=&quot;kw2&quot;&gt;sleep&lt;/span&gt; mode
; &lt;span class=&quot;nu0&quot;&gt;952&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;52&lt;/span&gt;				; Disable &lt;span class=&quot;kw2&quot;&gt;sleep&lt;/span&gt; mode
; &lt;span class=&quot;nu0&quot;&gt;953&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;53&lt;/span&gt;				; Wake up from &lt;span class=&quot;kw2&quot;&gt;sleep&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;954&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;54&lt;/span&gt;				; Go to &lt;span class=&quot;kw2&quot;&gt;sleep&lt;/span&gt;
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;956&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;56&lt;/span&gt;                            ; Rx CTCSS Enable
; &lt;span class=&quot;nu0&quot;&gt;957&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;57&lt;/span&gt;                            ; Rx CTCSS Disable
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;958&lt;/span&gt; = cop.58                            ; Tx CTCSS On Input only Enable
; &lt;span class=&quot;nu0&quot;&gt;959&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;59&lt;/span&gt;                            ; Tx CTCSS On Input only Disable
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;960&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;                            ; Send MDC-&lt;span class=&quot;nu0&quot;&gt;1200&lt;/span&gt; Burst &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cop,&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,&lt;span class=&quot;kw3&quot;&gt;type&lt;/span&gt;,UnitID&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;,DestID,SubCode&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;                                         ; Type is &lt;span class=&quot;st_h&quot;&gt;&#039;I&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; PttID, &lt;span class=&quot;st_h&quot;&gt;&#039;E&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; Emergency, and &lt;span class=&quot;st_h&quot;&gt;&#039;C&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; Call
;                                         ; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SelCall or Alert&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, or &lt;span class=&quot;st_h&quot;&gt;&#039;SX&#039;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; STS &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ststus&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, where X is &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;-F.
;                                         ; DestID and subcode are only specified &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt;  the &lt;span class=&quot;st_h&quot;&gt;&#039;C&#039;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;type&lt;/span&gt; message.
;                                         ; UnitID is the &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; systems UnitID. DestID is the MDC1200 ID of
;                                         ; the radio being called, and the subcodes are &lt;span class=&quot;kw2&quot;&gt;as&lt;/span&gt; follows:
;                                         ; Subcode &lt;span class=&quot;st_h&quot;&gt;&#039;8205&#039;&lt;/span&gt; is Voice Selective Call &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; Spectra &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;Call&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;                                         ; Subcode &lt;span class=&quot;st_h&quot;&gt;&#039;8015&#039;&lt;/span&gt; is Voice Selective Call &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; Maxtrac &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;SC&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; or
;                                         ; Astro-Saber&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;Call&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;                                         ; Subcode &lt;span class=&quot;st_h&quot;&gt;&#039;810D&#039;&lt;/span&gt; is Call Alert &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;like Maxtrac &lt;span class=&quot;st_h&quot;&gt;&#039;CA&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;961&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;61&lt;/span&gt;                            ; Send Message to USB to control GPIO pins &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cop,&lt;span class=&quot;nu0&quot;&gt;61&lt;/span&gt;,&lt;span class=&quot;re2&quot;&gt;GPIO1&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;,&lt;span class=&quot;re2&quot;&gt;GPIO4&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.....&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;962&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;62&lt;/span&gt;                            ; Send Message to USB to control GPIO pins, quietly &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cop,&lt;span class=&quot;nu0&quot;&gt;62&lt;/span&gt;,&lt;span class=&quot;re2&quot;&gt;GPIO1&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;,&lt;span class=&quot;re2&quot;&gt;GPIO4&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.....&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
; &lt;span class=&quot;nu0&quot;&gt;963&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;                            ; Send pre-configred APRSTT notification &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cop,&lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;,CALL&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;,OVERLAYCHR&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;964&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;                            ; Send pre-configred APRSTT notification, quietly &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cop,&lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt;,CALL&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;,OVERLAYCHR&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; &lt;span class=&quot;nu0&quot;&gt;965&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;65&lt;/span&gt;                            ; Send POCSAG page &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;equipped channel types only&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;functions-remote&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;                            ; Retrieve Memory
&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                            ; Set freq.
&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;                            ; Set tx PL tone
&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;                            ; Set rx PL tone
&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;                         ; Rx PL off
&lt;span class=&quot;nu0&quot;&gt;41&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;101&lt;/span&gt;                         ; Rx PL on
&lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;102&lt;/span&gt;                         ; Tx PL off
&lt;span class=&quot;nu0&quot;&gt;43&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;103&lt;/span&gt;                         ; Tx PL on
&lt;span class=&quot;nu0&quot;&gt;44&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;104&lt;/span&gt;                         ; Low Power
&lt;span class=&quot;nu0&quot;&gt;45&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;105&lt;/span&gt;                         ; Medium Power
&lt;span class=&quot;nu0&quot;&gt;46&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;106&lt;/span&gt;                         ; High Power
&lt;span class=&quot;nu0&quot;&gt;711&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;107&lt;/span&gt;                        ; Bump &lt;span class=&quot;re5&quot;&gt;-20&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;714&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;108&lt;/span&gt;                        ; Bump &lt;span class=&quot;re5&quot;&gt;-100&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;717&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;109&lt;/span&gt;                        ; Bump &lt;span class=&quot;re5&quot;&gt;-500&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;713&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;110&lt;/span&gt;                        ; Bump +&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;716&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;111&lt;/span&gt;                        ; Bump +&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;719&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;112&lt;/span&gt;                        ; Bump +&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;721&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;113&lt;/span&gt;                        ; Scan - slow
&lt;span class=&quot;nu0&quot;&gt;724&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;114&lt;/span&gt;                        ; Scan - quick
&lt;span class=&quot;nu0&quot;&gt;727&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;115&lt;/span&gt;                        ; Scan - fast
&lt;span class=&quot;nu0&quot;&gt;723&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;116&lt;/span&gt;                        ; Scan + slow
&lt;span class=&quot;nu0&quot;&gt;726&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;117&lt;/span&gt;                        ; Scan + quick
&lt;span class=&quot;nu0&quot;&gt;729&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;118&lt;/span&gt;                        ; Scan + fast
&lt;span class=&quot;nu0&quot;&gt;79&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;119&lt;/span&gt;                         ; Tune
&lt;span class=&quot;nu0&quot;&gt;51&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;                           ; Long status query
&lt;span class=&quot;nu0&quot;&gt;52&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;140&lt;/span&gt;				; Short status query
&lt;span class=&quot;nu0&quot;&gt;67&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;210&lt;/span&gt;				; Send a &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;69&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;211&lt;/span&gt;				; Send a &lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;91&lt;/span&gt; = remote,&lt;span class=&quot;nu0&quot;&gt;99&lt;/span&gt;,CALLSIGN,LICENSETAG     ; Remote base login.
                                        ; Define a different dtmf sequence &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; each user &lt;span class=&quot;kw2&quot;&gt;which&lt;/span&gt; is
                                        ; authorized to use the remote base to control access to it.
                                        ; For examble &lt;span class=&quot;nu0&quot;&gt;9139583&lt;/span&gt;=remote,&lt;span class=&quot;nu0&quot;&gt;99&lt;/span&gt;,WB6NIL,G would grant access to
                                        ; the remote base and announce WB6NIL &lt;span class=&quot;kw2&quot;&gt;as&lt;/span&gt; being logged in.
                                        ; Another entry, &lt;span class=&quot;nu0&quot;&gt;9148351&lt;/span&gt;=remote,&lt;span class=&quot;nu0&quot;&gt;99&lt;/span&gt;,WA6ZFT,E would grant access to
                                        ; the remote base and announce WA6ZFT &lt;span class=&quot;kw2&quot;&gt;as&lt;/span&gt; being logged in.
                                        ; When the remote base is disconnected from the originating node, the
                                        ; user will be logged out. The LICENSETAG argument is used to enforce
					; tx frequency limits. See &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;txlimits&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; below.
&lt;span class=&quot;nu0&quot;&gt;85&lt;/span&gt; = cop,&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;                              ; Remote base telephone key
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;telemetry&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
; Telemetry entries can be shared across all repeaters, or defined &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; each repeater.
; Can be a tone sequence, morse string, or a &lt;span class=&quot;kw2&quot;&gt;file&lt;/span&gt;
;
; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t - Tone escape sequence
;
; Tone sequences consist of &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; or &lt;span class=&quot;kw2&quot;&gt;more&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;-tuple entries &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq1, freq2, duration, amplitude&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; Single frequencies are created by setting freq1 or freq2 to zero.
;
; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;m - Morse escape sequence
;
; Sends Morse code at the telemetry amplitude and telemetry frequency &lt;span class=&quot;kw2&quot;&gt;as&lt;/span&gt; defined &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; the
; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;morse&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; section.
;
; Follow with an alphanumeric string
;
; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;i - Morse ID escape sequence
;
; Sends Morse code at the ID amplitude and ID frequency &lt;span class=&quot;kw2&quot;&gt;as&lt;/span&gt; defined &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; the
; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;morse&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; section.
;
; path&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;to&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sound&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;file&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;without&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;extension
;
; Send the sound &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; place of a constructed tone. Do not include the &lt;span class=&quot;kw2&quot;&gt;file&lt;/span&gt; extension
; Example: ct8 = rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bloop
; Example: idrecording = rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt;
&amp;nbsp;
ct1 = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;350&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;660&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
ct2 = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;660&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;880&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;150&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
ct3 = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;440&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;150&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;4096&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
ct4 = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;550&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;150&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
ct5 = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;660&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;150&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
ct6 = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;880&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;150&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
ct7 = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;660&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;440&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;150&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
ct8 = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;700&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;1100&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;150&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
ranger = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1800&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;3072&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1800&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;3072&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1800&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;3072&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1800&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;3072&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1800&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;3072&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1800&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;3072&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;150&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
remotemon = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;mR
;remotemon = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1209&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;                                  ; &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; courtesy tone when receive only
remotetx = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;mK
;remotetx = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1633&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;3000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1209&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;3000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;		; &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; courtesy tone when linked Trancieve mode
cmdmode = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;900&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;903&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;functcomplete = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;mW
functcomplete = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
remcomplete = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;650&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;650&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;650&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
pfxtone = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;t&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;350&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;440&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;30000&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;3072&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
patchup = rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;callproceeding
patchdown = rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;callterminated
&amp;nbsp;
ct12 = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;me
ct13 = &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;mR
&amp;nbsp;
; As far &lt;span class=&quot;kw2&quot;&gt;as&lt;/span&gt; what the numbers mean,
; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;000,000,010,000&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;   &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;-------amplitude
;   &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;-------------duration
;   &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;-------------------Tone &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
;   &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;-------------------------Tone &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
; So, with &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; That says No Tone1, No Tone2, 10ms duration, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; Amplitude.
; Use it &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; a delay.  Fine tuning &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; how long before telemetry is sent, &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; conjunction with the telemdelay parameter&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; The numbers, like &lt;span class=&quot;nu0&quot;&gt;350&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;440&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt; are 350Hz, 440Hz, 10ms delay, amplitude of &lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;.
&amp;nbsp;
; Morse code parameters, these are common to all repeaters.
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;morse&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
speed = &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;				; Approximate speed &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; WPM
frequency = &lt;span class=&quot;nu0&quot;&gt;600&lt;/span&gt;				; Morse Telemetry Frequency
amplitude = &lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;			; Morse Telemetry Amplitude
idfrequency = &lt;span class=&quot;nu0&quot;&gt;1065&lt;/span&gt;			; Morse ID Frequency
idamplitude = &lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt;			; Morse ID Amplitude
&amp;nbsp;
;
; This section allows &lt;span class=&quot;kw3&quot;&gt;wait&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;times&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; telemetry events to be adjusted
; A section &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;wait&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;times&lt;/span&gt; can be defined &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; every repeater
;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;wait-times&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
telemwait = &lt;span class=&quot;nu0&quot;&gt;400&lt;/span&gt;                        ; Time to &lt;span class=&quot;kw3&quot;&gt;wait&lt;/span&gt; before sending most telemetry
idwait = &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;                            ; Time to &lt;span class=&quot;kw3&quot;&gt;wait&lt;/span&gt; before starting ID
unkeywait = &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;                        ; Time to &lt;span class=&quot;kw3&quot;&gt;wait&lt;/span&gt; after unkey before sending CT&lt;span class=&quot;st_h&quot;&gt;&#039;s and link telemetry
calltermwait = 2000                     ; Time to wait before announcing &amp;quot;call terminated&amp;quot;
&amp;nbsp;
; Memories for remote bases
&amp;nbsp;
[memory]
;00 = 146.580,100.0,m
;01 = 147.030,103.5,m+t
;02 = 147.240,103.5,m+t
;03 = 147.765,79.7,m-t
;04 = 146.460,100.0,m
;05 = 146.550,100.0,m
&amp;nbsp;
; Place command macros here
&amp;nbsp;
[macro]
&amp;nbsp;
&amp;nbsp;
11 = *141223# ; disc. hubnet
21 = *241223# ; monitor hubnet
31 = *341223# ; transceive hubnet
&amp;nbsp;
&amp;nbsp;
12 = *1424611# ; disc MilNet
22 = *2424611# ; monitor MilNet
32 = *3424611# ; transceive MilNet
&amp;nbsp;
;13 = *129332# ; disc Alaska
;23 = *229332# ; monitor Alaska
;33 = *329332# ; transceive Alaska
&amp;nbsp;
;14 = *154383# ; disc CQ North
;24 = *254383# ; monitor CQ North
;34 = *354383# ; transceive CQ North
&amp;nbsp;
;191 = *140894# ; disconnect hubnet Echo
;391 = *340894# ; connect hubnet echo
&amp;nbsp;
19 = *13009999#	; dis echolink echotest
39 = *33009999#	; con echolink echotest
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
; Data Acquisition configuration
&amp;nbsp;
;[daq-list]
;device = device_name1
;device = device_name2
&amp;nbsp;
;Where: device_name1 and device_name2 are stanzas you define in this file
&amp;nbsp;
;device = daq-cham-1
&amp;nbsp;
; Device name
&amp;nbsp;
;[daq-cham-1]				; Defined in [daq-list]
;hwtype = uchameleon			; DAQ hardware type
;devnode = /dev/ttyUSB0			; DAQ device node (if required)
;1 = inadc				; Pin definition for an ADC channel
;2 = inadc
;3 = inadc
;4 = inadc
;5 = inadc
;6 = inadc
;7 = inadc
;8 = inadc
;9 = inp				; Pin definition for an input with a weak pullup resistor
;10 = inp
;11 = inp
;12 = inp
;13 = in				; Pin definition for an input without a weak pullup resistor
;14 = out				; Pin definition for an output
;15 = out
;16 = out
;17 = out
;18 = out
&amp;nbsp;
;[meter-faces]
&amp;nbsp;
;face = scale(scalepre,scalediv,scalepost),word/?,...
;
; scalepre = offset to add before dividing with scalediv
; scalediv = full scale/number of whole units (e.g. 256/20 or 12.8 for 20 volts).
; scalepost = offset to add after dividing with scalediv
;
;face = range(X-Y:word,X2-Y2:word,...),word/?,...
;face = bit(low-word,high-word),word/?,...
;
; word/? is either a word in /var/lib/asterisk/sounds or one of its subdirectories,
; or a question mark which is  a placeholder for the measured value.
;
;
; Battery voltage 0-20 volts
;batvolts = scale(0,12.8,0),rpt/thevoltageis,?,ha/volts
; 4 quadrant wind direction
;winddir = range(0-33:north,34-96:west,97-160:south,161-224:east,225-255:north),rpt/thewindis,?
; LM34 temperature sensor with 130 deg. F full scale
;lm34f = scale(0,1.969,0),rpt/thetemperatureis,?,degrees,fahrenheit
; Status poll (non alarmed)
;light = bit(ha/off,ha/on),ha/light,?
&amp;nbsp;
;[alarms]
;
;tag = device,pin,node,ignorefirst,func-low,func-hi
;
;tag = a unique name for the alarm
;device = daq device to poll
;pin = the device pin to be monitored
;ignorefirstalarm = set to 1 to throwaway first alarm event, or 0 to report it
;node = the node number to execute the function on
;func-low = the DTMF function to execute on a high to low transition
;func-high = the DTMF function to execute on a low to high transition
;
; a  &#039;&lt;/span&gt;-&lt;span class=&quot;st_h&quot;&gt;&#039; as a function name is shorthand for no-operation
;
;door = daq-cham-1,9,1,2017,*7,-
;pwrfail = daq-cham-1,10,0,2017,*911111,-
;
; Control states
; Allow several control operator functions to be changed at once using one command (good for scheduling)
;
;[controlstates]
;statenum = copcmd,[copcmd]...
;0 = rptena,lnkena,apena,totena,ufena,noicd  ; Normal operation
;1 = rptena,lnkena,apdis,totdis,ufena,noice  ; Net and news operation
;2 = rptena,lnkdis,apdis,totena,ufdis,noice  ; Repeater only operation
&amp;nbsp;
; Scheduler - execute a macro at a given time
&amp;nbsp;
[schedule]
;dtmf_function =  m h dom mon dow  ; ala cron, star is implied
;8 = 55 12 * * *   ; at midnight, execute macro 2.
&amp;nbsp;
; See https://wiki.allstarlink.org/wiki/Event_Management
[events]
&amp;nbsp;
#includeifexists custom/rpt.conf&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_ed4ecf13d41d641e55f7d559ac75cabb_4&quot;&gt;/etc/asterisk/rpt.conf after bridging added &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_ed4ecf13d41d641e55f7d559ac75cabb_4&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;; Radio Repeater configuration &lt;span class=&quot;kw2&quot;&gt;file&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; use with app_rpt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; Your Repeater
&lt;span class=&quot;sy0&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
;
; This is where you define your nodes &lt;span class=&quot;kw2&quot;&gt;which&lt;/span&gt; can be connected to.
;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;nodes&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
; Note, &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; you are using automatic update &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; allstar &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; nodes,
; no allstar &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; nodes should be defined here. Only place a definition
; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; your &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; nodes, and private &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;off of allstar &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; nodes here.
&amp;nbsp;
;&lt;span class=&quot;nu0&quot;&gt;481480&lt;/span&gt; = radio&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;4569&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;481480&lt;/span&gt;,NONE	; This must be changed to your node number
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;1999&lt;/span&gt; = radio&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;4569&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1999&lt;/span&gt;,NONE
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt; = radio&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;4569&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt;,NONE	; This must be changed to your node number
                                        ; and iax port number &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; not the default
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1999&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
rxchannel = USRP&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;34001&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;31001&lt;/span&gt; ; Use the USRP channel driver. Must be enabled &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; modules.conf
 ; 127.0.0.1 = IP of the target application
 ; &lt;span class=&quot;nu0&quot;&gt;34001&lt;/span&gt; = UDP port the target application is listening on
 ; &lt;span class=&quot;nu0&quot;&gt;32001&lt;/span&gt; = UDP port ASL is listening on
duplex = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; ; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; = Half duplex with no telemetry tones or hang time. Ah, but Allison STILL talks&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;
hangtime = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; ; squelch &lt;span class=&quot;kw2&quot;&gt;tail&lt;/span&gt; hang &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
althangtime = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; ; longer squelch &lt;span class=&quot;kw2&quot;&gt;tail&lt;/span&gt; hang &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
holdofftelem = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; ; Hold off all telemetry when signal is present on receiver or from connected nodes
 ; except when an ID needs to be &lt;span class=&quot;kw1&quot;&gt;done&lt;/span&gt; and there is a signal coming from a connected node.
telemdefault = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; ; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; = telemetry output off. Don&lt;span class=&quot;st_h&quot;&gt;&#039;t send Allison to DMR !!!!!!!!!!!!!!!!! Trust me.
telemdynamic = 0 ; 0 = disallow users to change the local telemetry setting with a COP command,
linktolink = no ; disables forcing physical half-duplex operation of main repeater while
 ; still keeping half-duplex semantics (optional)
nounkeyct = 1 ; Set to a 1 to eliminate courtesy tones and associated delays.
totime = 180000 ; transmit time-out time (in ms) (optional, default 3 minutes 180000 ms)
idrecording = |ie ; id recording or morse string see http://ohnosec.org/drupal/node/87
idtalkover = |ie ; Talkover ID (optional) default is none see http://ohnosec.org/drupal/node/129
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
;[481480]					; Change this to your assigned node number
[48148]					; Change this to your assigned node number
&amp;nbsp;
                                        ; Must also be enabled in modules.conf
					; Rx audio/signalling channel. Choose ONLY 1 per node stanza
&amp;nbsp;
					; Enable the selected channel driver in modules.conf !!!
;rxchannel = dahdi/pseudo	        ; No radio (hub)
rxchannel = SimpleUSB/usb_48148	; SimpleUSB
; rxchannel = Pi/1                      ; Raspberry Pi PiTA
; rxchannel = Radio/usb_48148		; USBRadio (DSP)
; rxchannel = Dahdi/1			; PCI Quad card
; rxchannel = Beagle/1			; BeagleBoard
; rxchannel = USRP/127.0.0.1:34001:32001; GNU Radio interface USRP
; rxchannel = Voter/48148                ; RTCM device
&amp;nbsp;
&amp;nbsp;
duplex = 1                              ; 0 = Half duplex with no telemetry tones or hang time.
                                        ;     Special Case: Full duplex if linktolink is set to yes.
                                        ;     This mode is preferred when interfacing with an external multiport repeater controller.
					;     Comment out idrecording and idtalkover to suppress IDs also
                                        ; 1 = Half duplex with telemetry tones and hang time. Does not repeat audio.
                                        ;     This mode is preferred when interfacing a simplex node.
                                        ; 2 = Full Duplex with telemetry tones and hang time.
                                        ;     This mode is preferred when interfacing a repeater.
                                        ; 3 = Full Duplex with telemetry tones and hang time, but no repeated audio.
                                        ; 4 = Full Duplex with telemetry tones and hang time. Repeated audio only when the autopatch is down.
&amp;nbsp;
linktolink = no				; disables forcing physical half-duplex operation of main repeater while
					; still keeping half-duplex semantics (optional)
&amp;nbsp;
linkmongain = 0				; Link Monitor Gain adjusts the audio level of monitored nodes when a signal from another node or the local receiver is received.
					; If linkmongain is set to a negative number the monitored audio will decrease by the set amount in db.
					; If linkmongain set to a positive number monitored audio will increase by the set amount in db.
					; The value of linkmongain is in db. The default value is 0 db.
&amp;nbsp;
erxgain = -3				; Echolink receive gain adjustment
					; Note: Gain is in db-volts (20logVI/VO)
etxgain = 3				; Echolink transmit gain adjustment
					; Note: Gain is in db-volts (20logVI/VO)
eannmode = 2                           ; 1 = Say only node number on echolink connects (default = 1)
                                        ; 2 = say phonetic call sign only on echolink connects
                                        ; 3 = say phonetic call sign and node number on echolink connects
&amp;nbsp;
;controlstates = controlstates		; system control state stanza
&amp;nbsp;
scheduler = schedule			; scheduler stanza
functions = functions			; Repeater Function stanza
phone_functions = functions		; Phone Function stanza
link_functions = functions		; Link Function stanza
&amp;nbsp;
telemetry = telemetry			; Telemetry stanza
morse = morse				; Morse stanza
wait_times = wait-times			; Wait times stanza
&amp;nbsp;
context = radio				; dialing context for phone
callerid = &amp;quot;Repeater&amp;quot; &amp;lt;0000000000&amp;gt;	; callerid for phone calls
accountcode = RADIO                     ; account code (optional)
&amp;nbsp;
hangtime = 200				; squelch tail hang time (in ms) (optional, default 5 seconds, 5000 ms)
althangtime = 300			; longer squelch tail
totime = 300000				; 5 mins (12/4/22) transmit time-out time (in ms) (optional, default 3 minutes 180000 ms)
&amp;nbsp;
telemnomdb = -3				;
telemduckdb = -10			;
&amp;nbsp;
;idrecording = /home/gm4slv/gm4slv_id
;idrecording = /home/gm4slv/mb7aze_id
idrecording = |iGM4SLV				; Main ID message
&amp;nbsp;
;idtalkover = |iGM4SLV				; Talkover ID message
idtalkover = |iGM4SLV				; Talkover ID message
					; See Telemetry section Example: idrecording = rpt/nodenames/48148
idtime = 900000				; 15 mins (12/4/22) id interval time (in ms) (optional) Default 5 minutes (300000 ms)
politeid = 30000			; time in milliseconds before ID timer expires to try and ID in the tail. (optional, default 30000)
&amp;nbsp;
unlinkedct = ct12			; Send a this courtesy tone when the user unkeys if the node is not connected to any other nodes. (optional, default is none)
remotect = ct3				; remote linked courtesy tone (indicates a remote is in the list of links)
linkunkeyct = ct4			; sent when a transmission received over the link unkeys
;nolocallinkct = 0			; Send unlinkedct instead if another local node is connected to this node (hosted on the same PC).
&amp;nbsp;
; Supermon smlogger
connpgm=/usr/local/sbin/supermon/smlogger 1
discpgm=/usr/local/sbin/supermon/smlogger 0
&amp;nbsp;
;connpgm = yourconnectprogram		; Disabled. Execute a program you specify on connect. (default)
					; passes 2 command line arguments to your program:
					; 1. node number in this stanza (us)
					; 2. node number being connected to us (them)
;discpgm = yourdisconnectprogram	; Disabled. Execute a program you specify on disconnect. (default)
					; passes 2 command line arguments to your program:
					; 1. node number in this stanza (us)
					; 2. node number being disconnected from us (them)
&amp;nbsp;
lnkactenable = 0			; Set to 1 to enable the link activity timer. Applicable to standard nodes only.
&amp;nbsp;
lnkacttime = 3600			; Link activity timer time in seconds.
lnkactmacro = *73			; Function to execute when link activity timer expires.
lnkacttimerwarn = custom/timeout		; Message to play when the link activity timer has 30 seconds left.
&amp;nbsp;
;remote_inact_timeout =	60		; Specifies the amount of time without keying from the link. Set to 0 to disable timeout. (15 * 60)
;remote_timeout =			; Session time out for remote base. Set to 0 to disable. (60 * 60)
;remote_timeout_warning_freq =		; 30
;remote_timeout_warning =		; (3 * 60)
&amp;nbsp;
;nounkeyct = 0				; Set to a 1 to eliminate courtesy tones and associated delays.
&amp;nbsp;
holdofftelem = 0			; Hold off all telemetry when signal is present on receiver or from connected nodes
					; except when an ID needs to be done and there is a signal coming from a connected node.
&amp;nbsp;
telemdefault = 1                        ; 0 = telemetry output off
                                        ; 1 = telemetry output on (default = 1)
                                        ; 2 = timed telemetry output on command execution and for a short time thereafter.
&amp;nbsp;
telemdynamic = 1                        ; 0 = disallow users to change the local telemetry setting with a COP command,
                                        ; 1 = Allow users to change the setting with a COP command. (default = 1)
&amp;nbsp;
beaconing = 0				; Send ID regardless of repeater activity (Required in the UK, but probably illegal in the US)
&amp;nbsp;
parrotmode = 1				; 0 = Parrot Off (default = 0)
					; 1 = Parrot On Command
					; 2 = Parrot Always
					; 3 = Parrot Once by Command
&amp;nbsp;
parrottime = 1000			; Set the amount of time in milliseconds
					; to wait before parroting what was received
&amp;nbsp;
;rxnotch=1065,40                        ; (Optional) Notch a particular frequency for a specified
                                        ; b/w. app_rpt must have been compiled with
                                        ; the notch option
&amp;nbsp;
startup_macro = *80*81*70
&amp;nbsp;
; nodenames = /var/lib/asterisk/sounds/rpt/nodenames.callsign	; Point to alternate nodename sound directory
&amp;nbsp;
; Stream your node audio to Broadcastify or similar. See https://wiki.allstarlink.org/wiki/Stream_Node_Audio_to_Broadcastify
; outstreamcmd = /bin/sh,-c,/usr/bin/lame --preset cbr 16 -r -m m -s 8 --bitwidth 16 - - | /usr/bin/ezstream -qvc /etc/ezstream.xml
&amp;nbsp;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Need more information on these
&amp;nbsp;
;extnodes = extnodes-different	; section in extnodefile containing dynamic node information (optional)
;extnodefile = /home/gm4slv/rpt_extnodes	; Points to nodelist file containing dynamic node info default = /var/lib/asterisk/rpt_extnodes (optional)
;extnodefile2 =			; Is this a list of node files? Possible a list of private nodes or a list of static IPs for known nodes????
;nodenames = /foo/names         ; locaton of node sound files default = /var/lib/asterisk/sounds/rpt/nodenames
;archivedir = /tmp              ; defines and enables activity recording into specified directory (optional)
;monminblocks = 2048            ; Min 1K blocks to be left on partition (will not save monitor output if disk too full)
&amp;nbsp;
;                               ; The tailmessagetime,tailsquashedtime, and tailmessagelist need to be set
;                               ; to support tail messages. They can be omitted otherwise.
;tailmessagetime = 300000       ; Play a tail message every 5 mins
;tailsquashedtime = 30000       ; If squashed by another user,
;                               ; try again after 30 seconds
;tailmessagelist = msg1,msg2    ; list of messages to be played for tail message
&amp;nbsp;
; alt_functions
; ctgroup
; dphone_functions
; idtime
; iobase
; iospeed
; locallist
; mars		Remote Base
; memory
; nobusyout
; nodes
; nolocallinkct
; notelemtx
; outxlat
; parrot
; propagate_phonedtmf
; rptnode
; rptinactmacro  Macro to execute when inactivity timer expires
; rptinacttime   Inactivity timer time in seconds  (0 seconds disables feature)
; rxnotch	Optional Audio notch
; simplexphonedelay
; tonemacro
; tonezone
; txlimits
&amp;nbsp;
&amp;nbsp;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
&amp;nbsp;
&amp;nbsp;
; *** Status Reporting ***
&amp;nbsp;
; Comment the following statpost line stop to reporting of the status of your node to stats.allstarlink.org
statpost_url = http://stats.allstarlink.org/uhandler ; Status updates
&amp;nbsp;
[functions]
&amp;nbsp;
; Prefix	Functions
; *1		Disconnect Link
; *2		Monitor Link
; *3		Connect Link
; *4		Command Mode
; *5		Macros
; *6		User Functions
; *7		Connection Status/Functions
; *8		User Functions
; *9		User Functions
; *0		User Functions
&amp;nbsp;
; *A		User Functions
; *B		User Functions
; *C		User Functions
; *D		User Functions
&amp;nbsp;
&amp;nbsp;
; Mandatory Command Codes
1 = ilink,1		; Disconnect specified link
2 = ilink,2		; Connect specified link -- monitor only
3 = ilink,3		; Connect specified link -- tranceive
4 = ilink,4		; Enter command mode on specified link
&amp;nbsp;
70 = ilink,5		; System status
&amp;nbsp;
;99 = cop,6              ; PTT (phone mode only)
&amp;nbsp;
; End Mandatory Command Codes
&amp;nbsp;
73 = ilink,6		; Disconnect All Links
74 = ilink,16		; Reconnect links disconnected with &amp;quot;disconnect all links&amp;quot;
&amp;nbsp;
80 = status,11         ; Force ID (local only)
81 = status,12         ; Give Time of Day (local only)
&amp;nbsp;
91 = cop,21		; Enable Parrot Mode
92 = cop,22		; Disable Parrot Mode
93 = cop,55		; Parrot Once if parrot mode is disabled
&amp;nbsp;
98 = cop,2		; System enable
99 = cop,3		; System disable
&amp;nbsp;
901 = cop,1				; System warm boot
&amp;nbsp;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
&amp;nbsp;
; Macro Commands
5 = macro
&amp;nbsp;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
&amp;nbsp;
; Autopatch Commands
; Note, This may be a good place for other 2 digit frequently used commands
&amp;nbsp;
;61 = autopatchup,noct = 1,farenddisconnect = 1,dialtime = 20000  ; Autopatch up
;62 = autopatchdn                                                 ; Autopatch down
&amp;nbsp;
; autopatchup can optionally take comma delimited setting=value pairs:
&amp;nbsp;
; context = string		; Override default context with &amp;quot;string&amp;quot;
; dialtime = ms			; Specify the max number of milliseconds between phone number digits (1000 milliseconds = 1 second)
; farenddisconnect = 1		; Automatically disconnect when called party hangs up
; noct = 1			; Don&#039;&lt;/span&gt;t send repeater courtesy tone during autopatch calls
; quiet = &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;			; Don&lt;span class=&quot;st_h&quot;&gt;&#039;t send dial tone, or connect messages. Do not send patch down message when called party hangs up
				; Example: 123=autopatchup,dialtime=20000,noct=1,farenddisconnect=1
&amp;nbsp;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
&amp;nbsp;
; Status Commands
&amp;nbsp;
; 1 - Force ID (global)
; 2 - Give Time of Day (global)
; 3 - Give software Version (global)
; 4 - Give GPS location info
; 5 - Last (dtmf) user
; 11 - Force ID (local only)
; 12 - Give Time of Day (local only)
&amp;nbsp;
;721 = status,1          ; Force ID (global)
;722 = status,2          ; Give Time of Day (global)
;723 = status,3          ; Give software Version (global)
;724 = status,4          ; Give GPS location info
;725 = status,5          ; Last (dtmf) user
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
&amp;nbsp;
; Link Commands
&amp;nbsp;
; 1 - Disconnect specified link
; 2 - Connect specified link -- monitor only
; 3 - Connect specified link -- tranceive
; 4 - Enter command mode on specified link
; 5 - System status
; 6 - Disconnect all links
; 7 - Last Node to Key Up
; 8 - Connect specified link -- local monitor only
; 9 - Send Text Message (9,&amp;lt;destnodeno or 0 (for all)&amp;gt;,Message Text, etc.
; 10 - Disconnect all RANGER links (except permalinks)
; 11 - Disconnect a previously permanently connected link
; 12 - Permanently connect specified link -- monitor only
; 13 - Permanently connect specified link -- tranceive
; 15 - Full system status (all nodes)
; 16 - Reconnect links disconnected with &amp;quot;disconnect all links&amp;quot;
; 17 - MDC test (for diag purposes)
; 18 - Permanently Connect specified link -- local monitor only
&amp;nbsp;
; ilink commands 1 through 5 are defined in the Mandatory Command section
&amp;nbsp;
;806 = ilink,6			; Disconnect all links
;827 = ilink,7			; Last Node to Key Up
;808 = ilink,8			; Connect specified link -- local monitor only
;809 = ilink,9,48148,&amp;quot;Testing&amp;quot;	; would send a text message to node 48148 replace 48148 with 0 for all connected nodes
;810 = ilink,10			; Disconnect all RANGER links (except permalinks)
;811 = ilink,11			; Disconnect a previously permanently connected link
;812 = ilink,12			; Permanently connect specified link -- monitor only
;823 = ilink,13			; Permanently connect specified link -- tranceive
;815 = ilink,15			; Full system status (all nodes)
;817 = ilink,17			; MDC test (for diag purposes)
;818 = ilink,18			; Permanently Connect specified link -- local monitor only
&amp;nbsp;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
&amp;nbsp;
; Control operator (cop) functions.
; Change these to something other than these codes listed below!
; Uncomment as needed.
&amp;nbsp;
;901 = cop,1				; System warm boot
&amp;nbsp;
; 904 = cop,4				; Test tone on/off (toggle)
; 905 = cop,5				; Dump system variables on console (debug use only)
&amp;nbsp;
; 907 = cop,7				; Time out timer enable
; 908 = cop,8				; Time out timer disable
&amp;nbsp;
; 909 = cop,9				; Autopatch enable
; 910 = cop,10				; Autopatch disable
&amp;nbsp;
; 911 = cop,11				; User linking functions enable
; 912 = cop,12				; User linking functions disable
&amp;nbsp;
; 913 = cop,13				; Query system control state
; 914 = cop,14				; Set system control state
&amp;nbsp;
; 915 = cop,15				; Scheduler enable
; 916 = cop,16				; Scheduler disable
&amp;nbsp;
; 917 = cop,17				; User functions enable (time, id, etc)
; 918 = cop,18				; User functions disable
&amp;nbsp;
; 919 = cop,19				; Select alternate hang time (althangtime)
; 920 = cop,20				; Select standard hangtime (hangtime)
&amp;nbsp;
&amp;nbsp;
; 924 = cop,24				; Flush all telemetry
; 925 = cop,25				; Query last node un-keyed
; 926 = cop,26				; Query all nodes keyed/unkeyed
; 927 = cop,27				; Reset DAQ minimum on a pin
; 928 = cop,28				; Reset DAQ maximum on a pin
&amp;nbsp;
; 930 = cop,30				; Recall Memory Setting in Attached Xcvr
&amp;nbsp;
; 931 = cop,31				; Channel Selector for Parallel Programmed Xcvr
&amp;nbsp;
; 932 = cop,32				; Touchtone pad test: command + Digit string + # to playback all digits pressed
&amp;nbsp;
; 933 = cop,33				; Local Telemetry Output Enable
; 934 = cop,34				; Local Telemetry Output Disable
; 935 = cop,35				; Local Telemetry Output on Demand
&amp;nbsp;
; 936 = cop,36				; Foreign Link Local Output Path Enable
; 937 = cop,37				; Foreign Link Local Output Path Disable
; 938 = cop,38				; Foreign Link Local Output Path Follows Local Telemetry
; 939 = cop,39				; Foreign Link Local Output Path on Demand
&amp;nbsp;
; 942 = cop,42				; Echolink announce node # only
; 943 = cop,43				; Echolink announce node Callsign only
; 944 = cop,44				; Echolink announce node # &amp;amp; Callsign
&amp;nbsp;
; 945 = cop,45				; Link Activity timer enable
; 945 = cop,46				; Link Activity timer disable
; 947 = cop,47				; Reset &amp;quot;Link Config Changed&amp;quot; Flag
&amp;nbsp;
; 948 = cop,48				; Send Page Tone (Tone specs separated by parenthesis)
&amp;nbsp;
; 949 = cop,49				; Disable incoming connections (control state noice)
; 950 = cop,50				; Enable incoming connections (control state noicd)
&amp;nbsp;
; 951 = cop,51				; Enable sleep mode
; 952 = cop,52				; Disable sleep mode
; 953 = cop,53				; Wake up from sleep
; 954 = cop,54				; Go to sleep
&amp;nbsp;
; 956 = cop,56                            ; Rx CTCSS Enable
; 957 = cop,57                            ; Rx CTCSS Disable
&amp;nbsp;
; 958 = cop.58                            ; Tx CTCSS On Input only Enable
; 959 = cop,59                            ; Tx CTCSS On Input only Disable
&amp;nbsp;
; 960 = cop,60                            ; Send MDC-1200 Burst (cop,60,type,UnitID[,DestID,SubCode])
;                                         ; Type is &#039;&lt;/span&gt;I&lt;span class=&quot;st_h&quot;&gt;&#039; for PttID, &#039;&lt;/span&gt;E&lt;span class=&quot;st_h&quot;&gt;&#039; for Emergency, and &#039;&lt;/span&gt;C&lt;span class=&quot;st_h&quot;&gt;&#039; for Call
;                                         ; (SelCall or Alert), or &#039;&lt;/span&gt;SX&lt;span class=&quot;st_h&quot;&gt;&#039; for STS (ststus), where X is 0-F.
;                                         ; DestID and subcode are only specified for  the &#039;&lt;/span&gt;C&lt;span class=&quot;st_h&quot;&gt;&#039; type message.
;                                         ; UnitID is the local systems UnitID. DestID is the MDC1200 ID of
;                                         ; the radio being called, and the subcodes are as follows:
;                                         ; Subcode &#039;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8205&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039; is Voice Selective Call for Spectra (&#039;&lt;/span&gt;Call&lt;span class=&quot;st_h&quot;&gt;&#039;)
;                                         ; Subcode &#039;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8015&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039; is Voice Selective Call for Maxtrac (&#039;&lt;/span&gt;SC&lt;span class=&quot;st_h&quot;&gt;&#039;) or
;                                         ; Astro-Saber(&#039;&lt;/span&gt;Call&lt;span class=&quot;st_h&quot;&gt;&#039;)
;                                         ; Subcode &#039;&lt;/span&gt;810D&lt;span class=&quot;st_h&quot;&gt;&#039; is Call Alert (like Maxtrac &#039;&lt;/span&gt;CA&lt;span class=&quot;st_h&quot;&gt;&#039;)
&amp;nbsp;
; 961 = cop,61                            ; Send Message to USB to control GPIO pins (cop,61,GPIO1=0[,GPIO4=1].....)
; 962 = cop,62                            ; Send Message to USB to control GPIO pins, quietly (cop,62,GPIO1=0[,GPIO4=1].....)
&amp;nbsp;
; 963 = cop,63                            ; Send pre-configred APRSTT notification (cop,63,CALL[,OVERLAYCHR])
; 964 = cop,64                            ; Send pre-configred APRSTT notification, quietly (cop,64,CALL[,OVERLAYCHR])
; 965 = cop,65                            ; Send POCSAG page (equipped channel types only)
&amp;nbsp;
[functions-remote]
&amp;nbsp;
0 = remote,1                            ; Retrieve Memory
1 = remote,2                            ; Set freq.
2 = remote,3                            ; Set tx PL tone
3 = remote,4                            ; Set rx PL tone
40 = remote,100                         ; Rx PL off
41 = remote,101                         ; Rx PL on
42 = remote,102                         ; Tx PL off
43 = remote,103                         ; Tx PL on
44 = remote,104                         ; Low Power
45 = remote,105                         ; Medium Power
46 = remote,106                         ; High Power
711 = remote,107                        ; Bump -20
714 = remote,108                        ; Bump -100
717 = remote,109                        ; Bump -500
713 = remote,110                        ; Bump +20
716 = remote,111                        ; Bump +100
719 = remote,112                        ; Bump +500
721 = remote,113                        ; Scan - slow
724 = remote,114                        ; Scan - quick
727 = remote,115                        ; Scan - fast
723 = remote,116                        ; Scan + slow
726 = remote,117                        ; Scan + quick
729 = remote,118                        ; Scan + fast
79 = remote,119                         ; Tune
51 = remote,5                           ; Long status query
52 = remote,140				; Short status query
67 = remote,210				; Send a *
69 = remote,211				; Send a #
;91 = remote,99,CALLSIGN,LICENSETAG     ; Remote base login.
                                        ; Define a different dtmf sequence for each user which is
                                        ; authorized to use the remote base to control access to it.
                                        ; For examble 9139583=remote,99,WB6NIL,G would grant access to
                                        ; the remote base and announce WB6NIL as being logged in.
                                        ; Another entry, 9148351=remote,99,WA6ZFT,E would grant access to
                                        ; the remote base and announce WA6ZFT as being logged in.
                                        ; When the remote base is disconnected from the originating node, the
                                        ; user will be logged out. The LICENSETAG argument is used to enforce
					; tx frequency limits. See [txlimits] below.
85 = cop,6                              ; Remote base telephone key
&amp;nbsp;
&amp;nbsp;
[telemetry]
&amp;nbsp;
; Telemetry entries can be shared across all repeaters, or defined for each repeater.
; Can be a tone sequence, morse string, or a file
;
; |t - Tone escape sequence
;
; Tone sequences consist of 1 or more 4-tuple entries (freq1, freq2, duration, amplitude)
; Single frequencies are created by setting freq1 or freq2 to zero.
;
; |m - Morse escape sequence
;
; Sends Morse code at the telemetry amplitude and telemetry frequency as defined in the
; [morse] section.
;
; Follow with an alphanumeric string
;
; |i - Morse ID escape sequence
;
; Sends Morse code at the ID amplitude and ID frequency as defined in the
; [morse] section.
;
; path/to/sound/file/without/extension
;
; Send the sound if in place of a constructed tone. Do not include the file extension
; Example: ct8 = rpt/bloop
; Example: idrecording = rpt/nodenames/48148
&amp;nbsp;
ct1 = |t(350,0,100,2048)(500,0,100,2048)(660,0,100,2048)
ct2 = |t(660,880,150,2048)
ct3 = |t(440,0,150,4096)
ct4 = |t(550,0,150,2048)
ct5 = |t(660,0,150,2048)
ct6 = |t(880,0,150,2048)
ct7 = |t(660,440,150,2048)
ct8 = |t(700,1100,150,2048)
ranger = |t(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,150,0)
remotemon = |mR
;remotemon = |t(1209,0,50,2048)                                  ; local courtesy tone when receive only
remotetx = |mK
;remotetx = |t(1633,0,50,3000)(0,0,80,0)(1209,0,50,3000)		; local courtesy tone when linked Trancieve mode
cmdmode = |t(900,903,200,2048)
;functcomplete = |mW
functcomplete = |t(1000,0,100,2048)(0,0,100,0)(1000,0,100,2048)
remcomplete = |t(650,0,100,2048)(0,0,100,0)(650,0,100,2048)(0,0,100,0)(650,0,100,2048)
pfxtone = |t(350,440,30000,3072)
patchup = rpt/callproceeding
patchdown = rpt/callterminated
&amp;nbsp;
ct12 = |me
ct13 = |mR
&amp;nbsp;
; As far as what the numbers mean,
; (000,000,010,000)
;   |   |   |   |-------amplitude
;   |   |   |-------------duration
;   |   |-------------------Tone 2
;   |-------------------------Tone 1
&amp;nbsp;
; So, with 0,0,10,0 That says No Tone1, No Tone2, 10ms duration, 0 Amplitude.
; Use it for a delay.  Fine tuning for how long before telemetry is sent, in conjunction with the telemdelay parameter)
; The numbers, like 350,440,10,2048 are 350Hz, 440Hz, 10ms delay, amplitude of 2048.
&amp;nbsp;
; Morse code parameters, these are common to all repeaters.
&amp;nbsp;
[morse]
speed = 20				; Approximate speed in WPM
frequency = 600				; Morse Telemetry Frequency
amplitude = 2048			; Morse Telemetry Amplitude
idfrequency = 1065			; Morse ID Frequency
idamplitude = 1024			; Morse ID Amplitude
&amp;nbsp;
;
; This section allows wait times for telemetry events to be adjusted
; A section for wait times can be defined for every repeater
;
&amp;nbsp;
[wait-times]
telemwait = 400                        ; Time to wait before sending most telemetry
idwait = 500                            ; Time to wait before starting ID
unkeywait = 200                        ; Time to wait after unkey before sending CT&#039;&lt;/span&gt;s and &lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt; telemetry
calltermwait = &lt;span class=&quot;nu0&quot;&gt;2000&lt;/span&gt;                     ; Time to &lt;span class=&quot;kw3&quot;&gt;wait&lt;/span&gt; before announcing &lt;span class=&quot;st0&quot;&gt;&amp;quot;call terminated&amp;quot;&lt;/span&gt;
&amp;nbsp;
; Memories &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; remote bases
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;memory&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
;00 = &lt;span class=&quot;nu0&quot;&gt;146.580&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100.0&lt;/span&gt;,m
;01 = &lt;span class=&quot;nu0&quot;&gt;147.030&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;103.5&lt;/span&gt;,m+t
;02 = &lt;span class=&quot;nu0&quot;&gt;147.240&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;103.5&lt;/span&gt;,m+t
;03 = &lt;span class=&quot;nu0&quot;&gt;147.765&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;79.7&lt;/span&gt;,m-t
;04 = &lt;span class=&quot;nu0&quot;&gt;146.460&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100.0&lt;/span&gt;,m
;05 = &lt;span class=&quot;nu0&quot;&gt;146.550&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100.0&lt;/span&gt;,m
&amp;nbsp;
; Place &lt;span class=&quot;kw3&quot;&gt;command&lt;/span&gt; macros here
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;macro&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;141223&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; disc. hubnet&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;241223&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; monitor hubnet&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;341223&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; transceive hubnet&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1424611&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; disc MilNet&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2424611&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; monitor MilNet&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3424611&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; transceive MilNet&lt;/span&gt;
&amp;nbsp;
;&lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;129332&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; disc Alaska&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;229332&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; monitor Alaska&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;329332&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; transceive Alaska&lt;/span&gt;
&amp;nbsp;
;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;154383&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; disc CQ North&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;254383&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; monitor CQ North&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;354383&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; transceive CQ North&lt;/span&gt;
&amp;nbsp;
;&lt;span class=&quot;nu0&quot;&gt;191&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;140894&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; disconnect hubnet Echo&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;391&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;340894&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; connect hubnet echo&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;13009999&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#	; dis echolink echotest&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;39&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;33009999&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#	; con echolink echotest&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
; Data Acquisition configuration
&amp;nbsp;
;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;daq-list&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
;device = device_name1
;device = device_name2
&amp;nbsp;
;Where: device_name1 and device_name2 are stanzas you define &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; this &lt;span class=&quot;kw2&quot;&gt;file&lt;/span&gt;
&amp;nbsp;
;device = daq-cham-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
; Device name
&amp;nbsp;
;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;daq-cham-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;				; Defined &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;daq-list&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
;hwtype = uchameleon			; DAQ hardware &lt;span class=&quot;kw3&quot;&gt;type&lt;/span&gt;
;devnode = &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ttyUSB0			; DAQ device node &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; required&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; = inadc				; Pin definition &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; an ADC channel
;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; = inadc
;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; = inadc
;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; = inadc
;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt; = inadc
;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; = inadc
;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt; = inadc
;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; = inadc
;&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt; = inp				; Pin definition &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; an input with a weak pullup resistor
;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; = inp
;&lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt; = inp
;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt; = inp
;&lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt; = &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt;				; Pin definition &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; an input without a weak pullup resistor
;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt; = out				; Pin definition &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; an output
;&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt; = out
;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt; = out
;&lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt; = out
;&lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt; = out
&amp;nbsp;
;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;meter-faces&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
;face = scale&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;scalepre,scalediv,scalepost&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;,word&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;?,...
;
; scalepre = offset to add before dividing with scalediv
; scalediv = full scale&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;number of whole units &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;e.g. &lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt; or &lt;span class=&quot;nu0&quot;&gt;12.8&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt; volts&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.
; scalepost = offset to add after dividing with scalediv
;
;face = range&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;X-Y:word,X2-Y2:word,...&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;,word&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;?,...
;face = bit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low-word,high-word&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;,word&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;?,...
;
; word&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;? is either a word &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds or one of its subdirectories,
; or a question mark &lt;span class=&quot;kw2&quot;&gt;which&lt;/span&gt; is  a placeholder &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; the measured value.
;
;
; Battery voltage &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt; volts
;batvolts = scale&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;12.8&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;,rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;thevoltageis,?,ha&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;volts
; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; quadrant wind direction
;winddir = range&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;:north,&lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt;:west,&lt;span class=&quot;nu0&quot;&gt;97&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;160&lt;/span&gt;:south,&lt;span class=&quot;nu0&quot;&gt;161&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;224&lt;/span&gt;:east,&lt;span class=&quot;nu0&quot;&gt;225&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;:north&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;,rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;thewindis,?
; LM34 temperature sensor with &lt;span class=&quot;nu0&quot;&gt;130&lt;/span&gt; deg. F full scale
;lm34f = scale&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;1.969&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;,rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;thetemperatureis,?,degrees,fahrenheit
; Status poll &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;non alarmed&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;light = bit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ha&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;off,ha&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;on&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;,ha&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;light,?
&amp;nbsp;
;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;alarms&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
;
;tag = device,pin,node,ignorefirst,func-low,func-hi
;
;tag = a unique name &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; the alarm
;device = daq device to poll
;pin = the device pin to be monitored
;ignorefirstalarm = &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; to &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; to throwaway first alarm event, or &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; to report it
;node = the node number to execute the &lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt; on
;func-low = the DTMF &lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt; to execute on a high to low transition
;func-high = the DTMF &lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt; to execute on a low to high transition
;
; a  &lt;span class=&quot;st_h&quot;&gt;&#039;-&#039;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;as&lt;/span&gt; a &lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt; name is shorthand &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; no-operation
;
;door = daq-cham-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2017&lt;/span&gt;,&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;,-
;pwrfail = daq-cham-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2017&lt;/span&gt;,&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;911111&lt;/span&gt;,-
;
; Control states
; Allow several control operator functions to be changed at once using one &lt;span class=&quot;kw3&quot;&gt;command&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;good &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; scheduling&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
;
;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;controlstates&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
;statenum = copcmd,&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;copcmd&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;...
;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; = rptena,lnkena,apena,totena,ufena,noicd  ; Normal operation
;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; = rptena,lnkena,apdis,totdis,ufena,noice  ; Net and news operation
;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; = rptena,lnkdis,apdis,totena,ufdis,noice  ; Repeater only operation
&amp;nbsp;
; Scheduler - execute a macro at a given &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;schedule&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
;dtmf_function =  m h dom mon dow  ; ala cron, star is implied
;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; = &lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;   ; at midnight, execute macro &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;.
&amp;nbsp;
; See https:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;wiki.allstarlink.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;wiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Event_Management
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;events&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;#includeifexists custom/rpt.conf&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_ed4ecf13d41d641e55f7d559ac75cabb_5&quot;&gt;/etc/asterisk/modules.conf after bridging added &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_ed4ecf13d41d641e55f7d559ac75cabb_5&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;;
; Asterisk configuration &lt;span class=&quot;kw2&quot;&gt;file&lt;/span&gt;
;
; Module Loader configuration &lt;span class=&quot;kw2&quot;&gt;file&lt;/span&gt;
;
; By default DIAL does NOT load every module, only what is needed
&amp;nbsp;
; You can &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt; or disable any of the asterisk modules
; All modules are compiled and installed.
&amp;nbsp;
; To &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt; a module: load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; module_name.so
; To disable a module: noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; module_name.so
&amp;nbsp;
; You will want to &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt; the channel driver modules you will be using.
; There are below &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; the Channle Driver section
; The most common Channel drivers &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; app_rpt are:
; chan_echolink.so   echolink channel driver
; chan_simpleusb.so  Simple USB Radio Interface Channel Drive
; chan_usbradio.so   USB Console Channel Driver
; chan_usrp.so       USRP Channel Module
; chan_voter.so      radio Voter channel driver
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;modules&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;autoload&lt;/span&gt;=no
&amp;nbsp;
; Applications
&amp;nbsp;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_adsiprog.so ;			Asterisk ADSI Programming Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_alarmreceiver.so ;		Alarm Receiver &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; Asterisk
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_amd.so ;				Answering Machine Detection Application
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_authenticate.so ;            	Authentication Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_cdr.so ;				Tell Asterisk to not maintain a CDR &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_chanisavail.so ;			Check channel availability
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_channelredirect.so ;		Channel Redirect
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_chanspy.so ;			Listen to the audio of an active channel
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_controlplayback.so ;		Control Playback Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_dahdibarge.so ;			Barge &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; on channel application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_dahdiras.so ;			DAHDI RAS Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_dahdiscan.so ;			Scan Zap channels application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_db.so ;				Database Access Functions
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_dial.so ;				Dialing Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_dictate.so ;			Virtual Dictation Machine
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_directed_pickup.so ;		Directed Call Pickup Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_directory.so ;			Extension Directory
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_disa.so ;				DISA &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Direct Inward System Access&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; Appli
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_dumpchan.so ;			Dump Info About The Calling Channel
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_echo.so ;				Simple Echo Application
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_exec.so ;				Executes dialplan applications
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_externalivr.so ;			External IVR Interface Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_festival.so ;			Simple Festival Interface
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_flash.so ;			Flash channel application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_followme.so ;			Find-Me&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Follow-Me Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_forkcdr.so ;			Fork The CDR into &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; separate entities
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_getcpeid.so ;			Get ADSI CPE ID
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_gps.so ;				GPS interface module
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_hasnewvoicemail.so ;		Indicator &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; whether a voice mailbox ha
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_ices.so ;				Encode and Stream via icecast and ices
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_image.so ;			Image Transmission Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_lookupblacklist.so ;		Look up Caller&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;ID name&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;number from black
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_lookupcidname.so ;		Look up CallerID Name from &lt;span class=&quot;kw3&quot;&gt;local&lt;/span&gt; databas
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_macro.so ;				Extension Macros
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_meetme.so ;			MeetMe conference bridge
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_milliwatt.so ;			Digital Milliwatt &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mu-law&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; Test Applicat
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_mixmonitor.so ;			Mixed Audio Monitoring Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_morsecode.so ;			Morse code
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_mp3.so ;				Silly MP3 Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_nbscat.so ;			Silly NBS Stream Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_page.so ;				Page Multiple Phones
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_parkandannounce.so ;		Call Parking and Announce Application
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_playback.so ;			Sound File Playback Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_privacy.so ;			Require phone number to be entered, &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; n
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_queue.so ;			True Call Queueing
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_radbridge.so ;			Radio Bridging interface module
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_random.so ;			Random goto
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_readfile.so ;			Stores output of &lt;span class=&quot;kw2&quot;&gt;file&lt;/span&gt; into a variable
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_read.so ;				Read Variable Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_realtime.so ;			Realtime Data Lookup&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Rewrite
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_record.so ;			Trivial Record Application
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_rpt.so ;				Radio Repeater&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Remote Base Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_sayunixtime.so ;			Say &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_senddtmf.so ;			Send DTMF digits Application
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_sendtext.so ;			Send Text Applications
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_setcallerid.so ;			Set CallerID Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_setcdruserfield.so ;		CDR user field apps
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_settransfercapability.so ;	Set ISDN Transfer Capability
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_sms.so ;				SMS&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;PSTN handler
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_softhangup.so ;			Hangs up the requested channel
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_speech_utils.so ;			Dialplan Speech Applications
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_stack.so ;			Stack Routines
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_system.so ;				Generic System&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_talkdetect.so ;			Playback with Talk Detection
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_test.so ;				Interface Test Application
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_transfer.so ;			Transfer
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_url.so ;				Send URL Applications
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_userevent.so ;			Custom User Event Application
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_verbose.so ;			Send verbose output
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_voicemail.so ;			Comedian Mail &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Voicemail System&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_waitforring.so ;			Waits &lt;span class=&quot;kw1&quot;&gt;until&lt;/span&gt; first ring after &lt;span class=&quot;kw1&quot;&gt;time&lt;/span&gt;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_waitforsilence.so ;		Wait For Silence
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_while.so ;			While Loops and Conditional Execution
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; app_zapateller.so ;			Block Telemarketers with Special Informa
&amp;nbsp;
; CDR
&amp;nbsp;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; cdr_csv.so ;				Comma Separated Values CDR Backend
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; cdr_custom.so ;			Customizable Comma Separated Values CDR
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; cdr_manager.so ;			Asterisk Manager Interface CDR Backend
&amp;nbsp;
; Channels
&amp;nbsp;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_agent.so ;			Agent Proxy Channel
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_alsa.so ;			ALSA Console Channel Driver
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_beagle.so ;			Beagleboard Radio Interface Channel Driver
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_dahdi.so ;				DAHDI Telephony
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_echolink.so ;			echolink Channel Driver
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_features.so ;			Feature Proxy Channel
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_gtalk.so ;			Gtalk Channel Driver
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_iax2.so ;				Inter Asterisk eXchange &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Ver &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_local.so ;				Local Proxy Channel &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Note: used internal
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_oss.so ;				Channel driver &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; OSS sound cards
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_phone.so ;			Generic Linux Telephony Interface driver
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_pi.so ;				DMK Engineering &lt;span class=&quot;st0&quot;&gt;&amp;quot;PITA&amp;quot;&lt;/span&gt; Board on Rpi2&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; Channel Driver
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_simpleusb.so ;			CM1xx USB Cards with Radio Interface Channel Driver &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;No DSP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_sip.so ;				Session Initiation Protocol &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SIP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_tlb.so ;				TheLinkBox Channel Driver
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_usbradio.so ;			CM1xx USB Cards with Radio Interface Channel Driver &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DSP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_usrp.so ;			GNU Radio interface USRP Channel Driver
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; chan_voter.so ;			Radio Voter Channel Driver
&amp;nbsp;
; Codecs
&amp;nbsp;
; CODEC          AUDIO QUALITY   BANDWIDTH &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;including IP and Ethernet headers&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; ULAW           best            &lt;span class=&quot;nu0&quot;&gt;87&lt;/span&gt; kilobits per second &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;kbps&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
; ADPCM          good            &lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt; kbps
; GSM            mediocre        &lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt; kbps
; g726aal2
; ilbc
&amp;nbsp;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; codec_adpcm.so ;			Adaptive Differential PCM Coder&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Decoder
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; codec_alaw.so ;				A-law Coder&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Decoder
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; codec_a_mu.so ;				A-law and Mulaw direct Coder&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Decoder
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; codec_dahdi.so ;			Generic DAHDI Transcoder Codec Translato
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; codec_g726.so ;				ITU G.726-32kbps G726 Transcoder
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; codec_gsm.so ;				GSM Coder&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Decoder
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; codec_ulaw.so ;				mu-Law Coder&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Decoder
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; codec_ilbc.so ;			http:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;en.wikipedia.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;wiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Internet_Low_Bitrate_Codec
&amp;nbsp;
; Formats
&amp;nbsp;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; format_g723.so ;			G.723.1 Simple Timestamp File Format
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; format_g726.so ;			Raw G.726 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;40kbps&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; data
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; format_g729.so ;			Raw G729 data
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; format_gsm.so ;				Raw GSM data
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; format_h263.so ;			Raw H.263 data
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; format_h264.so ;			Raw H.264 data
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; format_ilbc.so ;			Raw iLBC data
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; format_jpeg.so ;			JPEG &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Joint Picture Experts Group&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; Image
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; format_pcm.so ;				Raw&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Sun uLaw&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ALaw 8KHz &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;PCM,PCMA,AU&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, G.
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; format_sln.so ;				Raw Signed Linear Audio support &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SLN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; format_vox.so ;				Dialogic VOX &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ADPCM&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; File Format
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; format_wav_gsm.so ;			Microsoft WAV format &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Proprietary GSM&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; format_wav.so ;				Microsoft WAV format &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;8000Hz Signed Line
&amp;nbsp;
; Functions
&amp;nbsp;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_base64.so ;			base64 encode&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;decode dialplan functions
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_callerid.so ;			Caller ID related dialplan &lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_cdr.so ;				CDR dialplan &lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_channel.so ;			Channel information dialplan &lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_curl.so ;				Load external URL
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_cut.so ;				Cut out information from a string
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_db.so ;				Database &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;astdb&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; related dialplan functi
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_enum.so ;				ENUM related dialplan functions
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_env.so ;				Environment&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;filesystem dialplan &lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_global.so ;			Global variable dialplan functions
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_groupcount.so ;			Channel group dialplan functions
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_language.so ;			Channel language dialplan &lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_logic.so ;				Logical dialplan functions
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_math.so ;				Mathematical dialplan &lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_md5.so ;				MD5 digest dialplan functions
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_moh.so ;				Music-on-hold dialplan &lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_rand.so ;				Random number dialplan &lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_realtime.so ;			Read&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Write values from a RealTime reposi
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_sha1.so ;			SHA-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; computation dialplan &lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_strings.so ;			String handling dialplan functions
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_timeout.so ;			Channel timeout dialplan functions
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; func_uri.so ;				URI encode&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;decode dialplan functions
&amp;nbsp;
; PBX
&amp;nbsp;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; pbx_ael.so ;				Asterisk Extension Language Compiler
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; pbx_config.so ;				Text Extension Configuration
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; pbx_dundi.so ;			Distributed Universal Number Discovery &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; pbx_loopback.so ;			Loopback Switch
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; pbx_realtime.so ;			Realtime Switch
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; pbx_spool.so ;			Outgoing Spool Support
&amp;nbsp;
; Resources
&amp;nbsp;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; res_adsi.so ;				ADSI Resource
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; res_agi.so ;				Asterisk Gateway Interface &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;AGI&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; res_clioriginate.so ;			Call origination from the CLI
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; res_convert.so ;			File format conversion CLI &lt;span class=&quot;kw3&quot;&gt;command&lt;/span&gt;
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; res_crypto.so ;				Cryptographic Digital Signatures
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; res_features.so ;			Call Features Resource
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; res_indications.so ;			Indications Resource
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; res_jabber.so ;			AJI - Asterisk Jabber Interface
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; res_monitor.so ;			Call Monitoring Resource
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; res_musiconhold.so ;			Music On Hold Resource
load =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; res_smdi.so ;				Simplified Message Desk Interface &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SMDI&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; res_snmp.so ;				SNMP &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Sub&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;Agent &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; Asterisk
noload =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; res_speech.so ;			Generic Speech Recognition API
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;global&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_ed4ecf13d41d641e55f7d559ac75cabb_6&quot;&gt;/etc/asterisk/extensions.conf after bridging added &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_ed4ecf13d41d641e55f7d559ac75cabb_6&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;general&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
static = &lt;span class=&quot;kw2&quot;&gt;yes&lt;/span&gt;       ; These two lines prevent the command-line interface
writeprotect = &lt;span class=&quot;kw2&quot;&gt;yes&lt;/span&gt; ; from overwriting the config file. Leave them here.
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;globals&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
HOMENPA = &lt;span class=&quot;nu0&quot;&gt;999&lt;/span&gt; ; change this to your Area Code
NODE = &lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt;   ; change this to your node number
NODE1 = &lt;span class=&quot;nu0&quot;&gt;1999&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;default&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
exten =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; i,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,Hangup
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;radio-secure&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
exten =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${NODE}&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,rpt,&lt;span class=&quot;co1&quot;&gt;${NODE}&lt;/span&gt;
exten =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${NODE1}&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,rpt,&lt;span class=&quot;co1&quot;&gt;${NODE1}&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;iaxrpt&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;                                ; entered from iaxrpt &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; iax.conf
exten =&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${NODE}&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,rpt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${NODE}&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;X&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;       ; NODE is the Name field &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; iaxrpt
                                        ; Info: The X option passed to the Rpt application
                                        ; disables the normal security checks.
                                        ; Because incoming connections are validated &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; iax.conf,
                                        ; and we don&lt;span class=&quot;st_h&quot;&gt;&#039;t know where the user will be coming from in advance,
                                        ; the X option is required.
&amp;nbsp;
[iax-client]				; for IAX VIOP clients.				
exten =&amp;gt; ${NODE},1,Ringing
exten =&amp;gt; ${NODE},n,Wait(3)
exten =&amp;gt; ${NODE},n,Answer
exten =&amp;gt; ${NODE},n,Set(NODENUM=${CALLERID(number)})
exten =&amp;gt; ${NODE},n,Playback(rpt/node|noanswer)
exten =&amp;gt; ${NODE},n,SayDigits(${EXTEN})
exten =&amp;gt; ${NODE},n,Set(CALLERID(num)=0)
exten =&amp;gt; ${NODE},n,Rpt,${NODE}|P|${CALLERID(name)}
exten =&amp;gt; ${NODE},n,Hangup
exten =&amp;gt; ${NODE},n(hangit),Answer
exten =&amp;gt; ${NODE},n(hangit),Wait(1)
exten =&amp;gt; ${NODE},n(hangit),Hangup
&amp;nbsp;
; Comment-out the following clause if you want Allstar Autopatch service
[pstn-out]
exten = _NXXNXXXXXX,1,playback(ss-noservice)
exten = _NXXNXXXXXX,2,Congestion
&amp;nbsp;
; Un-comment out the following clause if you want Allstar Autopatch service
;[pstn-out]
;exten = _NXXNXXXXXX,1,Dial(IAX2/allstar-autopatch/\${EXTEN})
;exten = _NXXNXXXXXX,2,Busy
&amp;nbsp;
[invalidnum]
exten = s,1,Wait,3
exten = s,n,Playback,ss-noservice
exten = s,n,Wait,1
exten =  s,n,Hangup
&amp;nbsp;
[radio]
exten = _X11,1,Goto(check_route|${EXTEN}|1);
exten = _NXXXXXX,1,Goto(check_route|1${HOMENPA}${EXTEN}|1)
exten = _1XXXXXXXXXX,1,Goto(check_route|${EXTEN}|1)
exten = _07XX,1,Goto(parkedcalls|${EXTEN:1}|1)
exten = 00,1,Goto(my-ip|s|1)
&amp;nbsp;
[check_route]
exten =_X.,1,Noop(${EXTEN})
; no 800
exten = _1800NXXXXXX,2,Goto(invalidnum|s|1)
exten = _1888NXXXXXX,2,Goto(invalidnum|s|1)
exten = _1877NXXXXXX,2,Goto(invalidnum|s|1)
exten = _1866NXXXXXX,2,Goto(invalidnum|s|1)
exten = _1855NXXXXXX,2,Goto(invalidnum|s|1)
; no X00 NPA
exten = _1X00XXXXXXX,2,Goto(invalidnum|s|1)
; no X11 NPA
exten = _1X11XXXXXXX,2,Goto(invalidnum|s|1)
; no X11 
exten = _X11,2,Goto(invalidnum|s|1)
; no 555 Prefix in any NPA
exten = _1NXX555XXXX,2,Goto(invalidnum|s|1)
; no 976 Prefix in any NPA
exten = _1NXX976XXXX,2,Goto(invalidnum|s|1)
; no NPA=809
exten = _1809XXXXXXX,2,Goto(invalidnum|s|1)
; no NPA=900
exten = _1900XXXXXXX,2,Goto(invalidnum|s|1)
&amp;nbsp;
; okay, route it
exten = _1NXXXXXXXXX,2,Goto(pstn-out|${EXTEN:1}|1)
exten = _X.,2,Goto(invalidnum|s|1)
&amp;nbsp;
[my-ip]
exten = s,1,Set(MYADDR=${CURL(http://myip.vg)})
exten = s,2,Wait,1
exten = s,3,SayAlpha(${MYADDR})
exten = s,4,Hangup
&amp;nbsp;
[allstar-sys]
exten =&amp;gt; _1.,1,Rpt(${EXTEN:1}|Rrpt/node:NODE:rpt/in-call:digits/0:PARKED|120)
exten =&amp;gt; _1.,n,Hangup
&amp;nbsp;
exten =&amp;gt; _2.,1,Ringing
exten =&amp;gt; _2.,n,Wait(3)
exten =&amp;gt; _2.,n,Answer
exten =&amp;gt; _2.,n,Playback(rpt/node)
exten =&amp;gt; _2.,n,Saydigits(${EXTEN:1})
exten =&amp;gt; _2.,n,Rpt(${EXTEN:1}|P|${CALLERID(name)}-P)
exten =&amp;gt; _2.,n,Hangup
&amp;nbsp;
exten =&amp;gt; _3.,1,Ringing
exten =&amp;gt; _3.,n,Wait(3)
exten =&amp;gt; _3.,n,Answer
exten =&amp;gt; _3.,n,Playback(rpt/node)
exten =&amp;gt; _3.,n,Saydigits(${EXTEN:1})
exten =&amp;gt; _3.,n,Rpt(${EXTEN:1}|Pv|${CALLERID(name)}-P)
exten =&amp;gt; _3.,n,Hangup
&amp;nbsp;
exten =&amp;gt; _4.,1,Ringing
exten =&amp;gt; _4.,n,Wait(3)
exten =&amp;gt; _4.,n,Answer
exten =&amp;gt; _4.,n,Playback(rpt/node)
exten =&amp;gt; _4.,n,Saydigits(${EXTEN:1})
exten =&amp;gt; _4.,n,Rpt(${EXTEN:1}|D|${CALLERID(name)}-P)
exten =&amp;gt; _4.,n,Hangup
&amp;nbsp;
exten =&amp;gt; _5.,1,Ringing
exten =&amp;gt; _5.,n,Wait(3)
exten =&amp;gt; _5.,n,Answer
exten =&amp;gt; _5.,n,Playback(rpt/node)
exten =&amp;gt; _5.,n,Saydigits(${EXTEN:1})
exten =&amp;gt; _5.,n,Rpt(${EXTEN:1}|Dv|${CALLERID(name)}-P)
exten =&amp;gt; _5.,n,Hangup
&amp;nbsp;
[allstar-public]
&amp;nbsp;
exten =&amp;gt; s,1,Ringing
exten =&amp;gt; s,n,Set(RESP=${CURL(https://register.allstarlink.org/cgi-bin/authwebphone.pl?${CALLERID(name)})})
exten =&amp;gt; s,n,Set(NODENUM=${CALLERID(number)})
exten =&amp;gt; s,n,GotoIf($[&amp;quot;${RESP:0:1}&amp;quot; = &amp;quot;?&amp;quot;]?hangit)
exten =&amp;gt; s,n,GotoIf($[&amp;quot;${RESP:0:1}&amp;quot; = &amp;quot;&amp;quot;]?hangit)
exten =&amp;gt; s,n,GotoIf($[&amp;quot;${RESP:0:5}&amp;quot; != &amp;quot;OHYES&amp;quot;]?hangit)
exten =&amp;gt; s,n,Set(CALLSIGN=${RESP:5})
exten =&amp;gt; s,n,Wait(3)
exten =&amp;gt; s,n,Playback(rpt/node|noanswer)
exten =&amp;gt; s,n,Saydigits(${NODENUM})
exten =&amp;gt; s,n,Set(CALLERID(name)=${CALLSIGN})
exten =&amp;gt; s,n,Set(CALLERID(num)=0)
exten =&amp;gt; s,n,Rpt(${NODENUM}|X)
exten =&amp;gt; s,n,Hangup
exten =&amp;gt; s,n(hangit),Answer
exten =&amp;gt; s,n(hangit),Wait(1)
exten =&amp;gt; s,n(hangit),Hangup
&amp;nbsp;
#includeifexists custom/extensions.conf&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
The next bit was more tricky on an old Debian &lt;code&gt;Buster&lt;/code&gt; ASL Beta image that hadn&amp;#039;t been updated/upgraded in a long time….
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;My configs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;my_configs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;851-74575&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;installing_dvswitch&quot;&gt;Installing DVswitch&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Installing DVSwitch was a bit convoluted, as my old version of the ASL Beta 2.0.0 wasn&amp;#039;t up to date… and needed some work to add necessary APT gpg keys, and adding the dvswitch repository.
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;apt-get update –allow-releaseinfo-change&lt;/code&gt; to accept the release name change
&lt;/p&gt;

&lt;p&gt;
Adding DVSwitch repository keys
&lt;/p&gt;

&lt;p&gt;
As root : 
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;apt-key adv&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--keyserver&lt;/span&gt; hkp:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;keyserver.ubuntu.com:&lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--recv-keys&lt;/span&gt; 0E98404D386FA1D9
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;apt-key adv&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--keyserver&lt;/span&gt; hkp:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;keyserver.ubuntu.com:&lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--recv-keys&lt;/span&gt; 6ED0E7B82643E131
&amp;nbsp;
curl &lt;span class=&quot;re5&quot;&gt;-s&lt;/span&gt; http:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;apt.allstarlink.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;repos&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;repo_signing.key &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;apt-key add&lt;/span&gt; - &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt update
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;wget&lt;/span&gt; http:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;dvswitch.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;buster
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;chmod&lt;/span&gt; +x buster
&amp;nbsp;
.&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;buster
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;apt-get update&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;apt-get install&lt;/span&gt; dvswitch&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installing DVswitch&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installing_dvswitch&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;74576-75305&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;configuring_dvswitch&quot;&gt;Configuring DVSwitch&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The changes were made to the existing asterisk configs, as per the pdf document, then  DVSwitch was installed, and then the pdf document was followed again to make the necessary configs to:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;/opt/Analog_Bridge/Analog_Bridge.ini&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
and 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;/opt/MMDVM_Bridge/MMDVM_Bridge.ini&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
everything seemed to work okay - although there I think one of the UDP ports was initially wrong for the USRP traffic in &lt;code&gt;Analog_Bridge.ini&lt;/code&gt; and I had to double check by looking in 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;/etc/asterisk/rpt.conf&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1999&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
rxchannel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; USRP&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;127&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;1&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;34001&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;31001&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
and setting &lt;code&gt;Analog_Bridge.ini&lt;/code&gt; to match:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;USRP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
address &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; 127&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;1              
txPort &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;31001&lt;/span&gt;                        
rxPort &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;34001&lt;/span&gt;  &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuring DVSwitch&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuring_dvswitch&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;75306-76058&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;testing&quot;&gt;Testing&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I initially set the &lt;code&gt;MMDVM_Bridge&lt;/code&gt; to connect to Brandmeister and &lt;code&gt;Analog_Bridge&lt;/code&gt; to send traffic to TG2354429 (an ad hoc TG with my DMR ID).
&lt;/p&gt;

&lt;p&gt;
in the &lt;code&gt;asterisk CLI&lt;/code&gt; issue the command to link the main node &lt;code&gt;48148&lt;/code&gt; with the internal private node &lt;code&gt;1999&lt;/code&gt; to complete the bridge:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;rpt cmd 2100 ilink 3 1999&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
transmit on the VHF FM input to the Gateway and listen on a DMR radio via my DMR hotspot connected to Brandmeister TG2354429 and the DMR radio sprang into life with my DMR ID….
&lt;/p&gt;

&lt;p&gt;
transmit on the DMR radio, via the hotspot to Brandmeister and the VHF FM handheld carried the audio from the DMR radio.
&lt;/p&gt;

&lt;p&gt;
I also tried setting &lt;code&gt;MMDVM_Bridge&lt;/code&gt; to connect to DVS-Ph F and used the &lt;code&gt;Options=TS2_1=842&lt;/code&gt; to set TG842 as static. Setting &lt;code&gt;Analog_Bridge&lt;/code&gt; to use TG 842 and once more the traffic was bi-directional Allstar ↔ DMR
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Testing&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;testing&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;76059-76918&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;so_far_so_good&quot;&gt;So Far So Good&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
To boost the audio via the bridge &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Analog_Bridge.ini&lt;/code&gt; to change from &lt;code&gt;AUDIO_UNITY&lt;/code&gt; to &lt;code&gt;AUDIO_USE_GAIN&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;USRP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
address &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; 127&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;1                     
txPort &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;31001&lt;/span&gt;                         
rxPort &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;34001&lt;/span&gt;                       
usrpAudio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; AUDIO_USE_GAIN            
usrpGain &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;                        
&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;usrpAGC &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;                 
tlvAudio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; AUDIO_USE_GAIN                
tlvGain &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu19&quot;&gt;0.35&lt;/span&gt;                     &lt;/pre&gt;

&lt;p&gt;
I set the various DVSwitch things to be enabled or disabled:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;systemctl &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt; asterisk
systemctl &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt; analog_bridge
systemctl disable md380-emu
systemctl &lt;span class=&quot;kw3&quot;&gt;enable&lt;/span&gt; mmdvm_bridge&lt;/pre&gt;

&lt;p&gt;
Later I found the other bridges available (P25, YSF, NXDN etc) were running, but not configured, so I used systemctl to disable them.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;So Far So Good&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;so_far_so_good&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;76919-77733&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;allmon2_supermon&quot;&gt;Allmon2 / supermon&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I added the new node &lt;code&gt;1999&lt;/code&gt; to allmon2 and supermon, so I can control/monitor the bridging via the web.
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;/var/www/html/allmon2/allmon.ini.php&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
host&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;127&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;1&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5038&lt;/span&gt;
user&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;admin
passwd&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;xxxx
nomenu&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;no
hideNodeURL&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;no
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1999&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
host&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;127&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;1&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5038&lt;/span&gt;
user&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;admin
passwd&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;XXXX
nomenu&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;no
hideNodeURL&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;no
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Grouped Nodes&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
nodes&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1999&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;lsNodes&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
url &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/cgi-bin/lsnodes_web?node=48148&amp;quot;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;url &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/cgi-bin/lsnodes_web?node=481480&amp;quot;&lt;/span&gt;
menu &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; yes&lt;/pre&gt;

&lt;p&gt;
&lt;code&gt;/var/www/html/supermon/allmon.ini&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
host &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; 127&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;1&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5038&lt;/span&gt;
user &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; admin
passwd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; XXXX
menu &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; yes
hideNodeURL &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; no
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1999&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
host &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; 127&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;1&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5038&lt;/span&gt;
user &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; admin
passwd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; XXXX
menu &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; yes
hideNodeURL &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; no
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;All Nodes&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
nodes &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1999&lt;/span&gt;
menu &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; yes&lt;/pre&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 03/06/25 17:55 BST&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Allmon2 \/ supermon&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;allmon2_supermon&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;77734-78547&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:allstar&amp;amp;do=showtag&amp;amp;tag=allstar&quot; class=&quot;wikilink1&quot; title=&quot;tag:allstar&quot; rel=&quot;tag&quot;&gt;allstar&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:mmdvm&amp;amp;do=showtag&amp;amp;tag=mmdvm&quot; class=&quot;wikilink1&quot; title=&quot;tag:mmdvm&quot; rel=&quot;tag&quot;&gt;mmdvm&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dvswitch&amp;amp;do=showtag&amp;amp;tag=dvswitch&quot; class=&quot;wikilink1&quot; title=&quot;tag:dvswitch&quot; rel=&quot;tag&quot;&gt;dvswitch&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;78548-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 18:47:10 +0000</pubDate>
        </item>
        <item>
            <title>Formatting Syntax</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=wiki:syntax</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;formatting_syntax&quot;&gt;Formatting Syntax&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/DokuWiki&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/DokuWiki&quot;&gt;DokuWiki&lt;/a&gt; supports some simple markup language, which tries to make the datafiles to be as readable as possible. This page contains all possible syntax you may use when editing the pages. Simply have a look at the source of this page by pressing “Edit this page”. If you want to try something, just use the &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=playground:playground&quot; class=&quot;wikilink1&quot; title=&quot;playground:playground&quot; data-wiki-id=&quot;playground:playground&quot;&gt;playground&lt;/a&gt; page. The simpler markup is easily accessible via &lt;a href=&quot;https://www.dokuwiki.org/toolbar&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/toolbar&quot;&gt;quickbuttons&lt;/a&gt;, too.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Formatting Syntax&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;formatting_syntax&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-472&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;basic_text_formatting&quot;&gt;Basic Text Formatting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki supports &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, &lt;em class=&quot;u&quot;&gt;underlined&lt;/em&gt; and &lt;code&gt;monospaced&lt;/code&gt; texts. Of course you can &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;&lt;em&gt;&lt;code&gt;combine&lt;/code&gt;&lt;/em&gt;&lt;/em&gt;&lt;/strong&gt; all these.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DokuWiki supports **bold**, //italic//, __underlined__ and &amp;#039;&amp;#039;monospaced&amp;#039;&amp;#039; texts.
Of course you can **__//&amp;#039;&amp;#039;combine&amp;#039;&amp;#039;//__** all these.&lt;/pre&gt;

&lt;p&gt;
You can use &lt;sub&gt;subscript&lt;/sub&gt; and &lt;sup&gt;superscript&lt;/sup&gt;, too.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can use &amp;lt;sub&amp;gt;subscript&amp;lt;/sub&amp;gt; and &amp;lt;sup&amp;gt;superscript&amp;lt;/sup&amp;gt;, too.&lt;/pre&gt;

&lt;p&gt;
You can mark something as &lt;del&gt;deleted&lt;/del&gt; as well.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can mark something as &amp;lt;del&amp;gt;deleted&amp;lt;/del&amp;gt; as well.&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Paragraphs&lt;/strong&gt; are created from blank lines. If you want to &lt;strong&gt;force a newline&lt;/strong&gt; without a paragraph, you can use two backslashes followed by a whitespace or the end of line.
&lt;/p&gt;

&lt;p&gt;
This is some text with some linebreaks&lt;br/&gt;
Note that the
two backslashes are only recognized at the end of a line&lt;br/&gt;

or followed by&lt;br/&gt;
a whitespace \\this happens without it.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;This is some text with some linebreaks\\ Note that the
two backslashes are only recognized at the end of a line\\
or followed by\\ a whitespace \\this happens without it.&lt;/pre&gt;

&lt;p&gt;
You should use forced newlines only if really needed.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Basic Text Formatting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;basic_text_formatting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;473-1609&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;links&quot;&gt;Links&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki supports multiple ways of creating links.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Links&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;links&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1610-1680&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;external&quot;&gt;External&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
External links are recognized automagically: &lt;a href=&quot;http://www.google.com&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.google.com&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.google.com&lt;/a&gt; or simply &lt;a href=&quot;http://www.google.com&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.google.com&quot; rel=&quot;ugc nofollow noopener&quot;&gt;www.google.com&lt;/a&gt; - You can set the link text as well: &lt;a href=&quot;http://www.google.com&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.google.com&quot; rel=&quot;ugc nofollow noopener&quot;&gt;This Link points to google&lt;/a&gt;. Email addresses like this one: &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&lt;/a&gt; are recognized, too.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DokuWiki supports multiple ways of creating links. External links are recognized
automagically: http://www.google.com or simply www.google.com - You can set
link text as well: [[http://www.google.com|This Link points to google]]. Email
addresses like this one: &amp;lt;andi@splitbrain.org&amp;gt; are recognized, too.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;External&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;external&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1681-2271&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;internal&quot;&gt;Internal&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Internal links are created by using square brackets. You can either just give a &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=wiki:pagename&quot; class=&quot;wikilink2&quot; title=&quot;wiki:pagename&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:pagename&quot;&gt;pagename&lt;/a&gt; or use an additional &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=wiki:pagename&quot; class=&quot;wikilink2&quot; title=&quot;wiki:pagename&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:pagename&quot;&gt;link text&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Internal links are created by using square brackets. You can either just give
a [[pagename]] or use an additional [[pagename|link text]].&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/pagename&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/pagename&quot;&gt;Wiki pagenames&lt;/a&gt; are converted to lowercase automatically, special characters are not allowed.
&lt;/p&gt;

&lt;p&gt;
You can use &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=some:namespaces&quot; class=&quot;wikilink2&quot; title=&quot;some:namespaces&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;some:namespaces&quot;&gt;namespaces&lt;/a&gt; by using a colon in the pagename.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can use [[some:namespaces]] by using a colon in the pagename.&lt;/pre&gt;

&lt;p&gt;
For details about namespaces see &lt;a href=&quot;https://www.dokuwiki.org/namespaces&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/namespaces&quot;&gt;namespaces&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Linking to a specific section is possible, too. Just add the section name behind a hash character as known from HTML. This links to &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=wiki:syntax#internal&quot; class=&quot;wikilink1&quot; title=&quot;wiki:syntax&quot; data-wiki-id=&quot;wiki:syntax&quot;&gt;this Section&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;This links to [[syntax#internal|this Section]].&lt;/pre&gt;

&lt;p&gt;
Notes:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Links to &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=wiki:syntax&quot; class=&quot;wikilink1&quot; title=&quot;wiki:syntax&quot; data-wiki-id=&quot;wiki:syntax&quot;&gt;existing pages&lt;/a&gt; are shown in a different style from &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=wiki:nonexisting&quot; class=&quot;wikilink2&quot; title=&quot;wiki:nonexisting&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:nonexisting&quot;&gt;nonexisting&lt;/a&gt; ones.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DokuWiki does not use &lt;a href=&quot;https://en.wikipedia.org/wiki/CamelCase&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/CamelCase&quot;&gt;CamelCase&lt;/a&gt; to automatically create links by default, but this behavior can be enabled in the &lt;a href=&quot;https://www.dokuwiki.org/config&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/config&quot;&gt;config&lt;/a&gt; file. Hint: If DokuWiki is a link, then it&amp;#039;s enabled.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; When a section&amp;#039;s heading is changed, its bookmark changes, too. So don&amp;#039;t rely on section linking too much.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Internal&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;internal&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2272-3506&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;interwiki&quot;&gt;Interwiki&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki supports &lt;a href=&quot;https://www.dokuwiki.org/Interwiki&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/Interwiki&quot;&gt;Interwiki&lt;/a&gt; links. These are quick links to other Wikis. For example this is a link to Wikipedia&amp;#039;s page about Wikis: &lt;a href=&quot;https://en.wikipedia.org/wiki/Wiki&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Wiki&quot;&gt;Wiki&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DokuWiki supports [[doku&amp;gt;Interwiki]] links. These are quick links to other Wikis.
For example this is a link to Wikipedia&amp;#039;s page about Wikis: [[wp&amp;gt;Wiki]].&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Interwiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;interwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3507-3843&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;windows_shares&quot;&gt;Windows Shares&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Windows shares like &lt;a href=&quot;file://///server/share&quot; class=&quot;windows&quot; title=&quot;\\server\share&quot;&gt;this&lt;/a&gt; are recognized, too. Please note that these only make sense in a homogeneous user group like a corporate &lt;a href=&quot;https://en.wikipedia.org/wiki/Intranet&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Intranet&quot;&gt;Intranet&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Windows Shares like [[\\server\share|this]] are recognized, too.&lt;/pre&gt;

&lt;p&gt;
Notes:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; For security reasons direct browsing of windows shares only works in Microsoft Internet Explorer per default (and only in the “local zone”).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; For Mozilla and Firefox it can be enabled through different workaround mentioned in the &lt;a href=&quot;http://kb.mozillazine.org/Links_to_local_pages_do_not_work&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://kb.mozillazine.org/Links_to_local_pages_do_not_work&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Mozilla Knowledge Base&lt;/a&gt;. However, there will still be a JavaScript warning about trying to open a Windows Share. To remove this warning (for all users), put the following line in &lt;code&gt;conf/lang/en/lang.php&lt;/code&gt; (more details at &lt;a href=&quot;https://www.dokuwiki.org/localization#changing_some_localized_texts_and_strings_in_your_installation&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/localization#changing_some_localized_texts_and_strings_in_your_installation&quot;&gt;localization&lt;/a&gt;): &lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=wiki:syntax&amp;amp;codeblock=0&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_php&quot;&gt;conf/lang/en/lang.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code&quot;&gt;&amp;lt;?php
/**
 * Customization of the english language file
 * Copy only the strings that needs to be modified
 */
$lang[&amp;#039;js&amp;#039;][&amp;#039;nosmblinks&amp;#039;] = &amp;#039;&amp;#039;;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Windows Shares&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;windows_shares&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3844-4916&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;image_links&quot;&gt;Image Links&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
You can also use an image to link to another internal or external page by combining the syntax for links and &lt;a href=&quot;#images_and_other_files&quot; title=&quot;wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;images&lt;/a&gt; (see below) like this:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[[http://php.net|{{wiki:dokuwiki-128.png}}]]&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;http://php.net&quot; class=&quot;media&quot; target=&quot;_BLANK&quot; title=&quot;http://php.net&quot; rel=&quot;ugc nofollow noopener&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Please note: The image formatting is the only formatting syntax accepted in link names.
&lt;/p&gt;

&lt;p&gt;
The whole &lt;a href=&quot;#images_and_other_files&quot; title=&quot;wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;image&lt;/a&gt; and &lt;a href=&quot;#links&quot; title=&quot;wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;link&lt;/a&gt; syntax is supported (including image resizing, internal and external images and URLs and interwiki links).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Image Links&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;image_links&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;4917-5462&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can add footnotes &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; by using double parentheses.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can add footnotes ((This is a footnote)) by using double parentheses.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Footnotes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;footnotes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;5463-5637&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;sectioning&quot;&gt;Sectioning&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can use up to five different levels of headlines to structure your content. If you have more than three headlines, a table of contents is generated automatically – this can be disabled by including the string &lt;code&gt;~~NOTOC~~&lt;/code&gt; in the document.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sectioning&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sectioning&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;5638-5924&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;headline_level_3&quot;&gt;Headline Level 3&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;headline_level_4&quot;&gt;Headline Level 4&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;/div&gt;

&lt;h5 id=&quot;headline_level_5&quot;&gt;Headline Level 5&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;==== Headline Level 3 ====
=== Headline Level 4 ===
== Headline Level 5 ==&lt;/pre&gt;

&lt;p&gt;
By using four or more dashes, you can make a horizontal line:
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Headline Level 3&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;headline_level_3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;5925-6151&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;media_files&quot;&gt;Media Files&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can include external and internal &lt;a href=&quot;https://www.dokuwiki.org/images&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/images&quot;&gt;images, videos and audio files&lt;/a&gt; with curly brackets. Optionally you can specify the size of them.
&lt;/p&gt;

&lt;p&gt;
Real size:                        &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Resize to given width:            &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=50&amp;amp;tok=0d33c8&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;50&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Resize to given width and height&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt;: &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=200&amp;amp;h=50&amp;amp;tok=1677b0&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;50&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Resized external image:           &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?tok=e25b03&amp;amp;media=https%3A%2F%2Fwww.php.net%2Fimages%2Fphp.gif&quot; class=&quot;media&quot; title=&quot;https://www.php.net/images/php.gif&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=200&amp;amp;h=50&amp;amp;tok=3689af&amp;amp;media=https%3A%2F%2Fwww.php.net%2Fimages%2Fphp.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;50&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Real size:                        {{wiki:dokuwiki-128.png}}
Resize to given width:            {{wiki:dokuwiki-128.png?50}}
Resize to given width and height: {{wiki:dokuwiki-128.png?200x50}}
Resized external image:           {{https://www.php.net/images/php.gif?200x50}}&lt;/pre&gt;

&lt;p&gt;
By using left or right whitespaces you can choose the alignment.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;mediaright&quot; align=&quot;right&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{ wiki:dokuwiki-128.png}}
{{wiki:dokuwiki-128.png }}
{{ wiki:dokuwiki-128.png }}&lt;/pre&gt;

&lt;p&gt;
Of course, you can add a title (displayed as a tooltip by most browsers), too.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; title=&quot;This is the caption&quot; alt=&quot;This is the caption&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{ wiki:dokuwiki-128.png |This is the caption}}&lt;/pre&gt;

&lt;p&gt;
For linking an image to another page see &lt;a href=&quot;#image_links&quot; title=&quot;wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;Image Links&lt;/a&gt; above.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Media Files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;media_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;6152-7518&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;supported_media_formats&quot;&gt;Supported Media Formats&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki can embed the following media formats directly.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit14&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Image &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;gif&lt;/code&gt;, &lt;code&gt;jpg&lt;/code&gt;, &lt;code&gt;png&lt;/code&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Video &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;code&gt;webm&lt;/code&gt;, &lt;code&gt;ogv&lt;/code&gt;, &lt;code&gt;mp4&lt;/code&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Audio &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;ogg&lt;/code&gt;, &lt;code&gt;mp3&lt;/code&gt;, &lt;code&gt;wav&lt;/code&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Flash &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;swf&lt;/code&gt;                    &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;7612-7767&amp;quot;} --&gt;
&lt;p&gt;
If you specify a filename that is not a supported media format, then it will be displayed as a link instead.
&lt;/p&gt;

&lt;p&gt;
By adding &lt;code&gt;?linkonly&lt;/code&gt; you provide a link to the media without displaying it inline
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{wiki:dokuwiki-128.png?linkonly}}&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;media mediafile mf_png wikilink2&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;dokuwiki-128.png&lt;/a&gt; This is just a link to the image.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Supported Media Formats&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;supported_media_formats&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;7519-8072&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;fallback_formats&quot;&gt;Fallback Formats&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Unfortunately not all browsers understand all video and audio formats. To mitigate the problem, you can upload your file in different formats for maximum browser compatibility.
&lt;/p&gt;

&lt;p&gt;
For example consider this embedded mp4 video:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{video.mp4|A funny video}}&lt;/pre&gt;

&lt;p&gt;
When you upload a &lt;code&gt;video.webm&lt;/code&gt; and &lt;code&gt;video.ogv&lt;/code&gt; next to the referenced &lt;code&gt;video.mp4&lt;/code&gt;, DokuWiki will automatically add them as alternatives so that one of the three files is understood by your browser.
&lt;/p&gt;

&lt;p&gt;
Additionally DokuWiki supports a “poster” image which will be shown before the video has started. That image needs to have the same filename as the video and be either a jpg or png file. In the example above a &lt;code&gt;video.jpg&lt;/code&gt; file would work.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Fallback Formats&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fallback_formats&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;8073-8803&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;lists&quot;&gt;Lists&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Dokuwiki supports ordered and unordered lists. To create a list item, indent your text by two spaces and use a &lt;code&gt;*&lt;/code&gt; for unordered lists or a &lt;code&gt;-&lt;/code&gt; for ordered ones.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; This is a list&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; The second item&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; You may have different levels&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Another item&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The same list but ordered&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Another item&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Just use indention for deeper levels&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; That&amp;#039;s it&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;code&quot;&gt;  * This is a list
  * The second item
    * You may have different levels
  * Another item

  - The same list but ordered
  - Another item
    - Just use indention for deeper levels
  - That&amp;#039;s it&lt;/pre&gt;

&lt;p&gt;
Also take a look at the &lt;a href=&quot;https://www.dokuwiki.org/faq%3Alists&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/faq%3Alists&quot;&gt;FAQ on list items&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lists&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lists&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;8804-9463&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;text_conversions&quot;&gt;Text Conversions&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki can convert certain pre-defined characters or strings into images or other text or HTML.
&lt;/p&gt;

&lt;p&gt;
The text to image conversion is mainly done for smileys. And the text to HTML conversion is used for typography replacements, but can be configured to use other HTML as well.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Text Conversions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;text_conversions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;9464-9768&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit18&quot; id=&quot;text_to_image_conversions&quot;&gt;Text to Image Conversions&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki converts commonly used &lt;a href=&quot;https://en.wikipedia.org/wiki/emoticon&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/emoticon&quot;&gt;emoticon&lt;/a&gt;s to their graphical equivalents. Those &lt;a href=&quot;https://www.dokuwiki.org/Smileys&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/Smileys&quot;&gt;Smileys&lt;/a&gt; and other images can be configured and extended. Here is an overview of Smileys included in DokuWiki:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/cool.svg&quot; class=&quot;icon smiley&quot; alt=&quot;8-)&quot; /&gt;   8-)  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/eek.svg&quot; class=&quot;icon smiley&quot; alt=&quot;8-O&quot; /&gt;   8-O  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/sad.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-(&quot; /&gt;   :-(  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/smile.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-)&quot; /&gt;   :-)  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/smile2.svg&quot; class=&quot;icon smiley&quot; alt=&quot;=)&quot; /&gt;    =)   &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/doubt.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-/&quot; /&gt;   :-/  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/doubt2.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-\&quot; /&gt;   :-\  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/confused.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-?&quot; /&gt;   :-?  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/biggrin.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-D&quot; /&gt;   :-D  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/razz.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-P&quot; /&gt;   :-P  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/surprised.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-O&quot; /&gt;   :-O  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/silenced.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-X&quot; /&gt;   :-X  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/neutral.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:-|&quot; /&gt;   :-|  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/wink.svg&quot; class=&quot;icon smiley&quot; alt=&quot;;-)&quot; /&gt;   ;-)  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fun.svg&quot; class=&quot;icon smiley&quot; alt=&quot;^_^&quot; /&gt;   ^_^  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/facepalm.svg&quot; class=&quot;icon smiley&quot; alt=&quot;m(&quot; /&gt;    m(   &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/question.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:?:&quot; /&gt;   :?:  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;   :!:  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/lol.svg&quot; class=&quot;icon smiley&quot; alt=&quot;LOL&quot; /&gt;   LOL  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;   FIXME &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/deleteme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;DELETEME&quot; /&gt;  DELETEME &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Text to Image Conversions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;text_to_image_conversions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;9769-10444&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit19&quot; id=&quot;text_to_html_conversions&quot;&gt;Text to HTML Conversions&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Typography: &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; can convert simple text characters to their typographically correct entities. Here is an example of recognized characters.
&lt;/p&gt;

&lt;p&gt;
→ ← ↔ ⇒ ⇐ ⇔ » « – — 640&amp;times;480 © ™ ®
“He thought &amp;#039;It&amp;#039;s a man&amp;#039;s world&amp;#039;…”
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;-&amp;gt; &amp;lt;- &amp;lt;-&amp;gt; =&amp;gt; &amp;lt;= &amp;lt;=&amp;gt; &amp;gt;&amp;gt; &amp;lt;&amp;lt; -- --- 640x480 (c) (tm) (r)
&amp;quot;He thought &amp;#039;It&amp;#039;s a man&amp;#039;s world&amp;#039;...&amp;quot;&lt;/pre&gt;

&lt;p&gt;
The same can be done to produce any kind of HTML, it just needs to be added to the &lt;a href=&quot;https://www.dokuwiki.org/entities&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/entities&quot;&gt;pattern file&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
There are three exceptions which do not come from that pattern file: multiplication entity (640&amp;times;480), &amp;#039;single&amp;#039; and “double quotes”. They can be turned off through a &lt;a href=&quot;https://www.dokuwiki.org/config%3Atypography&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/config%3Atypography&quot;&gt;config option&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Text to HTML Conversions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;text_to_html_conversions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;10445-11152&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;quoting&quot;&gt;Quoting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Some times you want to mark some text to show it&amp;#039;s a reply or comment. You can use the following syntax:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;I think we should do it

&amp;gt; No we shouldn&amp;#039;t

&amp;gt;&amp;gt; Well, I say we should

&amp;gt; Really?

&amp;gt;&amp;gt; Yes!

&amp;gt;&amp;gt;&amp;gt; Then lets do it!&lt;/pre&gt;

&lt;p&gt;
I think we should do it
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 No we shouldn&amp;#039;t&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Well, I say we should&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Really?&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Yes!&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Then lets do it!&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Quoting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;quoting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;11153-11518&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit21&quot; id=&quot;tables&quot;&gt;Tables&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki supports a simple syntax to create tables.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit22&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 1      &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Heading 2       &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Heading 3          &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 1 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 1 Col 2     &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 1 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 2 Col 1    &lt;/td&gt;&lt;td class=&quot;col1&quot; colspan=&quot;2&quot;&gt; some colspan (note the double pipe) &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 3 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 3 Col 2     &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 3 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;11592-11823&amp;quot;} --&gt;
&lt;p&gt;
Table rows have to start and end with a &lt;code&gt;|&lt;/code&gt; for normal rows or a &lt;code&gt;^&lt;/code&gt; for headers.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;^ Heading 1      ^ Heading 2       ^ Heading 3          ^
| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
| Row 2 Col 1    | some colspan (note the double pipe) ||
| Row 3 Col 1    | Row 3 Col 2     | Row 3 Col 3        |&lt;/pre&gt;

&lt;p&gt;
To connect cells horizontally, just make the next cell completely empty as shown above. Be sure to have always the same amount of cell separators!
&lt;/p&gt;

&lt;p&gt;
Vertical tableheaders are possible, too.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit23&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;              &lt;/td&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Heading 1            &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Heading 2          &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 3    &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 1 Col 2          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 1 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 4    &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; no colspan this time &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;                    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 5    &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 2 Col 2          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 2 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;12343-12586&amp;quot;} --&gt;
&lt;p&gt;
As you can see, it&amp;#039;s the cell separator before a cell which decides about the formatting:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;|              ^ Heading 1            ^ Heading 2          ^
^ Heading 3    | Row 1 Col 2          | Row 1 Col 3        |
^ Heading 4    | no colspan this time |                    |
^ Heading 5    | Row 2 Col 2          | Row 2 Col 3        |&lt;/pre&gt;

&lt;p&gt;
You can have rowspans (vertically connected cells) by adding &lt;code&gt;:::&lt;/code&gt; into the cells below the one to which they should connect.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit24&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 1      &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Heading 2                  &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Heading 3          &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 1 Col 1    &lt;/td&gt;&lt;td class=&quot;col1&quot; rowspan=&quot;3&quot;&gt; this cell spans vertically &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 1 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 2 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 2 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 3 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 2 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;13065-13340&amp;quot;} --&gt;
&lt;p&gt;
Apart from the rowspan syntax those cells should not contain anything else.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;^ Heading 1      ^ Heading 2                  ^ Heading 3          ^
| Row 1 Col 1    | this cell spans vertically | Row 1 Col 3        |
| Row 2 Col 1    | :::                        | Row 2 Col 3        |
| Row 3 Col 1    | :::                        | Row 2 Col 3        |&lt;/pre&gt;

&lt;p&gt;
You can align the table contents, too. Just add at least two whitespaces at the opposite end of your text: Add two spaces on the left to align right, two spaces on the right to align left and two spaces at least at both ends for centered text.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit25&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 centeralign&quot; colspan=&quot;3&quot;&gt;           Table with alignment           &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;         right&lt;/td&gt;&lt;td class=&quot;col1 centeralign&quot;&gt;    center    &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;left          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;left          &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;         right&lt;/td&gt;&lt;td class=&quot;col2 centeralign&quot;&gt;    center    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; xxxxxxxxxxxx &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; xxxxxxxxxxxx &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; xxxxxxxxxxxx &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table4&amp;quot;,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;13949-14136&amp;quot;} --&gt;
&lt;p&gt;
This is how it looks in the source:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;^           Table with alignment           ^^^
|         right|    center    |left          |
|left          |         right|    center    |
| xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx |&lt;/pre&gt;

&lt;p&gt;
Note: Vertical alignment is not supported.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Tables&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tables&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;11519-14415&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit26&quot; id=&quot;no_formatting&quot;&gt;No Formatting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
If you need to display text exactly like it is typed (without any formatting), enclose the area either with &lt;code&gt;&amp;lt;nowiki&amp;gt;&lt;/code&gt; tags or even simpler, with double percent signs &lt;code&gt;%%&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;

This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it.

The same is true for //__this__ text// with a smiley ;-).
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;nowiki&amp;gt;
This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it.
&amp;lt;/nowiki&amp;gt;
The same is true for %%//__this__ text// with a smiley ;-)%%.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;No Formatting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;no_formatting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;14416-15071&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit27&quot; id=&quot;code_blocks&quot;&gt;Code Blocks&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can include code blocks into your documents by either indenting them by at least two spaces (like used for the previous examples) or by using the tags &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;file&amp;gt;&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;This is text is indented by two spaces.&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;This is preformatted code all spaces are preserved: like              &amp;lt;-this&lt;/pre&gt;
&lt;pre class=&quot;file&quot;&gt;This is pretty much the same, but you could use it to show that you quoted a file.&lt;/pre&gt;

&lt;p&gt;
Those blocks were created by this source:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  This is text is indented by two spaces.&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;code&amp;gt;
This is preformatted code all spaces are preserved: like              &amp;lt;-this
&amp;lt;/code&amp;gt;&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;file&amp;gt;
This is pretty much the same, but you could use it to show that you quoted a file.
&amp;lt;/file&amp;gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Code Blocks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;code_blocks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;15072-15813&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit28&quot; id=&quot;syntax_highlighting&quot;&gt;Syntax Highlighting&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; can highlight sourcecode, which makes it easier to read. It uses the &lt;a href=&quot;http://qbnz.com/highlighter/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://qbnz.com/highlighter/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;GeSHi&lt;/a&gt; Generic Syntax Highlighter – so any language supported by GeSHi is supported. The syntax uses the same code and file blocks described in the previous section, but this time the name of the language syntax to be highlighted is included inside the tag, e.g. &lt;code&gt;&amp;lt;code java&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;file java&amp;gt;&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code java&quot;&gt;&lt;span class=&quot;co3&quot;&gt;/**
 * The HelloWorldApp class implements an application that
 * simply displays &amp;quot;Hello World!&amp;quot; to the standard output.
 */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; HelloWorldApp &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.google.com/search?hl=en&amp;amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; args&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.google.com/search?hl=en&amp;amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span class=&quot;me1&quot;&gt;out&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Hello World!&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//Display the string.&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
The following language strings are currently recognized: &lt;em&gt;4cs 6502acme 6502kickass 6502tasm 68000devpac abap actionscript3 actionscript ada aimms algol68 apache applescript apt_sources arm asm asp asymptote autoconf autohotkey autoit avisynth awk bascomavr bash basic4gl batch bf biblatex bibtex blitzbasic bnf boo caddcl cadlisp ceylon cfdg cfm chaiscript chapel cil c_loadrunner clojure c_mac cmake cobol coffeescript c cpp cpp-qt cpp-winapi csharp css cuesheet c_winapi dart dcl dcpu16 dcs delphi diff div dos dot d ecmascript eiffel email epc e erlang euphoria ezt f1 falcon fo fortran freebasic freeswitch fsharp gambas gdb genero genie gettext glsl gml gnuplot go groovy gwbasic haskell haxe hicest hq9plus html html4strict html5 icon idl ini inno intercal io ispfpanel java5 java javascript jcl j jquery julia kixtart klonec klonecpp kotlin latex lb ldif lisp llvm locobasic logtalk lolcode lotusformulas lotusscript lscript lsl2 lua m68k magiksf make mapbasic mathematica matlab mercury metapost mirc mk-61 mmix modula2 modula3 mpasm mxml mysql nagios netrexx newlisp nginx nimrod nsis oberon2 objc objeck ocaml-brief ocaml octave oobas oorexx oracle11 oracle8 oxygene oz parasail parigp pascal pcre perl6 perl per pf phix php-brief php pic16 pike pixelbender pli plsql postgresql postscript povray powerbuilder powershell proftpd progress prolog properties providex purebasic pycon pys60 python qbasic qml q racket rails rbs rebol reg rexx robots roff rpmspec rsplus ruby rust sas sass scala scheme scilab scl sdlbasic smalltalk smarty spark sparql sql sshconfig standardml stonescript swift systemverilog tclegg tcl teraterm texgraph text thinbasic tsql twig typoscript unicon upc urbi uscript vala vbnet vb vbscript vedit verilog vhdl vim visualfoxpro visualprolog whitespace whois winbatch wolfram xbasic xml xojo xorg_conf xpp yaml z80 zxbasic&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
There are additional &lt;a href=&quot;https://www.dokuwiki.org/syntax_highlighting&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/syntax_highlighting&quot;&gt;advanced options&lt;/a&gt; available for syntax highlighting, such as highlighting lines or adding line numbers.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Syntax Highlighting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;syntax_highlighting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;15814-18599&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit29&quot; id=&quot;downloadable_code_blocks&quot;&gt;Downloadable Code Blocks&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
When you use the &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;file&amp;gt;&lt;/code&gt; syntax as above, you might want to make the shown code available for download as well. You can do this by specifying a file name after language code like this:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;file php myexample.php&amp;gt;
&amp;lt;?php echo &amp;quot;hello world!&amp;quot;; ?&amp;gt;
&amp;lt;/file&amp;gt;&lt;/pre&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=wiki:syntax&amp;amp;codeblock=8&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_php&quot;&gt;myexample.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;hello world!&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
If you don&amp;#039;t want any highlighting but want a downloadable file, specify a dash (&lt;code&gt;-&lt;/code&gt;) as the language code: &lt;code&gt;&amp;lt;code - myfile.foo&amp;gt;&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Downloadable Code Blocks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;downloadable_code_blocks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;18600-19129&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit30&quot; id=&quot;rss_atom_feed_aggregation&quot;&gt;RSS/ATOM Feed Aggregation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; can integrate data from external XML feeds. For parsing the XML feeds, &lt;a href=&quot;http://simplepie.org/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://simplepie.org/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;SimplePie&lt;/a&gt; is used. All formats understood by SimplePie can be used in DokuWiki as well. You can influence the rendering by multiple additional space separated parameters:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit31&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Parameter  &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Description &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; any number &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; will be used as maximum number items to show, defaults to 8 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; reverse    &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; display the last items in the feed first &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; author     &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; show item authors names &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; date       &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; show item dates &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; description&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; show the item description. All HTML tags will be stripped &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; nosort     &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; do not sort the items in the feed &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;em&gt;n&lt;/em&gt;[dhm] &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; refresh period, where d=days, h=hours, m=minutes. (e.g. 12h = 12 hours). &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table5&amp;quot;,&amp;quot;secid&amp;quot;:31,&amp;quot;range&amp;quot;:&amp;quot;19450-19903&amp;quot;} --&gt;
&lt;p&gt;
The refresh period defaults to 4 hours. Any value below 10 minutes will be treated as 10 minutes. &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; will generally try to supply a cached version of a page, obviously this is inappropriate when the page contains dynamic external content. The parameter tells &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; to re-render the page if it is more than &lt;em&gt;refresh period&lt;/em&gt; since the page was last rendered.
&lt;/p&gt;

&lt;p&gt;
By default the feed will be sorted by date, newest items first. You can sort it by oldest first using the &lt;code&gt;reverse&lt;/code&gt; parameter, or display the feed as is with &lt;code&gt;nosort&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Example:&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{rss&amp;gt;http://slashdot.org/index.rss 5 author date 1h }}&lt;/pre&gt;
&lt;ul class=&quot;rss&quot;&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://slashdot.org/story/26/07/13/2210232/over-200-economists-say-we-must-act-now-on-ais-economic-impact?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://slashdot.org/story/26/07/13/2210232/over-200-economists-say-we-must-act-now-on-ais-economic-impact?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Over 200 Economists Say &amp;#039;We Must Act Now&amp;#039; On AI&amp;#039;s Economic Impact&lt;/a&gt; by BeauHD (14/07/26 04:30 BST)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://tech.slashdot.org/story/26/07/13/2149251/microsoft-promises-to-fix-search-with-major-windows-11-overhaul?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://tech.slashdot.org/story/26/07/13/2149251/microsoft-promises-to-fix-search-with-major-windows-11-overhaul?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Microsoft Promises To Fix Search With Major Windows 11 Overhaul&lt;/a&gt; by BeauHD (14/07/26 00:00 BST)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://it.slashdot.org/story/26/07/13/2139254/us-government-warns-that-russia-state-hackers-are-coming-after-your-router?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://it.slashdot.org/story/26/07/13/2139254/us-government-warns-that-russia-state-hackers-are-coming-after-your-router?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow noopener&quot;&gt;US Government Warns That Russia State Hackers Are Coming After Your Router&lt;/a&gt; by BeauHD (13/07/26 23:00 BST)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://slashdot.org/story/26/07/13/2111209/german-firm-files-for-insolvency-after-cybercriminals-shut-down-production-for-6-weeks?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://slashdot.org/story/26/07/13/2111209/german-firm-files-for-insolvency-after-cybercriminals-shut-down-production-for-6-weeks?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow noopener&quot;&gt;German Firm Files For Insolvency After Cybercriminals Shut Down Production For 6 Weeks&lt;/a&gt; by BeauHD (13/07/26 22:12 BST)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://yro.slashdot.org/story/26/07/13/1740256/states-sue-to-block-paramount-warner-bros-merger-defying-doj?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://yro.slashdot.org/story/26/07/13/1740256/states-sue-to-block-paramount-warner-bros-merger-defying-doj?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow noopener&quot;&gt;States Sue to Block Paramount-Warner Bros Merger, Defying DOJ&lt;/a&gt; by BeauHD (13/07/26 21:00 BST)&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RSS\/ATOM Feed Aggregation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rss_atom_feed_aggregation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;19130-20595&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit32&quot; id=&quot;control_macros&quot;&gt;Control Macros&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Some syntax influences how DokuWiki renders a page without creating any output it self. The following control macros are availble:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit33&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Macro           &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Description &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ~~NOTOC~~   &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; If this macro is found on the page, no table of contents will be created &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ~~NOCACHE~~ &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DokuWiki caches all output by default. Sometimes this might not be wanted (eg. when the &amp;lt;php&amp;gt; syntax above is used), adding this macro will force DokuWiki to rerender a page on every call &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table6&amp;quot;,&amp;quot;secid&amp;quot;:33,&amp;quot;range&amp;quot;:&amp;quot;20756-21098&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Control Macros&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;control_macros&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:32,&amp;quot;range&amp;quot;:&amp;quot;20596-21099&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit34&quot; id=&quot;syntax_plugins&quot;&gt;Syntax Plugins&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki&amp;#039;s syntax can be extended by &lt;a href=&quot;https://www.dokuwiki.org/plugins&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/plugins&quot;&gt;Plugins&lt;/a&gt;. How the installed plugins are used is described on their appropriate description pages. The following syntax plugins are available in this particular DokuWiki installation:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:blockquote&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:blockquote&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Blockquote Plugin&lt;/a&gt; &lt;em&gt;2020-09-27&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#105;&amp;#107;&amp;#97;&amp;#64;&amp;#115;&amp;#101;&amp;#108;&amp;#102;&amp;#116;&amp;#104;&amp;#105;&amp;#110;&amp;#107;&amp;#101;&amp;#114;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#105;&amp;#107;&amp;#97;&amp;#64;&amp;#115;&amp;#101;&amp;#108;&amp;#102;&amp;#116;&amp;#104;&amp;#105;&amp;#110;&amp;#107;&amp;#101;&amp;#114;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Anika Henke (previous author: Gina Haeussge)&lt;/a&gt;&lt;br/&gt;
Write quotations in a semantically correct way&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:blog&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:blog&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Blog&lt;/a&gt; &lt;em&gt;2023-10-24&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Hamann, Michael Klier, Gina Haeussge&lt;/a&gt;&lt;br/&gt;
Use DokuWiki as blogging tool. (previous authors: Esther Brunner)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:catlist&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:catlist&quot; rel=&quot;ugc nofollow noopener&quot;&gt;catlist plugin&lt;/a&gt; &lt;em&gt;2023-12-16&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#120;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#120;&amp;#105;&amp;#102;&amp;#64;&amp;#120;&amp;#105;&amp;#102;&amp;#46;&amp;#102;&amp;#114;&quot; class=&quot;mail&quot; title=&quot;&amp;#120;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#120;&amp;#105;&amp;#102;&amp;#64;&amp;#120;&amp;#105;&amp;#102;&amp;#46;&amp;#102;&amp;#114;&quot;&gt;Félix Faisant&lt;/a&gt;&lt;br/&gt;
List pages and namespaces recursively&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.dokuwiki.org/plugin:changes&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.dokuwiki.org/plugin:changes&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Changes Plugin&lt;/a&gt; &lt;em&gt;2023-12-14&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
List the most recent changes of the wiki&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.dokuwiki.org/plugin:cloud&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.dokuwiki.org/plugin:cloud&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Cloud Plugin&lt;/a&gt; &lt;em&gt;2023-02-11&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Hamann, Michael Klier, Gina Haeussge&lt;/a&gt;&lt;br/&gt;
Displays the most used words in a word cloud.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:color&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:color&quot; rel=&quot;ugc nofollow noopener&quot;&gt;color syntax plugin&lt;/a&gt; &lt;em&gt;2022-10-19&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#108;&amp;#100;&amp;#46;&amp;#104;&amp;#97;&amp;#110;&amp;#99;&amp;#104;&amp;#101;&amp;#45;&amp;#111;&amp;#108;&amp;#115;&amp;#101;&amp;#110;&amp;#64;&amp;#110;&amp;#116;&amp;#110;&amp;#117;&amp;#46;&amp;#110;&amp;#111;&quot; class=&quot;mail&quot; title=&quot;&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#108;&amp;#100;&amp;#46;&amp;#104;&amp;#97;&amp;#110;&amp;#99;&amp;#104;&amp;#101;&amp;#45;&amp;#111;&amp;#108;&amp;#115;&amp;#101;&amp;#110;&amp;#64;&amp;#110;&amp;#116;&amp;#110;&amp;#117;&amp;#46;&amp;#110;&amp;#111;&quot;&gt;Harald Hanche-Olsen&lt;/a&gt;&lt;br/&gt;
Write colored text in DokuWiki.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:commentsyntax&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:commentsyntax&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Comment Syntax support&lt;/a&gt; &lt;em&gt;2022-01-01&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#38;&amp;#108;&amp;#116;&amp;#59;&amp;#115;&amp;#97;&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#46;&amp;#115;&amp;#97;&amp;#116;&amp;#111;&amp;#115;&amp;#104;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&amp;#38;&amp;#103;&amp;#116;&amp;#59;&quot; class=&quot;mail&quot; title=&quot;&amp;#38;&amp;#108;&amp;#116;&amp;#59;&amp;#115;&amp;#97;&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#46;&amp;#115;&amp;#97;&amp;#116;&amp;#111;&amp;#115;&amp;#104;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&amp;#38;&amp;#103;&amp;#116;&amp;#59;&quot;&gt;Satoshi Sahara&lt;/a&gt;&lt;br/&gt;
Allow to use source comment syntax to leave edit instructions of the page. Comments are visible only in the source view, not rendered as any page elements.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://dokuwiki.org/plugin:confightmlok&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://dokuwiki.org/plugin:confightmlok&quot; rel=&quot;ugc nofollow noopener&quot;&gt;config:htmlok Plugin&lt;/a&gt; &lt;em&gt;2023-07-12&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#108;&amp;#97;&amp;#109;&amp;#98;&amp;#97;&amp;#108;&amp;#105;&amp;#99;&amp;#105;&amp;#111;&amp;#117;&amp;#115;&amp;#32;&amp;#91;&amp;#97;&amp;#116;&amp;#93;&amp;#32;&amp;#116;&amp;#117;&amp;#116;&amp;#97;&amp;#32;&amp;#91;&amp;#100;&amp;#111;&amp;#116;&amp;#93;&amp;#32;&amp;#105;&amp;#111;&quot; class=&quot;mail&quot; title=&quot;&amp;#108;&amp;#97;&amp;#109;&amp;#98;&amp;#97;&amp;#108;&amp;#105;&amp;#99;&amp;#105;&amp;#111;&amp;#117;&amp;#115;&amp;#32;&amp;#91;&amp;#97;&amp;#116;&amp;#93;&amp;#32;&amp;#116;&amp;#117;&amp;#116;&amp;#97;&amp;#32;&amp;#91;&amp;#100;&amp;#111;&amp;#116;&amp;#93;&amp;#32;&amp;#105;&amp;#111;&quot;&gt;Luis Machuca Bezzaza&lt;/a&gt;&lt;br/&gt;
Enables raw HTML like the old &amp;#039;config:htmlok&amp;#039; behaviour.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://dokuwiki.org/plugin:discussion&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://dokuwiki.org/plugin:discussion&quot; rel=&quot;ugc nofollow noopener&quot;&gt;discussion plugin&lt;/a&gt; &lt;em&gt;2025-07-04&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Hamann, Gerrit Uitslag, Gina Häussge, Christopher Smith, Michael Klier, Esther Brunner, Matthias Schulte&lt;/a&gt;&lt;br/&gt;
Provides discussion funtionality for wiki pages&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:encryptedpasswords&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:encryptedpasswords&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Encrypted Passwords Plugin&lt;/a&gt; &lt;em&gt;2023-12-20&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
This plugin let you store 256 bit AES encrypted passwords in your DokuWiki pages. The password can be decrypted by clicking them (Javascript must be enabled).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://dokuwiki.org/plugin:folded&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://dokuwiki.org/plugin:folded&quot; rel=&quot;ugc nofollow noopener&quot;&gt;folded plugin&lt;/a&gt; &lt;em&gt;2023-07-22&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Hamann, Fabian van-de-l_Isle, Christopher Smith, Esther Brunner&lt;/a&gt;&lt;br/&gt;
Foldable page sections&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.dokuwiki.org/plugin:iframe&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.dokuwiki.org/plugin:iframe&quot; rel=&quot;ugc nofollow noopener&quot;&gt;iframe plugin&lt;/a&gt; &lt;em&gt;2023-08-17&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt;&lt;br/&gt;
Allows external URLs to be loaded into an iframe in your DokuWiki page.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://dokuwiki.org/plugin:include&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://dokuwiki.org/plugin:include&quot; rel=&quot;ugc nofollow noopener&quot;&gt;include plugin&lt;/a&gt; &lt;em&gt;2025-07-22&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Hamann, Gina Häussge, Christopher Smith, Michael Klier, Esther Brunner&lt;/a&gt;&lt;br/&gt;
Functions to include another page in a wiki page&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:info&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:info&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Info Plugin&lt;/a&gt; &lt;em&gt;2020-06-04&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Displays information about various DokuWiki internals&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:keyboard&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:keyboard&quot; rel=&quot;ugc nofollow noopener&quot;&gt;keyboard&lt;/a&gt; &lt;em&gt;2023-02-23&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#111;&amp;#115;&amp;#100;&amp;#64;&amp;#102;&amp;#111;&amp;#111;&amp;#115;&amp;#101;&amp;#108;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot; class=&quot;mail&quot; title=&quot;&amp;#111;&amp;#115;&amp;#100;&amp;#64;&amp;#102;&amp;#111;&amp;#111;&amp;#115;&amp;#101;&amp;#108;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot;&gt;Gina Häußge&lt;/a&gt;&lt;br/&gt;
The keyboard plugin provides a combined syntax and action plugin in order to markup text as keyboard keys, similar to (and making use of) the existing (X)HTML tag &amp;lt;kbd&amp;gt;…&amp;lt;/kbd&amp;gt;. A quick button for the markup is automatically inserted into the toolbar of the edit form.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.dokuwiki.org/plugin:lastmod&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.dokuwiki.org/plugin:lastmod&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Lastmod Plugin&lt;/a&gt; &lt;em&gt;2016-02-03&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#100;&amp;#101;&amp;#118;&amp;#101;&amp;#108;&amp;#111;&amp;#112;&amp;#64;&amp;#100;&amp;#105;&amp;#101;&amp;#112;&amp;#108;&amp;#111;&amp;#101;&amp;#103;&amp;#101;&amp;#114;&amp;#115;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#101;&amp;#118;&amp;#101;&amp;#108;&amp;#111;&amp;#112;&amp;#64;&amp;#100;&amp;#105;&amp;#101;&amp;#112;&amp;#108;&amp;#111;&amp;#101;&amp;#103;&amp;#101;&amp;#114;&amp;#115;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Dennis Ploeger&lt;/a&gt;&lt;br/&gt;
Displays the timestamp of the last modification of the current or another page.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.dokuwiki.org/plugin:log&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.dokuwiki.org/plugin:log&quot; rel=&quot;ugc nofollow noopener&quot;&gt;log plugin&lt;/a&gt; &lt;em&gt;2019-02-27&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Adrian Lang&lt;/a&gt;&lt;br/&gt;
Provide simple logs&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:note&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:note&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Note Plugin&lt;/a&gt; &lt;em&gt;2024-04-15&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#114;&amp;#105;&amp;#98;&amp;#64;&amp;#97;&amp;#110;&amp;#97;&amp;#101;&amp;#108;&amp;#46;&amp;#101;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#114;&amp;#105;&amp;#98;&amp;#64;&amp;#97;&amp;#110;&amp;#97;&amp;#101;&amp;#108;&amp;#46;&amp;#101;&amp;#117;&quot;&gt;Anael Mobilia&lt;/a&gt;&lt;br/&gt;
Add Note/Important/Tip/Warning Capability (DIV+CSS box)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.dokuwiki.org/plugin:nspages&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.dokuwiki.org/plugin:nspages&quot; rel=&quot;ugc nofollow noopener&quot;&gt;nspages plugin&lt;/a&gt; &lt;em&gt;2024-11-22&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#103;&amp;#117;&amp;#105;&amp;#108;&amp;#108;&amp;#97;&amp;#117;&amp;#109;&amp;#101;&amp;#46;&amp;#116;&amp;#117;&amp;#114;&amp;#114;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#103;&amp;#117;&amp;#105;&amp;#108;&amp;#108;&amp;#97;&amp;#117;&amp;#109;&amp;#101;&amp;#46;&amp;#116;&amp;#117;&amp;#114;&amp;#114;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Guillaume Turri&lt;/a&gt;&lt;br/&gt;
Presents a toc of the selected namespace using &amp;lt;nspages&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:NumberedHeadings&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:NumberedHeadings&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Numbered Headings&lt;/a&gt; &lt;em&gt;2023-09-12&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#115;&amp;#97;&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#46;&amp;#115;&amp;#97;&amp;#116;&amp;#111;&amp;#115;&amp;#104;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#97;&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#46;&amp;#115;&amp;#97;&amp;#116;&amp;#111;&amp;#115;&amp;#104;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Satoshi Sahara&lt;/a&gt;&lt;br/&gt;
Prepend tiered numbers as indexes for hierarchical headings&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://dokuwiki.org/plugin:orphanswanted&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://dokuwiki.org/plugin:orphanswanted&quot; rel=&quot;ugc nofollow noopener&quot;&gt;orphanswanted plugin&lt;/a&gt; &lt;em&gt;2023-05-30&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#108;&amp;#117;&amp;#112;&amp;#111;&amp;#52;&amp;#57;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#108;&amp;#117;&amp;#112;&amp;#111;&amp;#52;&amp;#57;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Doug Edmunds, Cyrille37, Federico Ariel Castagnini, Andy Webber, Matthias Schulte, Christian Paul, alexdraconian&lt;/a&gt;&lt;br/&gt;
Display Orphans, Wanteds and Valid link tables&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:pagelist&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:pagelist&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Pagelist Plugin&lt;/a&gt; &lt;em&gt;2023-08-27&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Matthias Schulte, Michael Hamann, Michael Klier, Gina Haeussge&lt;/a&gt;&lt;br/&gt;
Lists pages in a nice formatted way&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:pagequery&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:pagequery&quot; rel=&quot;ugc nofollow noopener&quot;&gt;PageQuery Plugin&lt;/a&gt; &lt;em&gt;2025-03-04&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#109;&amp;#112;&amp;#114;&amp;#105;&amp;#110;&amp;#115;&amp;#64;&amp;#117;&amp;#115;&amp;#101;&amp;#114;&amp;#115;&amp;#46;&amp;#115;&amp;#102;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#112;&amp;#114;&amp;#105;&amp;#110;&amp;#115;&amp;#64;&amp;#117;&amp;#115;&amp;#101;&amp;#114;&amp;#115;&amp;#46;&amp;#115;&amp;#102;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot;&gt;Mark C. Prins, previously Symon Bent&lt;/a&gt;&lt;br/&gt;
Search for (fulltext) and list wiki pages, sorted and optionally grouped by name, date, creator, abc, etc. in columns. Insert the pagequery markup wherever you want your list to appear.  E.g.{{pagequery&amp;gt;[query;fulltext;sort=key:direction,key2:direction;group;limit=??;cols=?;inwords;proper]}} [..] = optional&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:tabbox&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:tabbox&quot; rel=&quot;ugc nofollow noopener&quot;&gt;tabbox plugin&lt;/a&gt; &lt;em&gt;2018-04-29&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Insert a tabbed box in a page&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:tag&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:tag&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Tag Plugin&lt;/a&gt; &lt;em&gt;2023-10-17&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Hamann, Gina Häussge, Christopher Smith, Michael Klier, Esther Brunner&lt;/a&gt;&lt;br/&gt;
tag wiki pages&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:todo&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:todo&quot; rel=&quot;ugc nofollow noopener&quot;&gt;ToDo&lt;/a&gt; &lt;em&gt;2025-08-26&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#114;&amp;#111;&amp;#115;&amp;#115;&amp;#101;&amp;#110;&amp;#119;&amp;#97;&amp;#110;&amp;#110;&amp;#101;&amp;#46;&amp;#97;&amp;#116;&amp;#44;&amp;#32;&amp;#109;&amp;#97;&amp;#114;&amp;#103;&amp;#64;&amp;#114;&amp;#122;&amp;#46;&amp;#116;&amp;#117;&amp;#45;&amp;#99;&amp;#108;&amp;#97;&amp;#117;&amp;#115;&amp;#116;&amp;#104;&amp;#97;&amp;#108;&amp;#46;&amp;#100;&amp;#101;&amp;#44;&amp;#32;&amp;#100;&amp;#101;&amp;#118;&amp;#101;&amp;#108;&amp;#111;&amp;#112;&amp;#64;&amp;#119;&amp;#101;&amp;#105;&amp;#110;&amp;#109;&amp;#101;&amp;#105;&amp;#115;&amp;#116;&amp;#101;&amp;#114;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#114;&amp;#111;&amp;#115;&amp;#115;&amp;#101;&amp;#110;&amp;#119;&amp;#97;&amp;#110;&amp;#110;&amp;#101;&amp;#46;&amp;#97;&amp;#116;&amp;#44;&amp;#32;&amp;#109;&amp;#97;&amp;#114;&amp;#103;&amp;#64;&amp;#114;&amp;#122;&amp;#46;&amp;#116;&amp;#117;&amp;#45;&amp;#99;&amp;#108;&amp;#97;&amp;#117;&amp;#115;&amp;#116;&amp;#104;&amp;#97;&amp;#108;&amp;#46;&amp;#100;&amp;#101;&amp;#44;&amp;#32;&amp;#100;&amp;#101;&amp;#118;&amp;#101;&amp;#108;&amp;#111;&amp;#112;&amp;#64;&amp;#119;&amp;#101;&amp;#105;&amp;#110;&amp;#109;&amp;#101;&amp;#105;&amp;#115;&amp;#116;&amp;#101;&amp;#114;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Leo Eibler, Christian Marg, Markus Gschwendt, Robert Weinmeister&lt;/a&gt;&lt;br/&gt;
Create a checkbox based todo list with optional user assignment (basic syntax: &amp;lt;todo&amp;gt;This is a ToDo&amp;lt;/todo&amp;gt;). It can also be used as a lightweight task list management system.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:wrap&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:wrap&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Wrap Plugin&lt;/a&gt; &lt;em&gt;2023-08-13&lt;/em&gt; by &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#105;&amp;#107;&amp;#97;&amp;#64;&amp;#115;&amp;#101;&amp;#108;&amp;#102;&amp;#116;&amp;#104;&amp;#105;&amp;#110;&amp;#107;&amp;#101;&amp;#114;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#105;&amp;#107;&amp;#97;&amp;#64;&amp;#115;&amp;#101;&amp;#108;&amp;#102;&amp;#116;&amp;#104;&amp;#105;&amp;#110;&amp;#107;&amp;#101;&amp;#114;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Anika Henke&lt;/a&gt;&lt;br/&gt;
Universal plugin which combines functionalities of many other plugins. Wrap wiki text inside containers (divs or spans) and give them a class (choose from a variety of preset classes), a width and/or a language with its associated text direction.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Syntax Plugins&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;syntax_plugins&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:34,&amp;quot;range&amp;quot;:&amp;quot;21100-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;This is a footnote&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;when the aspect ratio of the given width and height doesn&amp;#039;t match that of the image, it will be cropped to the new ratio before resizing&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 04 Mar 2025 06:44:15 +0000</pubDate>
        </item>
        <item>
            <title>Radio Update - QRP etc</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:blog:radio_update_-_qrp_etc</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;radio_update_-_qrp_etc&quot;&gt;Radio Update - QRP etc&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
After setting up a basic station in the small “office” - just one rig and my keys - I decided to make a “real” hamshack with more radios, some tools, test equipment etc.
&lt;/p&gt;

&lt;p&gt;
I added two shelves above the desk to hold radios, PSUs, &amp;#039;scope, tools etc. I&amp;#039;ve now got a “one-desk shack” that can be used for operating on air and building &amp;amp; repairing equipment (on a small scale)
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:blog:shack_now.jpg&quot; class=&quot;media&quot; title=&quot;public:blog:shack_now.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=8493af&amp;amp;media=public:blog:shack_now.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I found that the stock mic for my FT891 was faulty - the mic element is open-circuit - so I bought a Heil HMM fist mic and spent some time setting up the EQ for a reasonable “communications” quality audio. I&amp;#039;m not naturally a &amp;#039;phone operator, so I&amp;#039;ll not be having lots of “ragchew” QSOs, and “communications quality” is all I&amp;#039;m aiming for - to be audible - not quite as extreme as a Clansman but with enough HF emphasis, and enough compression to cut through the noise.
&lt;/p&gt;

&lt;p&gt;
I though briefly about limiting myself to SSB for a few months, to get used to talking on the radio, but that&amp;#039;s NEVER going to happen.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Radio Update - QRP etc&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;radio_update_-_qrp_etc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1073&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;the_qmx&quot;&gt;The QMX&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Then I found a box with an unbuilt &lt;a href=&quot;https://qrp-labs.com/qmx&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://qrp-labs.com/qmx&quot; rel=&quot;ugc nofollow noopener&quot;&gt; QRPLabs &amp;quot;QMX&amp;quot; kit&lt;/a&gt;! I&amp;#039;d bought it in August 2023, and hadn&amp;#039;t built it. I have a QCX-mini for 40m and it&amp;#039;s a great little radio, and I thought the QMX would be the next obvious step. Then I forgot about it.
&lt;/p&gt;

&lt;p&gt;
So, on Saturday I got the box, opened it. Printed out the Assembly Manual. Watched Hans&amp;#039;s You Tube video highlighting the pitfalls. And got started.
&lt;/p&gt;

&lt;p&gt;
The first thing was to check if my early (Rev 1) board has the “Power Board Short” issue - and it did - so I got out my hot-air station and moved the MOSFET a mm or two to remove the short.
&lt;/p&gt;

&lt;p&gt;
Then down to business…. building.
&lt;/p&gt;

&lt;p&gt;
I did it all in one day, with the occasional break for food, dog walk, etc….. The most challenging thing was winding the 2 binocular ferrite transformers - the PA output transformer and the SWR brigge transformer. The “normal” toroid cores were all straightforward. 
&lt;/p&gt;

&lt;p&gt;
I built it for 9V operation (this determines the form of the PA output transformer).
&lt;/p&gt;

&lt;p&gt;
I worked first time. Which is amazing given the small size and relatively dense component layout. 
&lt;/p&gt;

&lt;p&gt;
On a PSU set for 9V I get at least 5W on all bands. I made a string of 4 x 1N4001 diodes to drop ~2.4V and powered it from the normal shack supply. And used the handy config option “Limit PA Volts” to set a limit of 9.5V. This gives a comfortable 5W on all bands without any risk of overheating the finals etc.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve used it on WSPR - both via WSJT-X and using the internal standalone WSPR Beacon mode. 
&lt;/p&gt;

&lt;p&gt;
I upgraded to the current beta firmware 1_04_002 and the main change seems to be the removal of the Beacon mode and its replacement with “Virtual U3S” - a mimic of the functionality of the U3S multi-function beacon TX. Currently only WSPR is supported - but the other modes will follow. This works well - and allows a “schedule” to change frequency / Mode etc on sequential TX periods.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The QMX&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_qmx&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1074-2991&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;back_to_qrp_cw&quot;&gt;Back to QRP CW&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Then I had to try it on CW. 
&lt;/p&gt;

&lt;p&gt;
My first CW QSO was on 30m with Rob, OK7SX, on Wednesday 29th.
&lt;/p&gt;

&lt;p&gt;
Last night I had 3 x CW QSOs : F/FK8IK (Mic nr Vichy), IK3/UY7LA (Alex, nr Venice) on 30m and the icing on the cake was a chat with Will GM0HKS on 40m.
&lt;/p&gt;

&lt;p&gt;
Will was using a K2 at 5W, but did mention that he still has the “wee K1” - that&amp;#039;s &lt;strong&gt;my&lt;/strong&gt; old K1 that I built back in 2003. I sold it (and deeply regret doing so) and it ended up in Will&amp;#039;s care. We&amp;#039;ve had a few QSOs over the years and he never fails to mention the “wee K1”.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Back to QRP CW&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;back_to_qrp_cw&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2992-3541&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;the_next_step&quot;&gt;The next step&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I&amp;#039;ve been thinking about where I want to go with radio recently. 
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;What actually gives me pleasure?&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;What can I do to avoid the aspects of the hobby that spoil it for me?&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Building and using the QMX reminded me of the fun I got with I first built the “wee K1” in 2003. 
&lt;/p&gt;

&lt;p&gt;
I hadn&amp;#039;t been active in the hobby for many years, my log book shows a couple of FM contacts in 2002 with locals on the repeater, and prior to that I was using Packet Radio in 1994, while still living in Huddersfield and working at Holme Moss. The last time I&amp;#039;d actually been on HF CW was while I was at UMIST, in 1985 using the club station.
&lt;/p&gt;

&lt;p&gt;
I built the K1 in 2003 and went CW crazy!
&lt;/p&gt;

&lt;p&gt;
The basic chronology :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; pre-2003&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; 1983  - first licensed as G4SLV, still at school. Used 10mFM and 2m CW before going away to University in 1984&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; 1984 - 1988 - at UMIST, and active in the Radio Society. Used club station for HF CW, as well as 70cm ATV and “other” things&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; 1988 - 1995 - not much radio - some Packet on 2m&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; 1995 - moved to Wick. Some HF SWL using my old AR88D. No “ham” radio&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; 1999 - moved to Shetland. Some 2m activity on local repeater. Some HF SWL with AR88D and AR7030.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; August 2003 - K1 - 2 bands - 40m / 20m - lots of QSOs. A very active phase on the hobby on-the-air.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Some time in 2004 - K1 - added 4 band board &amp;amp; concentrated on 40/30/20&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Some time in 2004 - IC706MK2G - all bands - 100W - K1 use still frequent - but the lure of 100W was strong for a while - plus digimodes (PSK31 etc)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; November 2004 - 60m use began - mostly SSB - K1 still in use for QRP CW&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2007 - K2 added to the shack&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; July 2007 - Start of 500kHz “experiment”. All HF working stopped and lots of time spent with MF - Sold K1 &amp;amp; K2 and IC706. Bought IC718&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Jan 2009 - Back to HF, mix of QRO and QRP. Mostly CW, Some SSB and digimodes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Nov 2010 - Back to 500kHz, with some HF mixed in.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Jan 2011 - Back to HF&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
At some point during the MF phase I sold the K1 and K2. 
&lt;/p&gt;

&lt;p&gt;
From 2012 I spent most of my time on 60m using digimodes, mostly Olivia. I still dabbled on HF CW. Mostly QRO. Bought IC7200 to add to the Shack.
&lt;/p&gt;

&lt;p&gt;
The three main phases were 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; QRP CW on 40m/20m with K1&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 500kHz CW (and some WSPR etc)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 60m Digimodes&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Looking at my logbooks I can tell that I really delved deeply into QRP CW with the K1. I worked many, many people in many, many places and had a &lt;strong&gt;lot&lt;/strong&gt; of fun with such a simple little radio.
&lt;/p&gt;

&lt;p&gt;
The K2 was fun to build, but it got little use - I remember preferring the “wee K1” to its big brother. The 500kHz experiment in 2007 intervened and pushed the QRP HF rigs to the side and they were sold to fund “more important” items.
&lt;/p&gt;

&lt;p&gt;
On 60m I had a lot of fun, learning a lot about the propagation on the band, and about the different behaviour of the various digimodes.
&lt;/p&gt;

&lt;p&gt;
I came back to HF CW a few times - but nothing sparked joy like those early times with the K1.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The next step&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_next_step&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3542-6481&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;the_future&quot;&gt;The future?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Building the QMX has shown me that it&amp;#039;s possible to have fun building and then have more fun using simple QRP radios. And this might be the push I need to get back into QRP. 
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s more challenging these days - as most people in urban environments have raised noise levels and struggle to hear “normal weak signals” - but there are still people actively using QRP, and only QRP, to fully enjoy the hobby.
&lt;/p&gt;

&lt;p&gt;
If I can&amp;#039;t work someone due to my weak signal, then so be it… move on… there&amp;#039;ll always be someone else to work.
&lt;/p&gt;

&lt;p&gt;
One area I&amp;#039;ve never tried is QRP SSB. So I&amp;#039;ve turned the power on my FT891 (the “SSB rig”) down to 10 watts. I&amp;#039;ll give it a try some time. But once more my focus is back to CW. And now with an additional slant - QRP, and only QRP.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ll write more as I explore.
&lt;/p&gt;

&lt;p&gt;
My G-QRP Club membership number is 2377, dating back to around 1984…. so I&amp;#039;ve been at it a long time, in fits and starts.
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:cw&amp;amp;do=showtag&amp;amp;tag=cw&quot; class=&quot;wikilink1&quot; title=&quot;tag:cw&quot; rel=&quot;tag&quot;&gt;cw&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:qrp&amp;amp;do=showtag&amp;amp;tag=qrp&quot; class=&quot;wikilink1&quot; title=&quot;tag:qrp&quot; rel=&quot;tag&quot;&gt;qrp&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:qmx&amp;amp;do=showtag&amp;amp;tag=qmx&quot; class=&quot;wikilink1&quot; title=&quot;tag:qmx&quot; rel=&quot;tag&quot;&gt;qmx&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The future?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_future&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;6482-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 07 Jul 2026 09:05:14 +0000</pubDate>
        </item>
        <item>
            <title>LF15C - firmware for the DM15</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:3rd:lf15c</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:3rd:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:3rd:start&quot; data-wiki-id=&quot;public:calculator:3rd:start&quot;&gt;3rd Party Firmware&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;lf15c_-_firmware_for_the_dm15&quot;&gt;LF15C - firmware for the DM15&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; A 3rd Party Firmware for the DM15 family of calculators &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;LF15C - firmware for the DM15&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lf15c_-_firmware_for_the_dm15&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;13-122&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;overview_of_lf15c&quot;&gt;Overview of LF15C&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Full development history in HP Forum thread &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;New firmware for the Swissmicros DM15L&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; LF15C is written by HP Museum Forum member &lt;strong&gt;jebedeo&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; It is a replacement firmware for the Swiss Micros &lt;a href=&quot;https://www.swissmicros.com/product/dm15c&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.swissmicros.com/product/dm15c&quot; rel=&quot;ugc nofollow noopener&quot;&gt; DM15C&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://www.swissmicros.com/product/dm15l&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.swissmicros.com/product/dm15l&quot; rel=&quot;ugc nofollow noopener&quot;&gt; DM15L&lt;/a&gt; calculators.&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; also runs on the original &lt;a href=&quot;https://www.swissmicros.com/product/dm15&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.swissmicros.com/product/dm15&quot; rel=&quot;ugc nofollow noopener&quot;&gt; DM15&lt;/a&gt; credit card version no longer in production &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; It is not an emulation or an exact simulation of the HP15C&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; It runs directly on the hardware without an emulation layer.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; It is very much &lt;strong&gt;faster&lt;/strong&gt; than the stock firmware&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; It has full-time complex number support&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; including display of the full real &amp;amp; imaginary parts on the LCD together &lt;code&gt;3.345 +22.356 i&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; It has a 4-level stack with &lt;strong&gt;full-time 2-level display&lt;/strong&gt; of &lt;code&gt;X&lt;/code&gt; and &lt;code&gt;Y&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; All the main HP15C functions are included &lt;strong&gt;with the exception of Matrix support&lt;/strong&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acalculator%3A3rd%3Alf15c&amp;amp;media=public:calculator:info:img_20260130_092509.jpg&quot; class=&quot;media&quot; title=&quot;public:calculator:info:img_20260130_092509.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=0e1825&amp;amp;media=public:calculator:info:img_20260130_092509.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Overview of LF15C&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;overview_of_lf15c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;123-1211&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;installing_lf15c&quot;&gt;Installing LF15C&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installing LF15C&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installing_lf15c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1212-1242&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;dm15l_running_v32_or_earlier_linux&quot;&gt;DM15L running V32 or earlier (Linux)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;sudo lpc21isp LF15C_250408.hex /dev/ttyUSB0 115200 1200&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Press hidden &lt;code&gt;reset&lt;/code&gt; button&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; firmware is flashed&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; press hidden &lt;code&gt;reset&lt;/code&gt; button to start new firmware&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DM15L running V32 or earlier (Linux)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dm15l_running_v32_or_earlier_linux&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1243-1472&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;dm15l_running_v33_or_later_linux&quot;&gt;DM15L running V33 or later (Linux)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;plugin_note noteclassic&quot;&gt;This behaviour isn&amp;#039;t consistent!
&lt;p&gt;
I&amp;#039;ve seen it be possible to flash and run LF15C directly after DM15 V34 with no problems.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve also seen the problems described below, requiring downgrade to V32.
&lt;/p&gt;

&lt;p&gt;
Just bear it in mind if you have problems starting LF15C after flashing it on top of V33-onwards
&lt;/p&gt;

&lt;/div&gt;
&lt;p&gt;
The new Swiss Micros firmware V33 changes the behaviour of the bootloader, and it appears to be impossible to flash 3rd party firmware when the calculator is running V33 or later. 
&lt;/p&gt;

&lt;p&gt;
The firmware appears to flash correctly, but on &lt;code&gt;reset&lt;/code&gt; it will not start
&lt;/p&gt;

&lt;p&gt;
The solution is to downgrade to &lt;strong&gt;V32&lt;/strong&gt; first, and then install &lt;strong&gt;LF15C&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;sudo lpc21isp DM15_M1B_32.hex /dev/ttyUSB0 115200 1200&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; press hidden &lt;code&gt;reset&lt;/code&gt; button&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; firmware is flashed&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; press hidden &lt;code&gt;reset&lt;/code&gt; button to start V32 firmware&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;sudo lpc21isp LF15C_250408.hex /dev/ttyUSB0 115200 1200&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; press hidden &lt;code&gt;reset&lt;/code&gt; button&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; firmware is flashed&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; press hidden &lt;code&gt;reset&lt;/code&gt; button to start new LF15C firmware&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DM15L running V33 or later (Linux)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dm15l_running_v33_or_later_linux&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1473-2533&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;for_installation_using_windows&quot;&gt;For installation using Windows&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; The Swiss Micros &lt;strong&gt;Voyager Update Tool&lt;/strong&gt; will work to install LF15C&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Do not use the new Web Update tool&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; The same caveats regarding installation after using the Swiss Micros V33 apply&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;First downgrade to V32&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Then flash with LF15C&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; You need to use the hidden &lt;code&gt;reset&lt;/code&gt; button in all cases.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;For installation using Windows&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;for_installation_using_windows&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2534-2900&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;files&quot;&gt;Files&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;download_from_here&quot;&gt;Download from here&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;div class=&quot;table sectionedit8&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Latest LF15C firmware &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_250408.hex&quot; class=&quot;media mediafile mf_hex&quot; title=&quot;public:calculator:info:lf15c_250408.hex (175.8 KB)&quot;&gt;lf15c_250408.hex&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;V32 firmware&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:dm15_m1b_32.hex&quot; class=&quot;media mediafile mf_hex&quot; title=&quot;public:calculator:info:dm15_m1b_32.hex (117.1 KB)&quot;&gt;dm15_m1b_32.hex&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Swiss Micros Voyager Windows Update Tool&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:voyage_firmware_tool.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:voyage_firmware_tool.zip (368.8 KB)&quot;&gt;voyage_firmware_tool.zip&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2947-3180&amp;quot;} --&gt;
&lt;/div&gt;

&lt;h4 id=&quot;download_from_hp_forum_swiss_micros&quot;&gt;Download from HP Forum &amp;amp; Swiss Micros&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; The Firmware files are available from the HP Forum Thread for this firmware - at the foot of &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-173574.html#pid173574&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-173574.html#pid173574&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Post #1&lt;/a&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; the version attached to Post #1 is always the latest available. &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; At present (Jan &amp;#039;26) there is also a beta version which is being used to test various compiler optimizations, and is buggy and best avoided.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Swiss Micros &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; V32 Firmware &lt;a href=&quot;https://technical.swissmicros.com/voyager/firmware/old/DM15_M1B_32.hex&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://technical.swissmicros.com/voyager/firmware/old/DM15_M1B_32.hex&quot; rel=&quot;ugc nofollow noopener&quot;&gt; DM15_M1B_32.hex&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Voyager Update Tool &lt;a href=&quot;https://technical.swissmicros.com/voyager/firmware/Voyage_Firmware_Tool.zip&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://technical.swissmicros.com/voyager/firmware/Voyage_Firmware_Tool.zip&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Voyager Firmware Update Tool&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2901-3897&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;lf15c_general_info&quot;&gt;LF15C General Info&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Full time complex stack shows real &amp;amp; imaginary parts together as e.g. Rectangular: &lt;code&gt;3.45 +4.34 i&lt;/code&gt; or Polar: &lt;code&gt;5.5442 ∠51.5177&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; maximum number range approx. &lt;strong&gt;±1.797 x 10&lt;sup&gt;308&lt;/sup&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; largest integer factorial &lt;code&gt;170&lt;/code&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;x!&lt;/kbd&gt; = &lt;code&gt;7.2574 E306&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; smallest positive number approx. &lt;strong&gt;1.00 10&lt;sup&gt;-323&lt;/sup&gt;&lt;/strong&gt; before &lt;code&gt;0&lt;/code&gt; is returned&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Precision &lt;strong&gt;15&lt;/strong&gt; decimal places&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;π&lt;/strong&gt; displays as &lt;strong&gt;3.14159265358979&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;e&lt;/strong&gt; displays as &lt;strong&gt;2.71828182845905&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Fingerprinting  - see &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:benchmarking:start#fingerprinting&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:benchmarking:start&quot; data-wiki-id=&quot;public:calculator:benchmarking:start&quot;&gt;Fingerprinting&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;9&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;SIN&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;COS&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;TAN&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ATAN&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ACOS&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ASIN&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;9&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;-&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
 &lt;strong&gt;-1.6584 x10 &lt;sup&gt;-10&lt;/sup&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; User Programs can be saved/loaded via USB Serial port using a terminal emulator such as Putty&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; LF15C uses &lt;strong&gt;binary&lt;/strong&gt; floating point representation, rather than the more common BCD.&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; This improves the speed but introduces occasional &lt;em&gt;&lt;strong&gt;small&lt;/strong&gt;&lt;/em&gt; rounding errors&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_d5850fee299d2647c10c431e35c31812_1&quot;&gt;Example (Click to view) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_d5850fee299d2647c10c431e35c31812_1&quot;&gt;
&lt;p&gt;
Try to add 0.3 to itself twice to make 0.9 and subtract 0.9 from your calculated value
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;0.3&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;+&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;+&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
This shows &lt;code&gt;0.9000&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Now enter 0.9
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;0.9&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
and subtract
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;-&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
gives the answer &lt;code&gt;-1.1102 E-16&lt;/code&gt; instead of &lt;code&gt;0.000&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
A tiny error but visible on certain calculations where the binary cannot accurately represent a decimal fraction…. if you care of an error of the order of 10&lt;sup&gt;-16&lt;/sup&gt;
&lt;/p&gt;

&lt;p&gt;
This error is only significant if you need to multiply very small results of such calculations by very big numbers. 
&lt;/p&gt;

&lt;p&gt;
Most calculations are not affected by the binary representation issues and the benefit of faster calculations more than compensates.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;LF15C General Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lf15c_general_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;3898-5699&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;hp15c_functions&quot;&gt;HP15C functions&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Fix / Sci / Eng display formats&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; √x / x&lt;sup&gt;2&lt;/sup&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; e&lt;sup&gt;x&lt;/sup&gt; / Ln&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 10&lt;sup&gt;x&lt;/sup&gt; / Log&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; y&lt;sup&gt;x&lt;/sup&gt; / %&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 1/x / Δ%&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Sin / ASin&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Cos / ACos&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tan / ATan&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Hyperbolics of Sin/Cos/Tan&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; CHS / ABS&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; EEX / π&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Deg / Rad / Grad Angle Mode&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; →H.ms / →H  Conversions&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; →Rad / →Deg Conversions&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; X!&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; integer, non-integer, negative and complex support&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Statistics&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Σ+ two variable accumulation&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; mean&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; standard deviation&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Linear Regression&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; slope / intercept&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; ŷ estimation / r correlation coefficient&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Combinations / Permutations&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Usual 4 level stack manipulations&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Last x&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Roll Down ↓&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Roll Up ↑&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Swap &lt;code&gt;x&lt;/code&gt; ↔ &lt;code&gt;y&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Swap &lt;code&gt;x&lt;/code&gt; ↔ any Storage Register&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;100&lt;/strong&gt; storage registers (numbered 00-99)&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; capable of saving Complex Numbers&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Indirect Register pair I / (i)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Indirect Program Label / Line number addressing via Register I&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Random Number Generator&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Rounding&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Fractional / Integer &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Usual Keystroke Programming features&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; SST/BST&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; LBL&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; LBL A - E&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; LBL &lt;strong&gt;00 - 99&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level3 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; DSE / ISG&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; including usual loop control indexing&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Logical tests&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Branching&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; GTO&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; GSB&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level4&quot;&gt;&lt;div class=&quot;li&quot;&gt; RTN&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; PSE&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; R/S&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; SF / CF / FS? &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; 10 user flags for program control&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Solver&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; can be used via a program&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Numerical Integration&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; variable precision via display digit format&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; can be used via a program&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; quick clear of&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Statistical data&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Individual Program&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; All stored Programs&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Storage Registers (0-99, I and (i))&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Full digit mantissa preview&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HP15C functions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hp15c_functions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;5700-7536&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;hp15c_features_not_supported&quot;&gt;HP15C features not supported&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Matrix functions&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; User Mode&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Memory management&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; partitioning between Storage Registers and Program Space is not required or supported&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HP15C features not supported&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hp15c_features_not_supported&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;7537-7730&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;dm15l_features_not_supported&quot;&gt;DM15L features not supported&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Real Time clock&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Switchable 1-line display option (V33 feature)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CPU speed switching&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Display Font options&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Adjustable LCD contrast&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Various self-tests&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Conversions &amp;amp; Constants (V33 feature)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DM15L features not supported&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dm15l_features_not_supported&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;7731-7988&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;speed_tests&quot;&gt;Speed tests&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Very much faster than stock DM15L firmware … see &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:benchmarking:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:benchmarking:start&quot; data-wiki-id=&quot;public:calculator:benchmarking:start&quot;&gt;Benchmarking&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Speed tests&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;speed_tests&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;7989-8096&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;n-queens&quot;&gt;n-Queens&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit15&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Calculator&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Firmware&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Time&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DM15L&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; V34 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;202 seconds&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DM42 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;3.23 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;7.30 seconds&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DM15L*&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;LF15C 250408&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 0.992 seconds&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;8116-8233&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;n-Queens&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;n-queens&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;8097-8234&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;savage&quot;&gt;Savage&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit17&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Calculator&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Firmware&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Time&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DM15L &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; V34 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 247 seconds &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DM42 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 3.23&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 14.9 seconds&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DM15L* &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;LF15C 250408 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 4.008 seconds &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;8253-8378&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Savage&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;savage&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;8235-8381&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;using_lf15c&quot;&gt;Using LF15C&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Using LF15C&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;using_lf15c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;8382-8407&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit19&quot; id=&quot;complex_numbers&quot;&gt;Complex Numbers&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The stack is permanently in &lt;strong&gt;complex mode&lt;/strong&gt; and operates slightly differently to the stock HP15C&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;making_manipulating_a_complex_number&quot;&gt;Making &amp;amp; manipulating a complex number&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Press &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;I&lt;/kbd&gt; in normal mode to create &lt;strong&gt;&amp;amp; destroy&lt;/strong&gt; a complex number from ⇔ to &lt;code&gt;y&lt;/code&gt; and &lt;code&gt;x&lt;/code&gt; on the stack.
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_d5850fee299d2647c10c431e35c31812_2&quot;&gt;Example (click to view) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_d5850fee299d2647c10c431e35c31812_2&quot;&gt;
&lt;p&gt;
&lt;code&gt;y&lt;/code&gt; → Real and &lt;code&gt;x&lt;/code&gt; → Imaginary
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;3&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;4&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Y: 3.000&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 4_&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;I&lt;/kbd&gt; creates 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 3.000 +4.000 i&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Press &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;(i)&lt;/kbd&gt; to change &lt;code&gt;x&lt;/code&gt; to its complex conjugate 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 3.000 -4.000 i&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Press &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Re&amp;lt;&amp;gt;Im&lt;/kbd&gt; to switch Real and Imaginary parts of complex number in &lt;code&gt;x&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: -4.000 +3.000 i&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Press &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;I&lt;/kbd&gt; will destroy the complex number back to separate real numbers on the stack. Real → &lt;code&gt;y&lt;/code&gt; and Imaginary → &lt;code&gt;x&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Y: -4.000&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X:  3.000&lt;/code&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
Make a pure imaginary number by using &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Re&amp;lt;&amp;gt;Im&lt;/kbd&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_d5850fee299d2647c10c431e35c31812_3&quot;&gt;Example (Click to view) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_d5850fee299d2647c10c431e35c31812_3&quot;&gt;
&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;3&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 3_&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Re&amp;lt;&amp;gt;Im&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 0.0000 + 3.0000 i &lt;/code&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h4 id=&quot;rectangular_and_polar_modes_for_complex_numbers&quot;&gt;Rectangular and Polar modes for complex numbers&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;→R&lt;/kbd&gt; and &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;→P&lt;/kbd&gt; do &lt;strong&gt;NOT&lt;/strong&gt; to convert &lt;code&gt;x&lt;/code&gt; and &lt;code&gt;y&lt;/code&gt; stack levels between &lt;code&gt;Rect&lt;/code&gt; and &lt;code&gt;Polar&lt;/code&gt; values as in the HP15C&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;→R&lt;/kbd&gt; and &lt;kbd class=&quot;__keyboard&quot;&gt;→P&lt;/kbd&gt; are &lt;em&gt;&lt;strong&gt;Mode Switching&lt;/strong&gt;&lt;/em&gt; commands for the whole complex stack. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; When in &lt;code&gt;P&lt;/code&gt;olar mode &lt;strong&gt;ALL&lt;/strong&gt; Complex numbers on the stack are in Magnitude / Angle format.&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; The angle format can be &lt;code&gt;Deg&lt;/code&gt; or &lt;code&gt;Rad&lt;/code&gt; as appropriate&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_d5850fee299d2647c10c431e35c31812_4&quot;&gt;Example (click to view) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_d5850fee299d2647c10c431e35c31812_4&quot;&gt;
&lt;p&gt;
start in &lt;code&gt;R&lt;/code&gt;ectangular mode and &lt;code&gt;Deg&lt;/code&gt; angle mode
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;3&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;&lt;code&gt;4&lt;/code&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;I&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;3.000 +4.000i&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Convert to &lt;code&gt;P&lt;/code&gt;olar
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;→P&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;5.000 ∠53.1301&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Convert to &lt;code&gt;Rad&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;RAD&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;5.000 ∠0.9273&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Convert back to &lt;code&gt;R&lt;/code&gt;ectangular
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;→R&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;3.000 +4.000i&lt;/code&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h4 id=&quot;arithmetic_can_be_done_in_rectangular_or_polar_mode&quot;&gt;Arithmetic can be done in Rectangular or Polar mode.&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Mode can be switched at any time - perhaps switching to &lt;code&gt;R&lt;/code&gt;ectangular to enter a &lt;code&gt;R&lt;/code&gt;ectangular format number, when working in &lt;code&gt;P&lt;/code&gt;olar, and then switching back to &lt;code&gt;P&lt;/code&gt;olar once it&amp;#039;s been entered on the stack..&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Intermediate calculations can be done whatever mode is current.&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; this is unlike the HP15C, where complex arithmetic has to be done in &lt;code&gt;R&lt;/code&gt;ectangular format - and &lt;code&gt;P&lt;/code&gt;olar format numbers must be converted → &lt;code&gt;R&lt;/code&gt; first.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; To confirm the mode in use an annunciator &lt;code&gt;P&lt;/code&gt; is always present when in  &lt;code&gt;P&lt;/code&gt;olar. &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; No &lt;code&gt;P&lt;/code&gt; means &lt;code&gt;R&lt;/code&gt;ectangular mode is active.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_d5850fee299d2647c10c431e35c31812_5&quot;&gt;Example (click to view) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_d5850fee299d2647c10c431e35c31812_5&quot;&gt;
&lt;p&gt;
&lt;code&gt; (3+4i)  +  (8∠120°)  /  (6-8i) &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Initially make sure of &lt;code&gt;R&lt;/code&gt; mode:  &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;→R&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
Enter &lt;code&gt;R&lt;/code&gt;ectangular format number
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;3&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt; &lt;code&gt;4&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;I&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; 3.0000 +4.0000 i &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Enter a &lt;code&gt;P&lt;/code&gt;olar format number &lt;code&gt;8 ∠120&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;→P&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
(display changes to show &lt;code&gt;5.0000 ∠53.1301&lt;/code&gt;)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;8&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt; &lt;code&gt;120&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;I&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Y: 5.0000 ∠53.1301&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 8.0000 ∠120.0000&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
add
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;+&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 10.9739 ∠95.2284&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
enter &lt;code&gt;R&lt;/code&gt;ectangular format for final number in calculation
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;→R&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; -1.0000 +10.9282 i &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;6&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt; &lt;code&gt;8&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CHS&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;I&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
divide
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;/&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; X: -0.9343 +0.5757 i &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Or in &lt;code&gt;P&lt;/code&gt;olar
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;→P&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; X: 1.0974 ∠148.3585 &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s very quick &amp;amp; easy to switch from cartesian to polar and back again mid calculation - whichever mode suits the format of the number you&amp;#039;re entering.
&lt;/p&gt;

&lt;p&gt;
The mathematical function can be done in whichever mode you&amp;#039;re in at the time.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Complex Numbers&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;complex_numbers&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;8408-12202&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;other_features&quot;&gt;Other features&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Other features&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;other_features&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;12203-12233&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit21&quot; id=&quot;indirect_addressing&quot;&gt;Indirect addressing&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Similar features to the standard HP15C, with differences due to increased Program Label numbers
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;indirect_register_pair_i_i&quot;&gt;Indirect Register pair I &amp;amp; (i)&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Indirect Register pair I and (i) work in the usual way
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_d5850fee299d2647c10c431e35c31812_6&quot;&gt;Example (click to view) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_d5850fee299d2647c10c431e35c31812_6&quot;&gt;
&lt;p&gt;
A number stored in I is used as the register number addressed by (i)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;23&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;I&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;π&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;(i)&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
this puts &lt;code&gt;3.14159…&lt;/code&gt; in register &lt;code&gt;23&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;98&lt;/code&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;I&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;123&lt;/code&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;(i)&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
this puts &lt;code&gt;123&lt;/code&gt; in register &lt;code&gt;98&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;RCL&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;(i)&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;123&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;23&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;I&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;RCL&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;(i)&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;3.14159…&lt;/code&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h4 id=&quot;indirect_program_label_addressing&quot;&gt;Indirect Program Label addressing&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
As in the HP15C you can also indirectly address Program Labels using the contents of the &lt;strong&gt;I&lt;/strong&gt; register to point to the label required.
&lt;/p&gt;

&lt;p&gt;
The HP15C allowed 20 numerical Program Labels &lt;code&gt;0&lt;/code&gt; - &lt;code&gt;.9&lt;/code&gt; which meant indirect addressing for Labels &lt;code&gt;A&lt;/code&gt; - &lt;code&gt;E&lt;/code&gt; was done by reference to &lt;code&gt;20&lt;/code&gt; - &lt;code&gt;24&lt;/code&gt; in Register I
&lt;/p&gt;

&lt;p&gt;
LF15C has 100 numerical Program Labels so….
&lt;/p&gt;

&lt;p&gt;
Store &lt;code&gt;00&lt;/code&gt; - &lt;code&gt;99&lt;/code&gt; in &lt;strong&gt;I&lt;/strong&gt; to address numerical Program Labels &lt;code&gt;00&lt;/code&gt; - &lt;code&gt;99&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Store &lt;code&gt;100&lt;/code&gt; - &lt;code&gt;104&lt;/code&gt; &lt;strong&gt;I&lt;/strong&gt; to address Program Labels &lt;code&gt;A&lt;/code&gt; - &lt;code&gt;E&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Using &lt;code&gt;GTO I&lt;/code&gt; or &lt;code&gt;GSB I&lt;/code&gt; in a program will lead to a jump to the Program Label referred to by contents of &lt;strong&gt;Register I&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Changing Register &lt;strong&gt;I&lt;/strong&gt;&amp;#039;s contents (e.g. within a program) can then cause the execution of program to branch in different ways - this can be a very powerful mechanism!
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_d5850fee299d2647c10c431e35c31812_7&quot;&gt;Example (click to view) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_d5850fee299d2647c10c431e35c31812_7&quot;&gt;
&lt;p&gt;
Store 100 (for LBL A) in the indirect Register I
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;100&lt;/code&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;I&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
Use the value stored in &lt;code&gt;I&lt;/code&gt; as a Label indirectly by calling it from within a program. 
&lt;/p&gt;

&lt;p&gt;
LBL A is a small program to do a simple calculation (area of circle from radius held in &lt;code&gt;x&lt;/code&gt;)
&lt;/p&gt;

&lt;p&gt;
LBL B, which has the single command &lt;code&gt;GTO I&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Running LBL B &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; actually runs the program in LBL A : &lt;strong&gt;GTO I&lt;/strong&gt; is interpreted as &lt;strong&gt;GTO A&lt;/strong&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
LBL A
X^2
PI
*
RTN

LBL B
GTO I
RTN
&lt;/pre&gt;

&lt;p&gt;
Changing the contents of Register I will change where LBL B points to. 
&lt;/p&gt;

&lt;p&gt;
This allows you to make decisions and branches to different code communicated via the indirect register.
&lt;/p&gt;

&lt;p&gt;
Storing &lt;code&gt;101&lt;/code&gt; in &lt;code&gt;Reg I&lt;/code&gt; and then running LBL B has the effect of an endless loop….. LBL B calls itself (indirectly via &lt;strong&gt;&lt;code&gt;I=101&lt;/code&gt;&lt;/strong&gt;)
&lt;/p&gt;

&lt;p&gt;
Use &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt; to interrupt the endless loop!
&lt;/p&gt;

&lt;p&gt;
Using &lt;code&gt;GTO I&lt;/code&gt; in LBL B means execution passes to LBL A and does not return to LBL B on completion.
&lt;/p&gt;

&lt;p&gt;
Using &lt;code&gt;GSB I&lt;/code&gt; in LBL B instead of &lt;code&gt;GTO&lt;/code&gt; means that after running LBL A (via indirection) execution returns to LBL B and continues….
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h4 id=&quot;indirect_program_line_number_addressing&quot;&gt;Indirect Program Line Number Addressing&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Similar to the above, if the Indirect Register I contains a &lt;strong&gt;NEGATIVE&lt;/strong&gt; number then a call to &lt;code&gt;GTO I&lt;/code&gt; or &lt;code&gt;GSB I&lt;/code&gt; will cause a branch to the absoloute &lt;strong&gt;Line Number&lt;/strong&gt; referred to in &lt;strong&gt;I&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_d5850fee299d2647c10c431e35c31812_8&quot;&gt;Example (Click to view) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_d5850fee299d2647c10c431e35c31812_8&quot;&gt;&lt;pre class=&quot;code&quot;&gt;
0 Empty
1 LBL A
2 GTO I
5 RTN
6 LBL 88
8 X^2
9 PI
10 *
11 RTN
12 Empty
&lt;/pre&gt;

&lt;p&gt;
Storing &lt;code&gt;88&lt;/code&gt; in Register I would make Program &lt;strong&gt;A&lt;/strong&gt; branch to the Label 88 (line 6)
&lt;/p&gt;

&lt;p&gt;
Storing &lt;code&gt;-9&lt;/code&gt; in Register I (&lt;code&gt;9 CHS STO I&lt;/code&gt;) would make Program &lt;strong&gt;A&lt;/strong&gt; branch to &lt;code&gt;PI&lt;/code&gt; (at line 9) and bypass the &lt;code&gt;X&lt;sup&gt;2&lt;/sup&gt;&lt;/code&gt; instruction.
&lt;/p&gt;

&lt;p&gt;
Line numbering isn&amp;#039;t straightforward, as each instruction may use &lt;strong&gt;one&lt;/strong&gt; or &lt;strong&gt;two&lt;/strong&gt; line numbers depending on the instruction itself, so you have to be careful about which line you need to address.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Indirect addressing&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;indirect_addressing&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;12234-15762&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit22&quot; id=&quot;and_the_rest&quot;&gt;And the rest&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 100 Storage Registers &lt;code&gt;00 - 99&lt;/code&gt; are capable of storing Complex Numbers&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Factorial / Gamma &lt;kbd class=&quot;__keyboard&quot;&gt;x!&lt;/kbd&gt; works on integer (positive), non-integer (positive and negative) &lt;em&gt;&lt;strong&gt;and&lt;/strong&gt;&lt;/em&gt; complex numbers&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Program Mode shows human-readable text rather than HP15C op-codes&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2-line display of Program being edited&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Selection of logical tests can be done in usual HP15C fashion with &lt;code&gt;TEST 0&lt;/code&gt; - &lt;code&gt;TEST 9&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Test can also be selected from a scrolling list of options after initially pressing &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;TEST&lt;/kbd&gt; with the choice being made via soft-keys &amp;amp; LCD Prompts&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt;  To run a program with a numeric label (i.e. other than &lt;code&gt;LBL A&lt;/code&gt; → &lt;code&gt;LBL E&lt;/code&gt;) press &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;LBL&lt;/kbd&gt; &lt;code&gt;##&lt;/code&gt;  &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; e.g. &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;LBL&lt;/kbd&gt; &lt;code&gt;88&lt;/code&gt;  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; this is different than on the original HP15C where to run a label you used &lt;kbd class=&quot;__keyboard&quot;&gt;GSB&lt;/kbd&gt;&lt;code&gt;##&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;  In program mode, &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CLEAR PREFIX&lt;/kbd&gt; places the &lt;code&gt;runTime&lt;/code&gt; opCode in the program. &lt;code&gt;runTime&lt;/code&gt; writes to &lt;code&gt;x&lt;/code&gt; the program execution time once it&amp;#039;s executed.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt;  Deleting User Programs&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Delete a &lt;em&gt;&lt;strong&gt;single program&lt;/strong&gt;&lt;/em&gt; : &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CLEAR PRGM&lt;/kbd&gt; followed by a label&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Delete &lt;em&gt;&lt;strong&gt;ALL programs&lt;/strong&gt;&lt;/em&gt; :  &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt; and &lt;em class=&quot;u&quot;&gt;long press&lt;/em&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CLEAR PRGM&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;  FIX/SCI/ENG don&amp;#039;t round numbers unless &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;RND&lt;/kbd&gt; is pressed.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ENG&lt;/kbd&gt;&lt;code&gt;nn&lt;/code&gt; sets the number of significant digits as requested, &lt;strong&gt;UNLIKE&lt;/strong&gt; the original HP15C where &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ENG&lt;/kbd&gt;&lt;code&gt;n&lt;/code&gt; sets the significant digits to &lt;code&gt;n + 1&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt;  There are 10 user flags, from 0 to 9. &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; There are no LCD annunciators to show state, but flags can be set, cleared and tested for decision making in program branching&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;  Long press &lt;kbd class=&quot;__keyboard&quot;&gt;GTO&lt;/kbd&gt; in program mode to access &lt;code&gt;go to label&lt;/code&gt; feature (single press in run mode)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;  Long press &lt;kbd class=&quot;__keyboard&quot;&gt;GSB&lt;/kbd&gt; in program mode to access &lt;code&gt;go to line number&lt;/code&gt; feature (single press in run mode)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;  When running a program step by step, a long press on &lt;kbd class=&quot;__keyboard&quot;&gt;SST&lt;/kbd&gt; doesn’t execute the current step.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Unused Keys&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;USER&lt;/kbd&gt;, &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;MEM&lt;/kbd&gt;, &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;DIM&lt;/kbd&gt;, &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;MATRIX&lt;/kbd&gt; and &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;RESULT&lt;/kbd&gt; are not implemented and don&amp;#039;t do anything at the moment.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;And the rest&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;and_the_rest&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;15763-18112&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit23&quot; id=&quot;lf15c_serial_port_info&quot;&gt;LF15C Serial Port Info&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Serial Port dump info : &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-194697.html#pid194697&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-194697.html#pid194697&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.hpmuseum.org/forum/thread-20046-post-194697.html#pid194697&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Serial Port settings&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Rate : 57600&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Data : 8 bit&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Stop : 1 bit&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Parity : None&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Flow Control : None&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt; ALWAYS INCLUDE AT LEAST ONE TRAILING ZERO FROM THE STRING OF DIGITS REPRESENTING THE MEMORY DUMP &lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; To extract a dump from calculator press and hold &lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; the string of digits can be copy/pasted into a text file for storage&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; it is only necessary to keep &lt;strong&gt;one final zero&lt;/strong&gt; - the rest of the zeros can be ignored&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; To upload a previously saved dump &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; copy it to clipboard and then &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; press and hold &lt;kbd class=&quot;__keyboard&quot;&gt;RCL&lt;/kbd&gt; until the terminal shows &lt;code&gt;Paste PrgMemory:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; in Putty &lt;kbd class=&quot;__keyboard&quot;&gt;Shift&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Insert&lt;/kbd&gt; to paste clipboard text into terminal&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;LF15C Serial Port Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lf15c_serial_port_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;18113-18970&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit24&quot; id=&quot;lf15c_firmware_files&quot;&gt;LF15C Firmware Files&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Tabulated List of LF15C firmware versions
&lt;/p&gt;
&lt;div class=&quot;table sectionedit25&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Date&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Firmware&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Version&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Firmware File&lt;/th&gt;&lt;th class=&quot;col4&quot;&gt;Comments&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;12/09/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta240911&lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta240911.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta240911.zip (67.2 KB)&quot;&gt;lf15c_beta240911.zip&lt;/a&gt;     &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; initial public beta  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;15/09/24  &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; LF15C  &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta240914 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta240914.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta240914.zip (67 KB)&quot;&gt;lf15c_beta240914.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;17/09/24   &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; beta240916  &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta240916.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta240916.zip (67.1 KB)&quot;&gt;lf15c_beta240916.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt;   &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;17/09/24   &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; beta240916_2  &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta240916_2.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta240916_2.zip (67.5 KB)&quot;&gt;lf15c_beta240916_2.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt;   &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 21/09/24  &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta240920 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta240920.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta240920.zip (66.8 KB)&quot;&gt;lf15c_beta240920.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; very fast &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:benchmarking:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:benchmarking:start&quot; data-wiki-id=&quot;public:calculator:benchmarking:start&quot;&gt;Benchmarking&lt;/a&gt;, roots of -ve numbers bug &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 21/09/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta240921 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta240921.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta240921.zip (66.8 KB)&quot;&gt;lf15c_beta240921.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; Fix of “powers of negative numbers” bug, new 10^x bug &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 23/09/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta240923 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta240923.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta240923.zip (66.8 KB)&quot;&gt;lf15c_beta240923.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 10^x fix, other bug fixes &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;25/09/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta240925 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta240925.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta240925.zip (67.3 KB)&quot;&gt;lf15c_beta240925.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192246.html#pid192246&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192246.html#pid192246&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Bug fixes&lt;/a&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192255.html#pid192255&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192255.html#pid192255&quot; rel=&quot;ugc nofollow noopener&quot;&gt; More new bugs&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;28/09/24&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta240928 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta240928.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta240928.zip (68 KB)&quot;&gt;lf15c_beta240928.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192465.html#pid192465&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192465.html#pid192465&quot; rel=&quot;ugc nofollow noopener&quot;&gt; bug fixes &lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 30/09/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta240929 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta240929.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta240929.zip (68 KB)&quot;&gt;lf15c_beta240929.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192556.html#pid192556&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192556.html#pid192556&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Bug Fixes etc. &lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 30/09/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta240929_2 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta240929_2.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta240929_2.zip (68 KB)&quot;&gt;lf15c_beta240929_2.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192560.html#pid192560&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192560.html#pid192560&quot; rel=&quot;ugc nofollow noopener&quot;&gt; RCL I Bug fix &lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row12&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 01/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta240930 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta240930.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta240930.zip (68.2 KB)&quot;&gt;lf15c_beta240930.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192625.html#pid192625&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192625.html#pid192625&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Bug Fixes &lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row13&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 02/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; debug241001 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_debug_for_john241001.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_debug_for_john241001.zip (68.3 KB)&quot;&gt;lf15c_debug_for_john241001.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192676.html#pid192676&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192676.html#pid192676&quot; rel=&quot;ugc nofollow noopener&quot;&gt; version pre-loaded with my B.Fil prog for debug purposes &lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row14&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 02/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241002 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241002.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241002.zip (68.2 KB)&quot;&gt;lf15c_beta241002.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192696.html#pid192696&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192696.html#pid192696&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Bug Fix &lt;/a&gt; my B.Fil runs correctly. No known showstoppers left? &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row15&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 03/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241003 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241003.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241003.zip (68.3 KB)&quot;&gt;lf15c_beta241003.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; fPREFIX fix. Discovered inverse HYP SIN bug &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row16&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 06/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241005 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241005.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241005.zip (68.1 KB)&quot;&gt;lf15c_beta241005.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;&lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192859.html#pid192859&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192859.html#pid192859&quot; rel=&quot;ugc nofollow noopener&quot;&gt; fixes &lt;/a&gt;,HYP ASIN bug still present &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row17&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 07/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241006 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241006.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241006.zip (67.6 KB)&quot;&gt;lf15c_beta241006.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192907.html#pid192907&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192907.html#pid192907&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Bug fix and new runTime function &lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row18&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 08/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241007 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241007.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241007.zip (67.6 KB)&quot;&gt;lf15c_beta241007.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192956.html#pid192956&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-192956.html#pid192956&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Bug Fixes &lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row19&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 10/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241009 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241009.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241009.zip (67.3 KB)&quot;&gt;lf15c_beta241009.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-193093.html#pid193093&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-193093.html#pid193093&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Bug Fixes &lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row20&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 12/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241011 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241011.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241011.zip (67.6 KB)&quot;&gt;lf15c_beta241011.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-193245.html#pid193245&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-193245.html#pid193245&quot; rel=&quot;ugc nofollow noopener&quot;&gt; RND bug fix &lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row21&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 14/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241014 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241014.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241014.zip (68.3 KB)&quot;&gt;lf15c_beta241014.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row22&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 20/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241020 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241020.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241020.zip (68.8 KB)&quot;&gt;lf15c_beta241020.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row23&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 21/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241021 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241021.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241021.zip (68.7 KB)&quot;&gt;lf15c_beta241021.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row24&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 22/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241022 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241022.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241022.zip (68.7 KB)&quot;&gt;lf15c_beta241022.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row25&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 24/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241024 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241024.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241024.zip (68.9 KB)&quot;&gt;lf15c_beta241024.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row26&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 31/10/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241031 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241031.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241031.zip (69.1 KB)&quot;&gt;lf15c_beta241031.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row27&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 02/11/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241102 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241102.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241102.zip (68.9 KB)&quot;&gt;lf15c_beta241102.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row28&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 10/12/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241210_2 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241210_2.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241210_2.zip (69.4 KB)&quot;&gt;lf15c_beta241210_2.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-196923.html#pid196923&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-196923.html#pid196923&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Integrate feature&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row29&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 17/12/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241217 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241217.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241217.zip (69.5 KB)&quot;&gt;lf15c_beta241217.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-197261.html#pid197261&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-197261.html#pid197261&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Integrate improvements &lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row30&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 21/12/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta241221 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241221.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241221.zip (64.9 KB)&quot;&gt;lf15c_beta241221.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-197462.html#pid197462&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-197462.html#pid197462&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Bug Fixes &lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row31&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 22/12/24 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; LF15C  &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; beta241222   &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta241222.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta241222.zip (67.4 KB)&quot;&gt;lf15c_beta241222.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-197516.html#pid197516&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-197516.html#pid197516&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Sin(180)=0 Fixed &lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row32&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 14/02/25 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta250123 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta250123.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta250123.zip (67.5 KB)&quot;&gt;lf15c_beta250123.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;&lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-198747.html#pid198747&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-198747.html#pid198747&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Enter Key bug fixes &lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row33&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 15/02/25 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta250215 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta250215.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta250215.zip (68.9 KB)&quot;&gt;lf15c_beta250215.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;&lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-199820.html#pid199820&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-199820.html#pid199820&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Better integration routine and bug fixes&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row34&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 16/02/25 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta250216 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta250216.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta250216.zip (68.9 KB)&quot;&gt;lf15c_beta250216.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; Y↑X and TEST &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-199841.html#pid199841&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-199841.html#pid199841&quot; rel=&quot;ugc nofollow noopener&quot;&gt; bug fixes&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row35&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 17/02/25 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta250217b &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta250217b.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta250217b.zip (69.5 KB)&quot;&gt;lf15c_beta250217b.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; Integration &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-199875.html#pid199875&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-199875.html#pid199875&quot; rel=&quot;ugc nofollow noopener&quot;&gt; bug fix &lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row36&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 19/02/25 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta250218 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta250218.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta250218.zip (69.3 KB)&quot;&gt;lf15c_beta250218.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; Integration &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-199946.html#pid199946&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-199946.html#pid199946&quot; rel=&quot;ugc nofollow noopener&quot;&gt; programability &lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row37&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 20/02/25 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta250220 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta250220.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta250220.zip (69.3 KB)&quot;&gt;lf15c_beta250220.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-200014.html#pid200014&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-200014.html#pid200014&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Linear Regression bug fix &lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row38&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 21/02/25 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta250221 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta250221.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta250221.zip (70.3 KB)&quot;&gt;lf15c_beta250221.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-200051.html#pid200051&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-200051.html#pid200051&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Complex/non-integer factorial &lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row39&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 25/02/25 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta250225 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta250225.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:lf15c_beta250225.zip (70.4 KB)&quot;&gt;lf15c_beta250225.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-200298.html#pid200298&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-200298.html#pid200298&quot; rel=&quot;ugc nofollow noopener&quot;&gt; improved precision in x! function &lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row40&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 26/02/25 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; beta250226 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_beta250226.hex&quot; class=&quot;media mediafile mf_hex&quot; title=&quot;public:calculator:info:lf15c_beta250226.hex (178.9 KB)&quot;&gt;lf15c_beta250226.hex&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046-post-200326.html#pid200326&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046-post-200326.html#pid200326&quot; rel=&quot;ugc nofollow noopener&quot;&gt; f-PREFIX bug fix &lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row41&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 12/01/26 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 250408 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_250408.hex&quot; class=&quot;media mediafile mf_hex&quot; title=&quot;public:calculator:info:lf15c_250408.hex (175.8 KB)&quot;&gt;lf15c_250408.hex&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; no longer BETA. Stable version - mature?? &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row42&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 31/03/26 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 260331 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:3rd:lf15c_260331.hex&quot; class=&quot;media mediafile mf_hex&quot; title=&quot;public:calculator:3rd:lf15c_260331.hex (176.5 KB)&quot;&gt;lf15c_260331.hex&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; Differences unknown - various changes since last stable version 250408. Has Solver issues? &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row43&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 04/04/26 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 260404 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:3rd:lf15c_260404.hex&quot; class=&quot;media mediafile mf_hex&quot; title=&quot;public:calculator:3rd:lf15c_260404.hex (176.5 KB)&quot;&gt;lf15c_260404.hex&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; Differences unknown… performs well on all tests, solver issues resolved &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row44&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 12/04/26 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 260412 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:3rd:lf15c_260412.hex&quot; class=&quot;media mediafile mf_hex&quot; title=&quot;public:calculator:3rd:lf15c_260412.hex (177.2 KB)&quot;&gt;lf15c_260412.hex&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; SOLVE adjustments &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;19049-26112&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;LF15C Firmware Files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lf15c_firmware_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;18971-26115&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit26&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; LF15C program dumps &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:progs:dm15l_progs#program_dumps_for_lf15c&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:progs:dm15l_progs&quot; data-wiki-id=&quot;public:calculator:progs:dm15l_progs&quot;&gt;Program dumps for LF15C&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Page created  : 17/02/26 17:51 GMT
&lt;/p&gt;

&lt;p&gt;
Page updated : 19/04/26 21:20 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:calculator&amp;amp;do=showtag&amp;amp;tag=calculator&quot; class=&quot;wikilink1&quot; title=&quot;tag:calculator&quot; rel=&quot;tag&quot;&gt;calculator&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dm15l&amp;amp;do=showtag&amp;amp;tag=dm15l&quot; class=&quot;wikilink1&quot; title=&quot;tag:dm15l&quot; rel=&quot;tag&quot;&gt;dm15l&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:lf15c&amp;amp;do=showtag&amp;amp;tag=lf15c&quot; class=&quot;wikilink1&quot; title=&quot;tag:lf15c&quot; rel=&quot;tag&quot;&gt;lf15c&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;26116-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 19 Apr 2026 20:20:12 +0000</pubDate>
        </item>
        <item>
            <title>Explorations</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:allstar_expands</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:start&quot; data-wiki-id=&quot;public:radio:topics:allstar:start&quot;&gt;AllStar Linking&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;explorations&quot;&gt;Explorations&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Digging Deeper into Allstar &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve seen a few examples of small networks and am interested in building up a mixed protocol system too.
&lt;/p&gt;

&lt;p&gt;
Some examples that interested me:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Milnet &lt;a href=&quot;http://milnet.io/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://milnet.io/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://milnet.io/&lt;/a&gt; with Allstar connected nodes and a DMR bridge&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Allstar node status &lt;a href=&quot;http://stats.allstarlink.org/nodeinfo.cgi?node=424611&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://stats.allstarlink.org/nodeinfo.cgi?node=424611&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://stats.allstarlink.org/nodeinfo.cgi?node=424611&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; W2YMM &lt;a href=&quot;https://w2ymm.home.blog/allstar-howto/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://w2ymm.home.blog/allstar-howto/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://w2ymm.home.blog/allstar-howto/&lt;/a&gt; with a group of connected gateways, repeaters and a bridge to DMR etc.&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; This one was discovered by accident on Allstar&amp;#039;s Portal I mistyped my own original base node ID (pre-NNX) &lt;strong&gt;48148&lt;/strong&gt; as &lt;a href=&quot;http://stats.allstarlink.org/nodeinfo.cgi?node=48418&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://stats.allstarlink.org/nodeinfo.cgi?node=48418&quot; rel=&quot;ugc nofollow noopener&quot;&gt; 48418&lt;/a&gt; and found his system with lots of information on his blog&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Explorations&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;explorations&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-756&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;adding_more_nodes&quot;&gt;Adding more nodes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:2025:networkmap_2_.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:2025:networkmap_2_.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=5a12e5&amp;amp;media=public:radio:2025:networkmap_2_.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s possible to have up to 10 individual Node IDs with a single Allstar node number, by using NNX to add a 6th digit to the base node number…
&lt;/p&gt;

&lt;p&gt;
My Base Number is &lt;code&gt;48148&lt;/code&gt; and I activated the &lt;code&gt;NNX&lt;/code&gt; feature and created 3 nodes
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;481480&lt;/code&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;481481&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;481482&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Since they are all behind a NAT firewall, sharing one public IP address the nodes must use different UDP ports. To make this possible I created 2 new &lt;code&gt;Server&lt;/code&gt; instances on the Allstar Portal, one per node, and chose the UDP ports :
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.allstarlink.org/portal/servers.php&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.allstarlink.org/portal/servers.php&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.allstarlink.org/portal/servers.php&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;node481480&lt;/code&gt; ⇒ &lt;code&gt;UDP 4569&lt;/code&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;node481481&lt;/code&gt; ⇒ &lt;code&gt;UDP 4570&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;node481482&lt;/code&gt; ⇒ &lt;code&gt;UDP 4571&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The choice of which server is used per node is chosen on the Node configuration page for each node, on the Allstar Portal
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.allstarlink.org/portal/nodes.php&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.allstarlink.org/portal/nodes.php&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.allstarlink.org/portal/nodes.php&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Then I flashed new SD cards for the new nodes using the ASL 2.0.0 Beta 6 image I&amp;#039;ve used for the initial VHF Gateway node.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/AllStarLink/ASL-Live-Build/releases/download/2.0.0-beta.6/asl-2.0.0-beta.6-kc1kcc-20210324-raspberrypi-armhf.img.zip&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/AllStarLink/ASL-Live-Build/releases/download/2.0.0-beta.6/asl-2.0.0-beta.6-kc1kcc-20210324-raspberrypi-armhf.img.zip&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/AllStarLink/ASL-Live-Build/releases/download/2.0.0-beta.6/asl-2.0.0-beta.6-kc1kcc-20210324-raspberrypi-armhf.img.zip&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The config. for the original node had to be changed, to reflect the new node number &lt;code&gt;481480&lt;/code&gt; versus &lt;code&gt;48148&lt;/code&gt; which means editing (at least)
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/etc/asterisk/rpt.conf&lt;/code&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/etc/asterisk/iax.conf&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/etc/asterisk.extensions.conf&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
To ensure each internal LAN node can find each other (can&amp;#039;t rely on Allstar&amp;#039;s DNS) it&amp;#039;s necessary to add each one to the &lt;code&gt;[nodes]&lt;/code&gt; stanza in each node&amp;#039;s config file &lt;code&gt;/etc/asterisk/rpt.conf&lt;/code&gt; using the appropriate IP and UDP port depending on which node is being configured. 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
; from the VHF Gateway node 481480
[nodes]
481480 = radio@127.0.0.1:4569/481480,NONE      

481481 = radio@192.168.21.241:4570/481481,NONE  

481482 = radio@192.168.21.242:4571/481482,NONE
&lt;/pre&gt;

&lt;p&gt;
I added the DVSwitch bridging to the hub node &lt;code&gt;481481&lt;/code&gt; which is configured as &lt;em&gt;radioless&lt;/em&gt;, I made a local/private node on that machine &lt;code&gt;1399&lt;/code&gt; for this purpose.
&lt;/p&gt;

&lt;p&gt;
All 3 nodes have &lt;code&gt;supermon&lt;/code&gt; and this needed some configuration to make sure the Asterisk Manager ports were available on their external interfaces &lt;code&gt;bindaddr = 0.0.0.0&lt;/code&gt; and not just on the loopback &lt;code&gt;bindaddr = 127.0.0.1&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;/etc/asterisk/manager.conf&lt;/code&gt; ⇒
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;;
; Asterisk Call Management support
;

; By default asterisk will listen on localhost only.
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0

[admin]
secret = YOUR_MANAGER_PASSWORD
read = all,system,call,log,verbose,command,agent,user,config
write = all,system,call,log,verbose,command,agent,user,config
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Adding more nodes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;adding_more_nodes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;757-3442&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;port_forwarding&quot;&gt;Port Forwarding&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
My ADSL router has the following port forwards to allow external incoming connections to be set up
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;UDP 4569&lt;/code&gt; ⇒ &lt;code&gt;192.168.21.240&lt;/code&gt; for the VHF Gateway / Echolink node&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;UDP 4570&lt;/code&gt; ⇒ &lt;code&gt;192.168.21.241&lt;/code&gt; for the DMR Bridge node&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;UDP 4571&lt;/code&gt; ⇒ &lt;code&gt;192.168.21.242&lt;/code&gt; for the Test Node&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;UDP 5198-5199&lt;/code&gt; ⇒ &lt;code&gt;192.168.21.240&lt;/code&gt; for Echolink client connections&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;TCP 42110&lt;/code&gt; ⇒ &lt;code&gt;192.168.21.240&lt;/code&gt; for the VHF Gateway/Echolink node&amp;#039;s Dashboard&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://gm4slv.plus.com:42110&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://gm4slv.plus.com:42110&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://gm4slv.plus.com:42110&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;TCP 42111&lt;/code&gt; ⇒ &lt;code&gt;192.168.21.241&lt;/code&gt; for the DMR Bridge node&amp;#039;s Dashboard&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://gm4slv.plus.com:42111&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://gm4slv.plus.com:42111&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://gm4slv.plus.com:42111&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;TCP 42112&lt;/code&gt; ⇒ &lt;code&gt;192.168.21.242&lt;/code&gt; for the Test node&amp;#039;s Dashboard&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://gm4slv.plus.com:42112&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://gm4slv.plus.com:42112&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://gm4slv.plus.com:42112&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
To allow the node numbers to be resolved to useful names tp display on the dashboards the script &lt;code&gt;astdb.php&lt;/code&gt; should run nightly to maintain a lookup table. 
&lt;/p&gt;

&lt;p&gt;
The image came with several copies of &lt;code&gt;astdb.php&lt;/code&gt; in different places, all updating a central data file &lt;code&gt;/var/log/asterisk/astdb.txt&lt;/code&gt;. Which was confusing, as they all looked in different places for the file detailing private nodes. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Port Forwarding&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;port_forwarding&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3443-4593&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;private_node_names&quot;&gt;Private Node Names&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To allow private node numbers to appear as useful information, rather than &lt;code&gt;not in database&lt;/code&gt; you first put the information in a file &lt;code&gt;privatenodes.txt&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;1399|GM4SLV|Bridge to DMR|TGIF TG2354429
1398|GM4SLV|Bridge to DMR|TGIF TG2354435&lt;/pre&gt;

&lt;p&gt;
and then the &lt;code&gt;astdb.php&lt;/code&gt; script pulls it in, with all the other nodes downloaded from the web, but &lt;code&gt;astdb.php&lt;/code&gt; must know where to find the &lt;code&gt;privatenodes.txt&lt;/code&gt; file. 
&lt;/p&gt;

&lt;p&gt;
The easiest way is to run the &lt;code&gt;astdb.php&lt;/code&gt; from the directory containing &lt;code&gt;privatenodes.txt&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
and therefore it&amp;#039;s the copy in &lt;code&gt;/var/www/html/supermon/&lt;/code&gt; that is used, since &lt;code&gt;privatenodes.txt&lt;/code&gt; resides here too. 
&lt;/p&gt;

&lt;p&gt;
To automate the process the update is done nightly via &lt;code&gt;/etc/cron.daily/allstar_helpers&lt;/code&gt; which was modified to point to the correct version of &lt;code&gt;astdb.php&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Get new allmon data daily&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;html&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;supermon&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;astdb.php&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;semi-automated_private_node_descriptions&quot;&gt;Semi-automated Private Node descriptions&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I&amp;#039;ve written a small bash script on the gateway node481480.local to make it easier to re-name the internal &lt;em&gt;“private nodes”&lt;/em&gt; as they appear listed in Supermon&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; for this to work it&amp;#039;s necessary to arrange public-key authentication on the nodes, with passwordless logins. But that&amp;#039;s normal, anyway, no?&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;NODE1&lt;/span&gt;=node481480.local
&lt;span class=&quot;re2&quot;&gt;NODE2&lt;/span&gt;=node481481.local
&lt;span class=&quot;re2&quot;&gt;NODE3&lt;/span&gt;=node481482.local
&lt;span class=&quot;re2&quot;&gt;WEB&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;html&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;supermon&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;PRIVATE_NODES&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;privatenodes.txt
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;cp&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$PRIVATE_NODES&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$WEB&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$WEB&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;astdb.php
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;scp&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$PRIVATE_NODES&lt;/span&gt; gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$NODE2&lt;/span&gt;:
&lt;span class=&quot;kw2&quot;&gt;ssh&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$NODE2&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;sudo cp /home/gm4slv/privatenodes.txt /var/www/html/supermon/ &amp;amp;&amp;amp; /var/www/html/supermon/astdb.php&#039;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;scp&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$PRIVATE_NODES&lt;/span&gt; gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$NODE3&lt;/span&gt;:
&lt;span class=&quot;kw2&quot;&gt;ssh&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$NODE3&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;sudo cp /home/gm4slv/privatenodes.txt /var/www/html/supermon/ &amp;amp;&amp;amp; /var/www/html/supermon/astdb.php&#039;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Just make changes to the &lt;code&gt;privatenodes.txt&lt;/code&gt; file in my local directory on the gateway &lt;code&gt;node481480&lt;/code&gt; and then run &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co4&quot;&gt;gm4slv@node481480:~$ &lt;/span&gt;.&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;update_private.sh
Success: astdb.txt &lt;span class=&quot;nu0&quot;&gt;1422647&lt;/span&gt; bytes
privatenodes.txt                              &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;   &lt;span class=&quot;nu0&quot;&gt;79&lt;/span&gt;    39.0KB&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;s   00:00
Success: astdb.txt &lt;span class=&quot;nu0&quot;&gt;1422647&lt;/span&gt; bytes
privatenodes.txt                              &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;   &lt;span class=&quot;nu0&quot;&gt;79&lt;/span&gt;    24.9KB&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;s   00:00
Success: astdb.txt &lt;span class=&quot;nu0&quot;&gt;1422647&lt;/span&gt; bytes&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Private Node Names&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;private_node_names&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4594-6843&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;favourites&quot;&gt;Favourites&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; to keep the &lt;code&gt;favorites.ini&lt;/code&gt; file consistent on all nodes I&amp;#039;ve written a script that distributes a copy to all nodes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I edit the copy in my home directory on &lt;code&gt;node481480&lt;/code&gt; and run &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;./update_favorites.sh&lt;/pre&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# update_favorites.sh&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# a script to keep the supermon favorites.ini file synchronized on all nodes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;NODE1&lt;/span&gt;=node481480.local
&lt;span class=&quot;re2&quot;&gt;NODE2&lt;/span&gt;=node481481.local
&lt;span class=&quot;re2&quot;&gt;NODE3&lt;/span&gt;=node481482.local
&lt;span class=&quot;re2&quot;&gt;WEB&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;html&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;supermon&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;FAVORITES&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;favorites.ini
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;cp&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$FAVORITES&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$WEB&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;scp&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$FAVORITES&lt;/span&gt; gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$NODE2&lt;/span&gt;:
&lt;span class=&quot;kw2&quot;&gt;ssh&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$NODE2&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;sudo cp /home/gm4slv/favorites.ini /var/www/html/supermon/&#039;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;scp&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$FAVORITES&lt;/span&gt; gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$NODE3&lt;/span&gt;:
&lt;span class=&quot;kw2&quot;&gt;ssh&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$NODE3&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;sudo cp /home/gm4slv/favorites.ini /var/www/html/supermon/&#039;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Favourites&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;favourites&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;6844-7583&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;supermonallmonini&quot;&gt;Supermon : allmon.ini&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The nodes monitored, and the menu to select them, and external websites, on each node&amp;#039;s Supermon Dashboard is configured by &lt;code&gt;allmon.ini&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Here&amp;#039;s the current version:
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_92c70012a2383203ab9cbb641bd14947_1&quot;&gt;Generic /var/www/html/supermon/allmon.ini &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_92c70012a2383203ab9cbb641bd14947_1&quot;&gt;&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;All Nodes&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;nodes&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 481480,481481,481482,1399,1398&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; Nodes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;481480&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;host&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 192.168.21.240:5038&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;user&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; admin&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;passwd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;XXXX&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;hideNodeURL&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; no&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; Nodes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;481481&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;host&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 192.168.21.241:5038&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;user&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; admin&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;passwd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;XXXX&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;hideNodeURL&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; no&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; Nodes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;481482&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;host&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 192.168.21.242:5038&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;user&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; admin&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;passwd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;XXXX&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;hideNodeURL&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; no&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; Nodes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;1399&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;host&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 192.168.21.241:5038&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;user&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; admin&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;passwd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;XXXX&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;hideNodeURL&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; Nodes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;1398&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;host&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 192.168.21.242:5038&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;user&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; admin&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;passwd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;XXXX&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;hideNodeURL&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; Nodes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;lsNodes 481480&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;http://gm4slv.plus.com:42110/cgi-bin/lsnodes_web?node=481480&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; LsNodes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;lsNodes 481481&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;http://gm4slv.plus.com:42111/cgi-bin/lsnodes_web?node=481481&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; LsNodes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;lsNodes 481482&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;http://gm4slv.plus.com:42112/cgi-bin/lsnodes_web?node=481482&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; LsNodes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Node 481840&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;http://gm4slv.plus.com:42110/&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; Dashboards&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Node 481841&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;http://gm4slv.plus.com:42111/&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; Dashboards&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Node 481842&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;http://gm4slv.plus.com:42112/&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; Dashboards&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;GM4SLV Wiki&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;https://gm4slv.org.uk/dokuwiki/doku.php?id=start&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; External Sites&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Echolink Link Status&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;https://echolink.org/links.jsp?d=1&amp;amp;gs=IP90gg&amp;amp;sel=gridsq&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; External Sites&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;TGIF&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;https://tgif.network/&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; External Sites&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;AllStarLink&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;http://www.allstarlink.org&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; yes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;system&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; External Sites&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I&amp;#039;ve also made it easy to distribute the same &lt;code&gt;allmon.ini&lt;/code&gt; file to all nodes&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# update_allmon.sh&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# a script to distribute a common supermon config to all nodes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;NODE1&lt;/span&gt;=node481480.local
&lt;span class=&quot;re2&quot;&gt;NODE2&lt;/span&gt;=node481481.local
&lt;span class=&quot;re2&quot;&gt;NODE3&lt;/span&gt;=node481482.local
&lt;span class=&quot;re2&quot;&gt;WEB&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;html&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;supermon&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;ALLMON&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;allmon.ini
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;cp&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ALLMON&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$WEB&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;scp&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ALLMON&lt;/span&gt; gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$NODE2&lt;/span&gt;:
&lt;span class=&quot;kw2&quot;&gt;ssh&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$NODE2&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;sudo cp /home/gm4slv/allmon.ini /var/www/html/supermon/&#039;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;scp&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$ALLMON&lt;/span&gt; gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$NODE3&lt;/span&gt;:
&lt;span class=&quot;kw2&quot;&gt;ssh&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$NODE3&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;sudo cp /home/gm4slv/allmon.ini /var/www/html/supermon/&#039;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Supermon : allmon.ini&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;supermonallmonini&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;7584-10017&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;node_callsigns_instead_of_numbers&quot;&gt;Node Callsigns instead of Numbers&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To have the telemetry say the &lt;em&gt;callsign&lt;/em&gt; of a connected node, instead of its &lt;em&gt;node number&lt;/em&gt;, install the script &lt;code&gt;write_node_callsigns_ulaw.sh&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
I put it in &lt;code&gt;/usr/local/bin/&lt;/code&gt; and run it via root&amp;#039;s crontab each day - but via a wrapper script  &lt;code&gt;/usr/local/bin/update_names.sh&lt;/code&gt; that then deletes the ulaw sound file for my own nodes, as I don&amp;#039;t want all of them to be announced as &lt;code&gt;GM4SLV&lt;/code&gt; - I&amp;#039;d rather hear the actual node numbers:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;write_node_callsigns_ulaw.sh
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;481480&lt;/span&gt;.ulaw
&lt;span class=&quot;kw2&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;481481&lt;/span&gt;.ulaw
&lt;span class=&quot;kw2&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1399&lt;/span&gt;.ulaw
&lt;span class=&quot;kw2&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1398&lt;/span&gt;.ulaw
&lt;span class=&quot;kw2&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;48148&lt;/span&gt;.ulaw
&lt;span class=&quot;kw2&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;481482&lt;/span&gt;.ulaw&lt;/pre&gt;

&lt;p&gt;
I forget where I found it, so here&amp;#039;s the &lt;code&gt;write_node&lt;/code&gt; script itself
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_92c70012a2383203ab9cbb641bd14947_2&quot;&gt;write_node_callsigns_ulaw.sh &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_92c70012a2383203ab9cbb641bd14947_2&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#  Created by Marshall Dias&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#  Modified by Doug, WA3DSP 8/18/2015&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# using ULAW format&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# Script to write Calls to /var/lib/asterisk/sounds/rpt/nodenames&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# which will then be used in place of node numbers. This script&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# will NOT overwrite exisitng files unless you use the -o option.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# If you want to start clean and delete all nodename files do&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#    rm -rf /var/lib/asterisk/sounds/rpt/nodenames/*&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# or delete just the files you want to replace.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# A single node number can be specified on the command line with&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# the -n node -ex. -n 40000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# A -v option gives a little more info&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# See all comments below&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Set the source directory to the Allstar database on your system.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# &#039;locate astdb.php&#039;  This file will exist if you are running any of the&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# images from hamvoip.org or you have installed allmon or lsnodes on&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# your system. For the BBB and RPi2 it will generally be /var/log/asterisk&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;SRCDIR&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;log&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk
&lt;span class=&quot;co0&quot;&gt;#SRCDIR=/var/www/html/allmon&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Set the destination directory.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# Use a tmp directory for testing&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# The final destination for Allstar would be&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# /var/lib/asterisk/sounds/rpt/nodenames&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# Use the -d path option to overide&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;DESTDIR&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames
&lt;span class=&quot;co0&quot;&gt;# Test destination directory - must exist&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DESTDIR=/tmp/nodes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Definitions of sound file directories&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;NODENAMES&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames
&lt;span class=&quot;re2&quot;&gt;LETTERS&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;letters
&lt;span class=&quot;re2&quot;&gt;NUMBERS&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;digits
&lt;span class=&quot;re2&quot;&gt;STRING&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;
usage&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;cat&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;&amp;lt;&amp;lt; EOF
&amp;nbsp;
Usage: $0 options
&amp;nbsp;
Writes voice files of call signs from node numbers
&amp;nbsp;
OPTIONS:
   -h        Show this message
   -o        Overwrite existings file(s)
   -n node   Specify node number - single write
   -d path   Specify path to output files
             Default: /var/lib/asterisk/sounds/rpt/nodenames
   -v        Verbose
&amp;nbsp;
Write callsign for node 40000, no overwrite -
&amp;nbsp;
  $0 -n 40000
&amp;nbsp;
Write callsign for node 40000, overwrite -
&amp;nbsp;
  $0 -on 40000
&amp;nbsp;
Write all callsigns, no overwrite -
&amp;nbsp;
  $0
&amp;nbsp;
Write all callsigns, overwrite
&amp;nbsp;
  $0 -o
&amp;nbsp;
Write single node to specific directory -
&amp;nbsp;
  $0 -n 40000 -d /etc/asterisk/local
&amp;nbsp;
&amp;nbsp;
EOF&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;OVERWRITE&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;VERBOSE&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;getopts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;hovn:d:&amp;quot;&lt;/span&gt; OPTION
&lt;span class=&quot;kw1&quot;&gt;do&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$OPTION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt;
         h&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
             usage
             &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
             &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
         d&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
             &lt;span class=&quot;re2&quot;&gt;DESTDIR&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$OPTARG&lt;/span&gt;
             &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
         o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
             &lt;span class=&quot;re2&quot;&gt;OVERWRITE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
             &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
         n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
             &lt;span class=&quot;re2&quot;&gt;node&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$OPTARG&lt;/span&gt;
             &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
         v&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
             &lt;span class=&quot;re2&quot;&gt;VERBOSE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
             &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
         ?&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
             usage
             &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt;
             &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;esac&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;done&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Form filenames from callsign&lt;/span&gt;
make_call &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
 &lt;span class=&quot;re2&quot;&gt;STRING&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
 &lt;span class=&quot;re2&quot;&gt;foo&lt;/span&gt;=&lt;span class=&quot;co1&quot;&gt;${f2,,}&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;i&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;; i&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${#foo}&lt;/span&gt;; i++ &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;re2&quot;&gt;char&lt;/span&gt;=&lt;span class=&quot;co1&quot;&gt;${foo:$i:1}&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${foo:$i:1}&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;FILENAME&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$NUMBERS&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$char&lt;/span&gt;.ulaw &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
                &lt;span class=&quot;st0&quot;&gt;&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;FILENAME&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$LETTERS&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;slash.ulaw &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
                &lt;span class=&quot;st0&quot;&gt;&amp;quot;-&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;FILENAME&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$LETTERS&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dash.ulaw &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;a-z&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*|&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;A-Z&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;FILENAME&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$LETTERS&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$char&lt;/span&gt;.ulaw &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;esac&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;STRING&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$STRING&lt;/span&gt; &lt;span class=&quot;es2&quot;&gt;$FILENAME&lt;/span&gt;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;done&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Concatenate filenames into final audio file&lt;/span&gt;
write_call &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$OVERWRITE&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$DESTDIR&lt;/span&gt;/&lt;span class=&quot;es2&quot;&gt;$f1&lt;/span&gt;.ulaw&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$DESTDIR&lt;/span&gt;/&lt;span class=&quot;es2&quot;&gt;$f1&lt;/span&gt;.ulaw exists - not overwriting&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;return&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Writing &lt;span class=&quot;es2&quot;&gt;$DESTDIR&lt;/span&gt;/&lt;span class=&quot;es2&quot;&gt;$f1&lt;/span&gt;.ulaw&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;cat&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$STRING&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$DESTDIR&lt;/span&gt;/&lt;span class=&quot;es2&quot;&gt;$f1&lt;/span&gt;.ulaw&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# If no node given process all nodes&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-z&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$node&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;IFS&lt;/span&gt;=&lt;span class=&quot;st_h&quot;&gt;&#039;|&#039;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;read&lt;/span&gt; f1 f2 f3 f4
  &lt;span class=&quot;kw1&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$VERBOSE&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Processing Node Number: &lt;span class=&quot;es2&quot;&gt;$f1&lt;/span&gt; - Callsign: &lt;span class=&quot;es2&quot;&gt;$f2&lt;/span&gt;&amp;quot;&lt;/span&gt; ; &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
    make_call
    write_call
  &lt;span class=&quot;kw1&quot;&gt;done&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$SRCDIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;astdb.txt
&lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# process just given node&lt;/span&gt;
  &lt;span class=&quot;re2&quot;&gt;CALL&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-m&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$node&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$SRCDIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;astdb.txt&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-z&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$CALL&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
      &lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;No Call found for node - $1&amp;quot;&lt;/span&gt;
      &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
      &lt;span class=&quot;re2&quot;&gt;f2&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$CALL&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;awk&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-F&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;|&amp;quot;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;{print $2}&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
  &lt;span class=&quot;re2&quot;&gt;f1&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$node&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$VERBOSE&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Processing Node Number: &lt;span class=&quot;es2&quot;&gt;$node&lt;/span&gt; - Callsign: &lt;span class=&quot;es2&quot;&gt;$f2&lt;/span&gt;&amp;quot;&lt;/span&gt; ; &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
  make_call
  write_call
&lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
There&amp;#039;s a version that uses GSM coded files which didn&amp;#039;t work on my system, as all the numbers and letters are in &lt;code&gt;ulaw&lt;/code&gt; format, but for completeness here&amp;#039;s the &lt;code&gt;gsm&lt;/code&gt; version
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_92c70012a2383203ab9cbb641bd14947_3&quot;&gt;write_node_callsigns.sh &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_92c70012a2383203ab9cbb641bd14947_3&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;# !/bin/bash&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#  write_node_callsigns.sh v0.8&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#  Doug, WA3DSP 8/18/2015&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#  Portions by Marshall Dias&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# Script to write Calls to /var/lib/asterisk/sounds/rpt/nodenames&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# which will then be used in place of node numbers. This script&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# will NOT overwrite exisitng files unless you use the -o option.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# If you want to start clean and delete all nodename files do&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#    rm -rf /var/lib/asterisk/sounds/rpt/nodenames/*&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# or delete just the files you want to replace.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# A single node number can be specified on the command line with&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# the -n node -ex. -n 40000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# A -v option gives a little more info   &lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# v 0.7 - removed level changing as this is accomplished in &lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#         global telemetry level parameters. Files should&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#         stay at nominal levels.&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# V 0.8 - added code to ignore semicolon comments.  6/5/2020, WA3DSP&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# See all comments below&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Set the source directory to the Allstar database on your system.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# &#039;locate astdb.php&#039;  This file will exist if you are running any of the&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# images from hamvoip.org or you have installed allmon or lsnodes on&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# your system. For the BBB and RPi2 it will generally be /var/log/asterisk&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;SRCDIR&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;log&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Set the destination directory. &lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# Use a tmp directory for testing&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# The final destination for Allstar would be &lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# /var/lib/asterisk/sounds/rpt/nodenames&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# Use the -d path option to overide&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;DESTDIR&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames 
&lt;span class=&quot;co0&quot;&gt;# Test destination directory - must exist&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DESTDIR=/tmp/nodes&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Definitions of sound file directories&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;RPTSOUNDS&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt
&lt;span class=&quot;re2&quot;&gt;NODENAMES&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rpt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nodenames
&lt;span class=&quot;re2&quot;&gt;LETTERS&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;letters
&lt;span class=&quot;re2&quot;&gt;NUMBERS&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;asterisk&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sounds&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;digits
&lt;span class=&quot;re2&quot;&gt;STRING&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
usage&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;cat&lt;/span&gt; &lt;span class=&quot;co2&quot;&gt;&amp;lt;&amp;lt; EOF
&amp;nbsp;
write_node_callsigns.sh v0.8
Usage: write_node_callsigns.sh options
&amp;nbsp;
Writes Asterisk Allstar voice files of call signs from node numbers
&amp;nbsp;
OPTIONS:
&amp;nbsp;
   -h        Show this message
   -a        Process all nodes
   -i        Include node number with call
   -o        Overwrite existing file(s)
   -n node   Process single node (overrides -a)
   -d path   Specify path to output files
             Default: /var/lib/asterisk/sounds/rpt/nodenames
   -v        Verbose
&amp;nbsp;
Write callsign for node 40000, no overwrite, all nodes -
    $0 -n 40000
Write callsign for node 40000, overwrite, all nodes -
    $0 -on 40000
Write all callsigns, no overwrite -
    $0 -a
Write all callsigns, overwrite
    $0 -ao
Write single node to specific directory -
    $0 -n 40000 -d /etc/asterisk/local
Write single node including both call and node number, overwrite
    $0 -ion 40000
&amp;nbsp;
EOF&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;OVERWRITE&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;VERBOSE&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;INCNODE&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;VOLUME&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re4&quot;&gt;$#&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-eq&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;;
&lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
    usage
    &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$SRCDIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;astdb.txt &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
  &lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$SRCDIR&lt;/span&gt;/astdb.txt not found - Be sure to point SRCDIR in script to file location.&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;getopts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;hail:ovn:d:&amp;quot;&lt;/span&gt; OPTION
&lt;span class=&quot;kw1&quot;&gt;do&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$OPTION&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt;
         h&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
             usage
             &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
             &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
	 a&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
	 d&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	     &lt;span class=&quot;re2&quot;&gt;DESTDIR&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$OPTARG&lt;/span&gt;
	     &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
	 i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	     &lt;span class=&quot;re2&quot;&gt;INCNODE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
	     &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
         o&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  
	     &lt;span class=&quot;re2&quot;&gt;OVERWRITE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
             &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
         n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
             &lt;span class=&quot;re2&quot;&gt;node&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$OPTARG&lt;/span&gt;
             &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
         v&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
             &lt;span class=&quot;re2&quot;&gt;VERBOSE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
             &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
         ?&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
             usage
             &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt;
             &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;esac&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;done&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Form filenames from callsign&lt;/span&gt;
make_call &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
 &lt;span class=&quot;re2&quot;&gt;foo&lt;/span&gt;=&lt;span class=&quot;co1&quot;&gt;${1,,}&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;i&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;; i&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;${#foo}&lt;/span&gt;; i++ &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;re2&quot;&gt;char&lt;/span&gt;=&lt;span class=&quot;co1&quot;&gt;${foo:$i:1}&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;${foo:$i:1}&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;FILENAME&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$NUMBERS&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$char&lt;/span&gt;.gsm &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
                &lt;span class=&quot;st0&quot;&gt;&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;FILENAME&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$LETTERS&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;slash.gsm &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
                &lt;span class=&quot;st0&quot;&gt;&amp;quot;-&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;FILENAME&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$LETTERS&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dash.gsm &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;a-z&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*|&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;A-Z&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;FILENAME&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$LETTERS&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$char&lt;/span&gt;.gsm &lt;span class=&quot;sy0&quot;&gt;;;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;esac&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;STRING&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$STRING&lt;/span&gt; &lt;span class=&quot;es2&quot;&gt;$FILENAME&lt;/span&gt;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;done&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Concatenate filenames into final audio file&lt;/span&gt;
write_call &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$OVERWRITE&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$DESTDIR&lt;/span&gt;/&lt;span class=&quot;es2&quot;&gt;$f1&lt;/span&gt;.gsm&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
     &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$DESTDIR&lt;/span&gt;/&lt;span class=&quot;es2&quot;&gt;$f1&lt;/span&gt;.gsm exists - not overwriting&amp;quot;&lt;/span&gt;
	&lt;span class=&quot;kw3&quot;&gt;return&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Writing &lt;span class=&quot;es2&quot;&gt;$DESTDIR&lt;/span&gt;/&lt;span class=&quot;es2&quot;&gt;$f1&lt;/span&gt;.gsm&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;cat&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$STRING&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$DESTDIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$f1&lt;/span&gt;.gsm
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# If no node given process all nodes&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-z&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$node&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
  &lt;span class=&quot;re2&quot;&gt;Total&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;IFS&lt;/span&gt;=&lt;span class=&quot;st_h&quot;&gt;&#039;|&#039;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;read&lt;/span&gt; f1 f2 f3 f4
  &lt;span class=&quot;kw1&quot;&gt;do&lt;/span&gt;      
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$f1&lt;/span&gt; =~ ^\; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;continue&lt;/span&gt; ; &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-z&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$f1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;continue&lt;/span&gt; ; &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$VERBOSE&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Processing Node Number: &lt;span class=&quot;es2&quot;&gt;$f1&lt;/span&gt; - Callsign: &lt;span class=&quot;es2&quot;&gt;$f2&lt;/span&gt;&amp;quot;&lt;/span&gt; ; &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;Total&lt;/span&gt;=Total+&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;re2&quot;&gt;STRING&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
    make_call &lt;span class=&quot;re1&quot;&gt;$f2&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# Test for including node number &lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$INCNODE&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
     &lt;span class=&quot;re2&quot;&gt;STRING&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$STRING&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; &lt;span class=&quot;es2&quot;&gt;$RPTSOUNDS&lt;/span&gt;/node.gsm &amp;quot;&lt;/span&gt;
     make_call &lt;span class=&quot;re1&quot;&gt;$f1&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
    write_call
  &lt;span class=&quot;kw1&quot;&gt;done&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$SRCDIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;astdb.txt
  &lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;Processed &lt;span class=&quot;es2&quot;&gt;$Total&lt;/span&gt; Nodes&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# process just given node (-n node)&lt;/span&gt;
  &lt;span class=&quot;re2&quot;&gt;CALL&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-m&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$node&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$SRCDIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;astdb.txt&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-z&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$CALL&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
      &lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;No Call found for node - $1&amp;quot;&lt;/span&gt;
      &lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
      &lt;span class=&quot;re2&quot;&gt;f2&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$CALL&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;awk&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-F&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;|&amp;quot;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;{print $2}&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
  &lt;span class=&quot;re2&quot;&gt;f1&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$node&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$VERBOSE&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Processing Node Number: &lt;span class=&quot;es2&quot;&gt;$node&lt;/span&gt; - Callsign: &lt;span class=&quot;es2&quot;&gt;$f2&lt;/span&gt;&amp;quot;&lt;/span&gt; ; &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
  &lt;span class=&quot;re2&quot;&gt;STRING&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
  make_call &lt;span class=&quot;re1&quot;&gt;$f2&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# Test for including node number  &lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$INCNODE&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;re2&quot;&gt;STRING&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$STRING&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; &lt;span class=&quot;es2&quot;&gt;$RPTSOUNDS&lt;/span&gt;/node.gsm &amp;quot;&lt;/span&gt;
    make_call &lt;span class=&quot;re1&quot;&gt;$f1&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
  write_call
&lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
I only have this on the node that&amp;#039;s my VHF Gateway &lt;code&gt;481480&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Node Callsigns instead of Numbers&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;node_callsigns_instead_of_numbers&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;10018-20159&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;nodes_created&quot;&gt;Nodes Created&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
See : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:allstar_nodes_built&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:allstar_nodes_built&quot; data-wiki-id=&quot;public:radio:topics:allstar:allstar_nodes_built&quot;&gt;The Nodes&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Nodes Created&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nodes_created&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;20160-20217&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;accessing_remotely_via_iax&quot;&gt;Accessing remotely via IAX&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
See &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:iax_access&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:iax_access&quot; data-wiki-id=&quot;public:radio:topics:allstar:iax_access&quot;&gt;IAX Remote Access&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Accessing remotely via IAX&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;accessing_remotely_via_iax&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;20218-20278&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;morse_speech_ids&quot;&gt;Morse / Speech IDs&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
See &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:allstar_id&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:allstar_id&quot; data-wiki-id=&quot;public:radio:topics:allstar:allstar_id&quot;&gt;Over the air ID&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Morse \/ Speech IDs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;morse_speech_ids&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;20279-20330&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;bridges&quot;&gt;Bridges&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DMR  : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:allstar_dmr&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:allstar_dmr&quot; data-wiki-id=&quot;public:radio:topics:allstar:allstar_dmr&quot;&gt;DMR Bridging&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; NXDN : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:allstar_nxdn&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:allstar_nxdn&quot; data-wiki-id=&quot;public:radio:topics:allstar:allstar_nxdn&quot;&gt;NXDN Bridging&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Bridges&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bridges&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;20331-20408&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;configs&quot;&gt;Configs&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=private:node481480.zip&quot; class=&quot;media mediafile mf_zip wikilink2&quot; title=&quot;private:node481480.zip&quot;&gt;node481480.zip&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=private:node481481.zip&quot; class=&quot;media mediafile mf_zip wikilink2&quot; title=&quot;private:node481481.zip&quot;&gt;node481481.zip&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=private:node481482.zip&quot; class=&quot;media mediafile mf_zip wikilink2&quot; title=&quot;private:node481482.zip&quot;&gt;node481482.zip&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 05/06/25 22:30 BST&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;20409-20585&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:allstar&amp;amp;do=showtag&amp;amp;tag=allstar&quot; class=&quot;wikilink1&quot; title=&quot;tag:allstar&quot; rel=&quot;tag&quot;&gt;allstar&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dvswitch&amp;amp;do=showtag&amp;amp;tag=dvswitch&quot; class=&quot;wikilink1&quot; title=&quot;tag:dvswitch&quot; rel=&quot;tag&quot;&gt;dvswitch&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dmr&amp;amp;do=showtag&amp;amp;tag=dmr&quot; class=&quot;wikilink1&quot; title=&quot;tag:dmr&quot; rel=&quot;tag&quot;&gt;dmr&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:echolink&amp;amp;do=showtag&amp;amp;tag=echolink&quot; class=&quot;wikilink1&quot; title=&quot;tag:echolink&quot; rel=&quot;tag&quot;&gt;echolink&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;20586-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 18:42:09 +0000</pubDate>
        </item>
        <item>
            <title>DM41 Save/Restore Statistics</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:dm41_save_stats</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:start&quot; data-wiki-id=&quot;public:calculator:guides:start&quot;&gt;Hints &amp;amp; Tips&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dm41_save_restore_statistics&quot;&gt;DM41 Save/Restore Statistics&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Using Extended Memory to save Statistics Registers &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DM41 Save\/Restore Statistics&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dm41_save_restore_statistics&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-118&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;background&quot;&gt;Background&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Statistics use 6 regular registers to keep track of data for calculating Mean and Standard Deviations.
&lt;/p&gt;

&lt;p&gt;
Keeping a long-term record of a set of variables means not being able to use the Statistics functions for anything else unless steps are taken to save and restore the registers.
&lt;/p&gt;

&lt;p&gt;
It is possible to save the 6 registers in a data file in Extended Memory and then use the statistics for other things, and restore the saved Statistics back to Main Memory when required.
&lt;/p&gt;

&lt;p&gt;
By Default the Statistics registers start at &lt;strong&gt;R11&lt;/strong&gt; but this can be changed with the command &lt;code&gt;∑REG&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
This is the default list of Statistics Registers and contents
&lt;/p&gt;
&lt;div class=&quot;table sectionedit3&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;R11&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;∑x&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Summation of x-values&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;R12&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;∑x&lt;sup&gt;2&lt;/sup&gt;&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Summation of squares of x-values.&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;R13&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;∑y&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Summation of y-values.&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;R14&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;∑y&lt;sup&gt;2&lt;/sup&gt;&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Summation of squares of y-values.&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;R15&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;∑xy&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Summation of products of x- and y-values.&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;R16&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;n&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Number of data points accumulated.&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;783-1060&amp;quot;} --&gt;
&lt;p&gt;
&lt;strong&gt;Advantage Pac : CFIT application &lt;/strong&gt; seems to reset &lt;code&gt;∑REG&lt;/code&gt; to &lt;strong&gt;12&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Background&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;background&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;119-1136&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;extended_memory_data_file&quot;&gt;Extended Memory Data File&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The statistics registers use 6 Main Memory registers, &lt;em&gt;&lt;strong&gt;usually R11 → R16&lt;/strong&gt;&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
We need to create a Data File in Extended Memory to hold these.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put the name in &lt;code&gt;ALPHA&lt;/code&gt; e.g. &lt;code&gt;REGS&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put &lt;code&gt;6&lt;/code&gt; in &lt;code&gt;x&lt;/code&gt; register&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; excecute &lt;code&gt;CRFLD&lt;/code&gt; to create the Data File &lt;code&gt;REGS&lt;/code&gt; in Extended Memory&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Once it&amp;#039;s created it can be used to hold the contents of the 6 Statistics Registers
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Extended Memory Data File&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;extended_memory_data_file&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1137-1559&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;save_registers_to_extended_memory&quot;&gt;Save Registers to Extended Memory&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; We need to make sure our Data File is the current file and that the pointer is at the beginning of the file&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put &lt;code&gt;REGS&lt;/code&gt; in &lt;code&gt;ALPHA&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put &lt;code&gt;0&lt;/code&gt; in &lt;code&gt;X&lt;/code&gt; so that we put the pointer at the first register record in the data file.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Execute &lt;code&gt;SEEKPTA&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Now we need to copy the 6 Registers R11 → R16 to the Data File &lt;code&gt;REGS&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; ensure &lt;code&gt;REGS&lt;/code&gt; is still in &lt;code&gt;ALPHA&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; put a number in &lt;code&gt;X&lt;/code&gt; to indicate which range of Registers to save, this is &lt;code&gt;bbb.eee&lt;/code&gt; where &lt;code&gt;b&lt;/code&gt; is the beginning register and &lt;code&gt;e&lt;/code&gt; is the end&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; put &lt;code&gt;11.016&lt;/code&gt; in &lt;code&gt;X&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; execute &lt;code&gt;SAVERX&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Save Registers to Extended Memory&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;save_registers_to_extended_memory&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1560-2207&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;restore_registers_from_extended_memory_to_main_memory&quot;&gt;Restore Registers from Extended Memory to Main Memory&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; We need to make sure our Data File is the current file and that the pointer is at the beginning of the file&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put &lt;code&gt;REGS&lt;/code&gt; in &lt;code&gt;ALPHA&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put &lt;code&gt;0&lt;/code&gt; in &lt;code&gt;X&lt;/code&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Execute &lt;code&gt;SEEKPTA&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; We can copy the 6 registers held in the Data File &lt;code&gt;REGS&lt;/code&gt; back to R11 → R16&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; ensure &lt;code&gt;REGS&lt;/code&gt; is still in &lt;code&gt;ALPHA&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; put a number in &lt;code&gt;X&lt;/code&gt; to indicate where the recovered registers will be put in Main Memory &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; put &lt;code&gt;11.016&lt;/code&gt; in &lt;code&gt;X&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; execute &lt;code&gt;GETRX&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Restore Registers from Extended Memory to Main Memory&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;restore_registers_from_extended_memory_to_main_memory&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2208-2750&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;a_program_to_make_it_easier&quot;&gt;A program to make it easier&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
It is possible to change the base register of the 6 Statistics Registers, away from the default of R11. 
&lt;/p&gt;

&lt;p&gt;
We need to take this into account.
&lt;/p&gt;

&lt;p&gt;
This uses the query &lt;code&gt;∑REG?&lt;/code&gt; to find the base register, then create &lt;code&gt;bbb.eee&lt;/code&gt; using simple arithmetic.
&lt;/p&gt;

&lt;p&gt;
When used in &lt;code&gt;SAVER&lt;/code&gt; (save&lt;code&gt;R&lt;/code&gt;egs) we ensure we copy the current Statistics Registers data.
&lt;/p&gt;

&lt;p&gt;
When used in &lt;code&gt;GETR&lt;/code&gt; (get&lt;code&gt;R&lt;/code&gt;egs) we ensure we restore our data to the Registers currently set to be the active Statistics Registers (they may have changed since first saving them)
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
LBL ¬SAVER
¬REGS
0
SEEKPTA
∑REG?
1.001
*
.005
+
SAVERX
¬REGS SAVED
AVIEW
PSE
CLD
RTN
LBL ¬GETR
¬REGS
0
SEEKPTA
∑REG?
1.001
*
.005
+
GETRX
¬REGS OK
AVIEW
PSE
CLD
RTN
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;A program to make it easier&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;a_program_to_make_it_easier&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2751-3516&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;multiple_saved_files&quot;&gt;Multiple Saved Files&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
It&amp;#039;s possible to have more than one Extended Memory file with Stats registers.
&lt;/p&gt;

&lt;p&gt;
This could keep track of different sets of statistics and allow restore, update, save for many sets of statistical data.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve set up &lt;strong&gt;two&lt;/strong&gt; data files : &lt;code&gt;REGS&lt;/code&gt; and &lt;code&gt;CHESS&lt;/code&gt; in extended memory and made &lt;strong&gt;two&lt;/strong&gt; version of the simple program above, the only change is to alter the lines which put the name of the file in &lt;code&gt;ALPHA&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Then I thought of adding a 7th Register holding the &lt;code&gt;DATE&lt;/code&gt; of the latest &lt;code&gt;SAVE&lt;/code&gt; for the &lt;code&gt;CHESS&lt;/code&gt; statistics, so I can keep track of whether I&amp;#039;m up to date in entering the scores.
&lt;/p&gt;

&lt;p&gt;
Delete the original &lt;code&gt;CHESS&lt;/code&gt; Data File &amp;amp; make a new one with 7 registers 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;ALPHA&lt;/code&gt; → &lt;code&gt;CHESS&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; execute &lt;code&gt;PURFL&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;X&lt;/code&gt; = &lt;code&gt;7&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;ALPHA&lt;/code&gt; still → &lt;code&gt;CHESS&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; execute &lt;code&gt;CRFLD&lt;/code&gt; to create the new 7-register data file&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The date is automatically stored in the register just &lt;em&gt;after&lt;/em&gt; the &lt;code&gt;Stats&lt;/code&gt; - in general in &lt;code&gt;R18&lt;/code&gt; when &lt;code&gt;ΣREG&lt;/code&gt; is &lt;code&gt;12&lt;/code&gt; - and automatically adapts the register used depending on &lt;code&gt;ΣREG?&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Here is &lt;code&gt;SAVEC&lt;/code&gt; and &lt;code&gt;GETC&lt;/code&gt; for save&lt;code&gt;C&lt;/code&gt;hess and get&lt;code&gt;C&lt;/code&gt;hess
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
LBL ¬SAVEC
¬CHESS
0
SEEKPTA
∑REG?
STO 01
6
+
STO 00
DATE
STO IND 00
RCL 01
1.001
*
.006
+
SAVERX
¬CHESS SAVED
AVIEW
PSE
CLD
RTN
END
&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;LBL ¬GETC
¬CHESS
0
SEEKPTA
∑REG?
STO 01
6
+
STO 00
RCL 01
1.001
*
.006
+
GETRX
CLA
RCL IND 00
¬LAST 
ADATE
AVIEW
PSE
CLD
RTN
END
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Multiple Saved Files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;multiple_saved_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;3517-4960&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;further_ideas&quot;&gt;Further Ideas&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I might make a better version which prompts for a Data File name rather than having one separate program for each scenario
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:calculator&amp;amp;do=showtag&amp;amp;tag=calculator&quot; class=&quot;wikilink1&quot; title=&quot;tag:calculator&quot; rel=&quot;tag&quot;&gt;calculator&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dm41x&amp;amp;do=showtag&amp;amp;tag=dm41x&quot; class=&quot;wikilink1&quot; title=&quot;tag:dm41x&quot; rel=&quot;tag&quot;&gt;dm41x&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dm41l&amp;amp;do=showtag&amp;amp;tag=dm41l&quot; class=&quot;wikilink1&quot; title=&quot;tag:dm41l&quot; rel=&quot;tag&quot;&gt;dm41l&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Ideas&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_ideas&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;4961-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 10 Feb 2026 18:01:25 +0000</pubDate>
        </item>
        <item>
            <title>DM41X HP16C Module</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:hp16c_emulator</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:start&quot; data-wiki-id=&quot;public:calculator:guides:start&quot;&gt;Hints &amp;amp; Tips&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dm41x_hp16c_module&quot;&gt;DM41X HP16C Module&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DM41X HP16C Module&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dm41x_hp16c_module&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-50&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;keyboard_overlay&quot;&gt;Keyboard Overlay&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acalculator%3Aguides%3Ahp16c_emulator&amp;amp;media=public:calculator:guides:41_16.png&quot; class=&quot;media&quot; title=&quot;public:calculator:guides:41_16.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=ebf8d9&amp;amp;media=public:calculator:guides:41_16.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Keyboard Overlay&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;keyboard_overlay&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;51-127&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;background&quot;&gt;Background&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The HP16C Programmer&amp;#039;s Calculator is made for manipulating numbers in Binary/Octal/Hexadecimal/Decimal to help with programming and other areas that rely on the nitty-gritty of bit-twiddling. 
&lt;/p&gt;

&lt;p&gt;
Swiss Micros make a modern hardware emulation (similar in form to the DM15L I &lt;em&gt;already&lt;/em&gt; own) but rather than adding another calculator to my (growing) collection I found there is a ROM/Module method to add all (and more) the same features to the DM41X (and presumably the HP41, if you can find a hardware ROM plugin with it). 
&lt;/p&gt;

&lt;p&gt;
I occasionally need to do some conversions/calculations into Hex and Binary (thinking of TCP/IP networking, subnet masks etc. or perhaps debugging RS232 serial data, or when writing rig control software?) and being able to do everything on the DM41X (along with the Complex Number module) means the DM41X will become even more useful day-to-day.
&lt;/p&gt;

&lt;p&gt;
The manual for the HP16C Module &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:guides:hp_16c_emulator_manual.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:calculator:guides:hp_16c_emulator_manual.pdf (1.8 MB)&quot;&gt;hp_16c_emulator_manual.pdf&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The versions of modules I&amp;#039;m using : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:hp-16c_rev.1a.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:hp-16c_rev.1a.zip (19.5 KB)&quot;&gt;hp-16c_rev.1a.zip&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Background&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;background&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;128-1190&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;the_hp16c&quot;&gt;The HP16C&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:guides:hp16c.jpg&quot; class=&quot;media&quot; title=&quot;public:calculator:guides:hp16c.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=556645&amp;amp;media=public:calculator:guides:hp16c.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The HP16C Manual : &lt;a href=&quot;https://literature.hpcalc.org/community/hp16c-oh-en.pdf&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://literature.hpcalc.org/community/hp16c-oh-en.pdf&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://literature.hpcalc.org/community/hp16c-oh-en.pdf&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The HP16C&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_hp16c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1191-1348&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;the_dm16l&quot;&gt;The DM16L&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.swissmicros.com/product/dm16l&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.swissmicros.com/product/dm16l&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.swissmicros.com/product/dm16l&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:guides:dm16l.png&quot; class=&quot;media&quot; title=&quot;public:calculator:guides:dm16l.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=8fcbd4&amp;amp;media=public:calculator:guides:dm16l.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;I bought a &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:info:dm16l_info&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:info:dm16l_info&quot; data-wiki-id=&quot;public:calculator:info:dm16l_info&quot;&gt;DM16L&lt;/a&gt; in August 2022&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The DM16L&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_dm16l&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1349-1549&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;basic_operation&quot;&gt;Basic Operation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Like the &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:41z_module&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:41z_module&quot; data-wiki-id=&quot;public:calculator:guides:41z_module&quot;&gt;41Z Complex Number&lt;/a&gt; module, a &lt;code&gt;USER&lt;/code&gt; keyboard assignment is made to a &lt;em&gt;trigger&lt;/em&gt; command which then automagically re-maps the whole keyboard for one command, then it reverts to normal. A mental image of the re-mapped keyboard starts to develop with use, making operation easier with time.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve &lt;em&gt;assigned&lt;/em&gt; the &lt;kbd class=&quot;__keyboard&quot;&gt;LN&lt;/kbd&gt; key to the &lt;em&gt;trigger&lt;/em&gt; command &lt;code&gt;16C&lt;/code&gt; for the &lt;code&gt;USER&lt;/code&gt; keyboard
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ASN&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;6&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;LN&lt;/kbd&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Basic Operation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;basic_operation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1550-2177&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;user_keyboard_comments&quot;&gt;User Keyboard comments&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
With &lt;code&gt;USER&lt;/code&gt; keyboard active I generally won&amp;#039;t miss the loss of &lt;kbd class=&quot;__keyboard&quot;&gt;LN&lt;/kbd&gt; as I rarely use it. 
&lt;/p&gt;

&lt;p&gt;
If I &lt;em&gt;do&lt;/em&gt; need &lt;kbd class=&quot;__keyboard&quot;&gt;LN&lt;/kbd&gt; I can simply turn off the &lt;code&gt;USER&lt;/code&gt; keyboard. 
&lt;/p&gt;

&lt;p&gt;
The same applies for using the &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; key for entering Statistical Data - it&amp;#039;s assigned to the &lt;code&gt;Complex Keyboard&lt;/code&gt; trigger &lt;kbd class=&quot;__keyboard&quot;&gt;ΣZL&lt;/kbd&gt;. 
&lt;/p&gt;

&lt;p&gt;
I won&amp;#039;t ever be using &lt;code&gt;statistics&lt;/code&gt; at the same time as &lt;code&gt;complex numbers&lt;/code&gt; (or &lt;code&gt;HP16C functions&lt;/code&gt;). 
&lt;/p&gt;

&lt;p&gt;
The &lt;code&gt;USER&lt;/code&gt; keyboard can generally remain active all the time &lt;em&gt;except&lt;/em&gt; when I want to do &lt;code&gt;statistics&lt;/code&gt; or calculate a &lt;code&gt;natural logarithm&lt;/code&gt;. Two easy sacrificed keys. Are there others I can do without for additional assignments to frequently used functions or modules?
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteclassic&quot;&gt;I&amp;#039;ve noticed that it&amp;#039;s possible to &lt;code&gt;assign&lt;/code&gt; the &lt;code&gt;16C&lt;/code&gt; command to the &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; key. 
&lt;p&gt;
This allows a single key to be used both to trigger &lt;code&gt;16C&lt;/code&gt; mode, and then to trigger input mode &lt;code&gt;16NPT&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
It means less hopping around.
&lt;/p&gt;

&lt;p&gt;
The &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; key is doing double duty but &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; seems a little more user friendly than &lt;kbd class=&quot;__keyboard&quot;&gt;LN&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; for inputting numbers.
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ASN&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;6&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;User Keyboard comments&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;user_keyboard_comments&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2178-3522&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;keys&quot;&gt;16KEYS?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_5ae2eebb934fd81e4780333661db288a_1&quot;&gt;16KEYS? info &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_5ae2eebb934fd81e4780333661db288a_1&quot;&gt;
&lt;p&gt;
I played with the &lt;code&gt;LADYBUG&lt;/code&gt; module recently ( see &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:dm41x_ladybug_module&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:dm41x_ladybug_module&quot; data-wiki-id=&quot;public:calculator:guides:dm41x_ladybug_module&quot;&gt;DM41X Ladybug Module&lt;/a&gt; ) and enjoyed the more “immediate” keyboard input - with the whole keyboard re-mapped while using the module (in “INTEGER” mode). No need to preface each instruction with a &lt;code&gt;trigger&lt;/code&gt; to enable the special keyboard for one command at a time.
&lt;/p&gt;

&lt;p&gt;
I found that the HP16C Module can be switched to “full-time” &lt;code&gt;16KEYS&lt;/code&gt; mode too….
&lt;/p&gt;

&lt;p&gt;
You need to get to the &lt;code&gt;∑BITS&lt;/code&gt; launcher and then select &lt;code&gt;Y&lt;/code&gt; (for &lt;code&gt;16KE&lt;strong&gt;Y&lt;/strong&gt;S&lt;/code&gt;)  and answer Y or N.
&lt;/p&gt;

&lt;p&gt;
The &lt;code&gt;16KEYS&lt;/code&gt; function can&amp;#039;t be reached any other way, that I&amp;#039;ve found. The simplest way is to use the DM41X &lt;code&gt;CST&lt;/code&gt; menu to run the 16C &lt;code&gt;∑MOD&lt;/code&gt; launcher, then press &lt;code&gt;SHIFT&lt;/code&gt; to switch to the &lt;code&gt;∑BITS&lt;/code&gt; launcher, then select &lt;code&gt;Y&lt;/code&gt; (for &lt;code&gt;16KEYS&lt;/code&gt;).
&lt;/p&gt;

&lt;p&gt;
You&amp;#039;ll need to enable &lt;code&gt;USER&lt;/code&gt; key mode, and then the 16C module can be used without the the need to trigger &lt;em&gt;every&lt;/em&gt; command with &lt;code&gt;16C&lt;/code&gt; (normally ASN&amp;#039;d to &lt;code&gt;LN&lt;/code&gt; key). 
&lt;/p&gt;

&lt;p&gt;
You still need to use &lt;code&gt;16NPT&lt;/code&gt; to input numbers (this is mapped to the &lt;code&gt;A&lt;/code&gt; (&lt;code&gt;∑+&lt;/code&gt;) key. Otherwise most things are just more intuitive. No need to use &lt;code&gt;16C&lt;/code&gt; before an arithmetic operation like &lt;code&gt;+&lt;/code&gt; or &lt;code&gt;-&lt;/code&gt; etc.
&lt;/p&gt;

&lt;h4&gt;Example&lt;/h4&gt;

&lt;p&gt;
Switch to &lt;code&gt;BIN&lt;/code&gt; view
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
Enter a binary number &lt;code&gt;10111011&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;10111011&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
Convert to &lt;code&gt;HEX&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;E&lt;/kbd&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;H: bb&lt;/pre&gt;

&lt;p&gt;
Convert to &lt;code&gt;DEC&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;d: 187&lt;/pre&gt;

&lt;p&gt;
Enter a Decimal Number &lt;code&gt;23&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;23&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;d : 23&lt;/pre&gt;

&lt;p&gt;
Add them
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;+&lt;/kbd&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;d: 210&lt;/pre&gt;

&lt;p&gt;
Convert to &lt;code&gt;BIN&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;b: 11010010&lt;/pre&gt;

&lt;p&gt;
Much more intuitive….
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;16KEYS?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;keys&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;3523-5203&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;select_the_base&quot;&gt;Select the Base&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;code&gt;USER&lt;/code&gt; keyboard active.
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; is &lt;code&gt;USER&lt;/code&gt; assigned to &lt;kbd class=&quot;__keyboard&quot;&gt;LN&lt;/kbd&gt; - referred to as &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; hereafter.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ll use the &lt;code&gt;alpha letter&lt;/code&gt; for the top-row keys to describe them for Base Selection
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; = &lt;code&gt;BINARY&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt; = &lt;code&gt;OCTAL&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt; = &lt;code&gt;DECIMAL&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;E&lt;/kbd&gt; = &lt;code&gt;HEX&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Select the Base&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;select_the_base&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;5204-5610&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;enter_a_number&quot;&gt;Enter a number&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;hex&quot;&gt;HEX&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Enter HEX value &lt;code&gt;5F&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Use the &lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; function which lives on the &lt;kbd class=&quot;__keyboard&quot;&gt;Σ+&lt;/kbd&gt; button (it switches from the &lt;code&gt;complex&lt;/code&gt; assigned &lt;kbd class=&quot;__keyboard&quot;&gt;ΣZL&lt;/kbd&gt; to &lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; when the &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; is invoked)
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;E&lt;/kbd&gt; (to get into HEX mode) 
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;5&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;F&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;convert_to_bin&quot;&gt;Convert to BIN&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt;  gives &lt;code&gt;1011111&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;enter_a_new_bin_number&quot;&gt;Enter a new BIN number&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; (i.e. &lt;kbd class=&quot;__keyboard&quot;&gt;Σ+&lt;/kbd&gt;) &lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;0&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;0&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;0&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;add_them_together&quot;&gt;Add them together&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;+&lt;/kbd&gt; gives &lt;code&gt;11001011&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;convert_to_hex&quot;&gt;Convert to HEX&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;E&lt;/kbd&gt; gives &lt;code&gt;Cb&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;convert_to_dec&quot;&gt;Convert to DEC&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt; gives &lt;code&gt;203&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;always enter numbers with &lt;/strong&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; &lt;code&gt;&lt;em&gt;the number&lt;/em&gt;&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt; always use the &lt;code&gt;16&lt;/code&gt; versions of mathematical functions &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;+&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;X&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
etc.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Enter a number&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;enter_a_number&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;5611-6776&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;not_or_and_xor&quot;&gt;NOT, OR, AND, XOR&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
These are on &lt;em&gt;shifted&lt;/em&gt; (and triggered with &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt;) math keys: 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;-&lt;/code&gt; = &lt;code&gt;NOT&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;+&lt;/code&gt; = &lt;code&gt;OR&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;x&lt;/code&gt; = &lt;code&gt;AND&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;÷&lt;/code&gt; = &lt;code&gt;XOR&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Example, in binary….
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;AND&lt;/strong&gt; two numbers:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;11011101&lt;/code&gt; &lt;code&gt;AND&lt;/code&gt; &lt;code&gt;10001001&lt;/code&gt; →
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; (to get into Binary mode if needed)
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; &lt;code&gt;11011101&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; &lt;code&gt;10001001&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;X&lt;/kbd&gt; gives &lt;code&gt;10001001&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
In HEX…. &lt;strong&gt;XOR&lt;/strong&gt; →
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;E&lt;/kbd&gt; (to get into HEX)
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; &lt;code&gt;BEEF&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt; (first number) (make sure at least 16-bit word size for this example &lt;a href=&quot;#setting_word_size_and_negative_number_convention&quot; title=&quot;public:calculator:guides:hp16c_emulator ↵&quot; class=&quot;wikilink1&quot;&gt;Word Size&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; &lt;code&gt;CAFE&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt; (second number)
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;÷&lt;/kbd&gt; (XOR) gives &lt;code&gt;7411&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Convert answer to DEC
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt; gives &lt;code&gt;29713&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Convert answer to BIN
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; gives a long string of &lt;code&gt;1&lt;/code&gt; and &lt;code&gt;0&lt;/code&gt; that scroll across the screen…
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;NOT, OR, AND, XOR&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;not_or_and_xor&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;6777-7889&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;window&quot;&gt;Window&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
View the long BIN number using a WINDOW to look at 8 bits at a time…
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
This asks &lt;code&gt;WINDOW _ &lt;/code&gt; and enter &lt;code&gt;0&lt;/code&gt; for the 1&lt;sup&gt;st&lt;/sup&gt; (MSB) 8 bits:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;W0: 11101000:b&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Scroll to sequential &lt;code&gt;WINDOW&lt;/code&gt; slices with &lt;kbd class=&quot;__keyboard&quot;&gt;+&lt;/kbd&gt; and &lt;kbd class=&quot;__keyboard&quot;&gt;-&lt;/kbd&gt; →
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;+&lt;/kbd&gt; →
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;W1: 0010001:b&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;+&lt;/kbd&gt; →
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;W2:           :b&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
The full 16-bit number is therefore:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;111010000010001&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Window&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;window&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;7890-8347&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;setting_word_size_and_negative_number_convention&quot;&gt;Setting Word Size and negative number convention&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The word size can be up to &lt;code&gt;64&lt;/code&gt; bits. In general most stuff is 4, 8 or 16 bits wide, so you can set the size of the binary number in the &lt;code&gt;∑MOD&lt;/code&gt; launcher:
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;USR&lt;/kbd&gt; (one of several different ways of getting to &lt;code&gt;∑MOD&lt;/code&gt;)
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_5ae2eebb934fd81e4780333661db288a_2&quot;&gt;16KEYS methods &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_5ae2eebb934fd81e4780333661db288a_2&quot;&gt;
&lt;p&gt;
&lt;strong&gt;if &lt;code&gt;16KEYS&lt;/code&gt; keyboard is active&lt;/strong&gt; then the quickest way is &lt;code&gt;SHIFT&lt;/code&gt; &lt;code&gt;2&lt;/code&gt; as the last method isn&amp;#039;t available (no &lt;code&gt;16C&lt;/code&gt; assignment) &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
There is then a choice of settings 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;B:O:D:H:F - 0: 1:2:W:S:?&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
The first four can set the mode to Binary, Octal, Decimal, Float.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;0&lt;/kbd&gt; sets &lt;code&gt;UNSIGNED&lt;/code&gt; integers&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt; sets &lt;code&gt;ONE&amp;#039;S COMPLEMENT&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;2&lt;/kbd&gt; sets &lt;code&gt;TWO&amp;#039;S COMPLEMENT&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Word size is checked with &lt;kbd class=&quot;__keyboard&quot;&gt;S&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
Word size is set with &lt;kbd class=&quot;__keyboard&quot;&gt;W&lt;/kbd&gt; then enter (eg) &lt;code&gt;16&lt;/code&gt; to set 16-bit words.
&lt;/p&gt;

&lt;p&gt;
Word Size can also be set directly from a &lt;code&gt;16C&lt;/code&gt; keyboard function &lt;code&gt;16WSZ&lt;/code&gt; accessed via  &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;5&lt;/kbd&gt; rather than via the &lt;code&gt;∑MOD&lt;/code&gt; menu/launcher
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;?&lt;/kbd&gt; displays the current settings (&lt;strong&gt;press &lt;code&gt;?&lt;/code&gt; then quickly press and hold it to read the displayed info&lt;/strong&gt;)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;0c - 16 - DEC&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
This means &lt;code&gt;unsigned integers&lt;/code&gt;, 16-bit words, DECIMAL mode.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Setting Word Size and negative number convention&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;setting_word_size_and_negative_number_convention&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;8348-9729&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;other_launchers&quot;&gt;Other Launchers&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Lots of functions are available in &lt;em&gt;launcher&lt;/em&gt; sub-menus, eg a menu of &lt;code&gt;rotate&lt;/code&gt; functions, or &lt;code&gt;shift&lt;/code&gt; functions.
&lt;/p&gt;

&lt;p&gt;
The various &lt;em&gt;launchers&lt;/em&gt; are available cyclically via the &lt;code&gt;16C&lt;/code&gt; &lt;code&gt;XEQ&lt;/code&gt; along with &lt;code&gt;SHIFT&lt;/code&gt; and &lt;code&gt;A&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Some trial and error is needed to find what you want, but it starts:
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; → &lt;code&gt;R:  L  LN  RN  R&lt;/code&gt; which is a menu to do bit-rotations. 
&lt;/p&gt;

&lt;p&gt;
Rotate 1-bit Left by pressing top-row button &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
Rotate N-bits left with top-row button &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt; (and enter the number of bits)
&lt;/p&gt;

&lt;p&gt;
Rotate N-bits Right with top-row button &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt; (and enter the number of bits)
&lt;/p&gt;

&lt;p&gt;
Rotate 1-bit Right with top-row button &lt;kbd class=&quot;__keyboard&quot;&gt;E&lt;/kbd&gt;.
&lt;/p&gt;

&lt;p&gt;
From the &lt;code&gt;R&lt;/code&gt; menu:
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; give the &lt;code&gt;S:  L  LN  RN  R&lt;/code&gt; menu to &lt;code&gt;SHIFT&lt;/code&gt; bits Left or Right
&lt;/p&gt;

&lt;p&gt;
From the &lt;code&gt;S&lt;/code&gt; menu:
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; gives &lt;code&gt;∑R : …………………. &lt;/code&gt; which gives lots of options to do things &lt;em&gt;rightwards&lt;/em&gt; with the bits. &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; list them
&lt;/p&gt;

&lt;p&gt;
This goes on via &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; and &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; (&lt;code&gt;ORANGE&lt;/code&gt; button) to access several &lt;em&gt;menu launchers&lt;/em&gt;. Trial and Error and muscle memory.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;a_brief_map_list_of_launchers&quot;&gt;A brief map/list of launchers&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; → &lt;code&gt;∑ROT&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;∑ROT&lt;/code&gt; → &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; → &lt;code&gt;∑LEFT&lt;/code&gt; → &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; → &lt;code&gt;∑MOD&lt;/code&gt; → &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; → &lt;code&gt;∑ROT&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;∑ROT&lt;/code&gt; → &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; → &lt;code&gt;∑SHF&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;∑SHF&lt;/code&gt; → &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; → &lt;code&gt;∑RIGHT&lt;/code&gt; → &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; → &lt;code&gt;∑BIT&lt;/code&gt; → &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; → &lt;code&gt;∑SHF&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;∑LEFT&lt;/code&gt; ↔ &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; ↔ &lt;code&gt;∑RIGHT&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;∑MOD&lt;/code&gt; ↔ &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; ↔ &lt;code&gt;∑BIT&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;∑SHF&lt;/code&gt; ↔ &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; ↔ &lt;code&gt;S“:&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;∑ROT&lt;/code&gt; ↔ &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; ↔ &lt;code&gt;RC:&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Other Launchers&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;other_launchers&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;9730-11394&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;registers_etc&quot;&gt;Registers etc&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Numbers can be saved in &lt;code&gt;16C&lt;/code&gt; registers via &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt; &lt;code&gt;NN&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
e.g. save a &lt;code&gt;subnet mask&lt;/code&gt; of &lt;code&gt;11111100&lt;/code&gt; into &lt;code&gt;16C&lt;/code&gt; REG &lt;code&gt;00&lt;/code&gt; (i.e. the last octet of a &lt;strong&gt;/30&lt;/strong&gt; network &lt;code&gt;255.255.255.252&lt;/code&gt;)
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; (go to BINARY mode)
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; &lt;code&gt;11111100&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt; &lt;code&gt;00&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Registers etc&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;registers_etc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;11395-11786&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;use_the_stored_value&quot;&gt;Use the stored value&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
What is &lt;code&gt;123&lt;/code&gt; &lt;code&gt;AND&lt;/code&gt; &lt;code&gt;MASK&lt;/code&gt; ? (what&amp;#039;s the &lt;em&gt;network&lt;/em&gt; base number for host address of 123 using a netmask of 252?)
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt; (decimal so you can enter &lt;code&gt;123&lt;/code&gt; rather than a BINARY number)  
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; &lt;code&gt;123&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
recall mask (it doesn&amp;#039;t matter that it was initially stored as a BINARY number, it&amp;#039;s displayed in whatever base you are currently using)
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;RCL&lt;/kbd&gt; &lt;code&gt;00&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;AND&lt;/code&gt; them
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;x&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
answer is &lt;code&gt;120&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
The MASK is still in &lt;code&gt;16-Register&lt;/code&gt; &lt;code&gt;00&lt;/code&gt; if needed again….
&lt;/p&gt;

&lt;p&gt;
Net address of a host with address &lt;code&gt;43&lt;/code&gt;?
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; &lt;code&gt;43&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;RCL&lt;/kbd&gt; &lt;code&gt;00&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;x&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
answer : &lt;code&gt;40&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;xxx.xxx.xxx.43&lt;/code&gt; has a network address of &lt;code&gt;xxx.xxx.xxx.40&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Use the stored value&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;use_the_stored_value&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;11787-12714&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;most_used_functions&quot;&gt;Most Used Functions&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; = &lt;kbd class=&quot;__keyboard&quot;&gt;LN&lt;/kbd&gt; (i.e. &lt;kbd class=&quot;__keyboard&quot;&gt;E&lt;/kbd&gt; on top-row)
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; = &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; (i.e. &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; on top-row, must be triggered with &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt;) &lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;16NPT&lt;/kbd&gt; &lt;code&gt;type in a number&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt; (enter a number in whatever base is currently selected) 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;BIN&lt;/code&gt; &lt;code&gt;OCT&lt;/code&gt; &lt;code&gt;DEC&lt;/code&gt; &lt;code&gt;HEX&lt;/code&gt; = &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; then one of top-row buttons &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt;, &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt;, &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt;, &lt;kbd class=&quot;__keyboard&quot;&gt;E&lt;/kbd&gt;  (select the required base)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;∑MOD&lt;/code&gt;  = &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;USR&lt;/kbd&gt; …. or  &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;2&lt;/kbd&gt;  (open a settings menu to set the choice of mode/word/signed)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;NOT&lt;/code&gt; / &lt;code&gt;OR&lt;/code&gt; / &lt;code&gt;AND&lt;/code&gt; / &lt;code&gt;XOR&lt;/code&gt; = &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; then one of &lt;code&gt;-&lt;/code&gt; &lt;code&gt;+&lt;/code&gt; &lt;code&gt;x&lt;/code&gt; &lt;code&gt;÷&lt;/code&gt; (logic functions)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;RL&lt;/code&gt; / &lt;code&gt;RR&lt;/code&gt; = &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; then one of &lt;kbd class=&quot;__keyboard&quot;&gt;SIN&lt;/kbd&gt; or &lt;kbd class=&quot;__keyboard&quot;&gt;COS&lt;/kbd&gt; (rotate Left or Right 1-bit)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;RLN&lt;/code&gt; / &lt;code&gt;RRN&lt;/code&gt; = &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; then one of &lt;kbd class=&quot;__keyboard&quot;&gt;SIN&lt;/kbd&gt; or &lt;kbd class=&quot;__keyboard&quot;&gt;COS&lt;/kbd&gt; (rotate Left or Right N-bits _ _)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;SLN&lt;/code&gt; = &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;TAN&lt;/kbd&gt; (shift Left N-bits _ _)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;SRN&lt;/code&gt; = &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;TAN&lt;/kbd&gt; (shift Right N-bits _ _)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Sb&lt;/code&gt; = &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;7&lt;/kbd&gt; (set a bit _ _)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Cb&lt;/code&gt; = &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;8&lt;/kbd&gt; (clear a bit _ _)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;B?&lt;/code&gt; = &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;9&lt;/kbd&gt; (is a bit _ _ set or not?)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;#BITS&lt;/code&gt; = &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; (i.e. &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; on top-row) (how many bits are high?)
&lt;/p&gt;

&lt;p&gt;
See &lt;a href=&quot;#keyboard_overlay&quot; title=&quot;public:calculator:guides:hp16c_emulator ↵&quot; class=&quot;wikilink1&quot;&gt;Keyboard Overlay&lt;/a&gt; Pic above for more hints on &lt;code&gt;16C&lt;/code&gt; key assignments
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Most Used Functions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;most_used_functions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;12715-14475&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;everything_starts_with_16c&quot;&gt;EVERYTHING STARTS WITH &amp;#039;&amp;#039;16C&amp;#039;&amp;#039;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
It is recommended to change the assigned key occasionally to prevent wearing it out…..
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;EVERYTHING STARTS WITH &amp;#039;&amp;#039;16C&amp;#039;&amp;#039;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;everything_starts_with_16c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;14476-14611&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;further_reading&quot;&gt;Further Reading&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Page created Fri May 27 21:31:20 2022 by John Pumford-Green
&lt;/p&gt;

&lt;p&gt;
Page last updated: 10/02/26 16:15 GMT
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:calculator&amp;amp;do=showtag&amp;amp;tag=calculator&quot; class=&quot;wikilink1&quot; title=&quot;tag:calculator&quot; rel=&quot;tag&quot;&gt;calculator&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dm41x&amp;amp;do=showtag&amp;amp;tag=dm41x&quot; class=&quot;wikilink1&quot; title=&quot;tag:dm41x&quot; rel=&quot;tag&quot;&gt;dm41x&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Reading&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_reading&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;14612-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;em&gt;&lt;code&gt;16C&lt;/code&gt; is still available on some keys&lt;/em&gt;…. e.g. 

&lt;code&gt;SHIFT&lt;/code&gt; &lt;code&gt;6&lt;/code&gt; = &lt;code&gt;16C&lt;/code&gt; 

so… &lt;code&gt;SHIFT&lt;/code&gt; &lt;code&gt;6&lt;/code&gt; &lt;code&gt;USR&lt;/code&gt; → &lt;code&gt;∑MOD&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;if you forget the &lt;kbd class=&quot;__keyboard&quot;&gt;16C&lt;/kbd&gt; and hit &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; directly you&amp;#039;ll probably end up with the &lt;code&gt;complex number&lt;/code&gt; module keyboard trigger &lt;code&gt;Z:&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 10 Feb 2026 16:15:00 +0000</pubDate>
        </item>
        <item>
            <title>VPS Notes</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:vps_tips_tricks</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:start&quot; data-wiki-id=&quot;public:computers:archive:start&quot;&gt;Archive&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;vps_notes&quot;&gt;VPS Notes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;div class=&quot;plugin_note notetip&quot;&gt;GM4SLV.ORG.UK VPS : New VPS created 6&lt;sup&gt;th&lt;/sup&gt; March 2025
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; To separate my personal wiki site from yaddnet.org server&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Wiki backed-up and moved from yaddnet.org to new gm4slv.org.uk VPS&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SSL Certificate replaced to enable HTTPS&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;VPS Notes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vps_notes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;16-304&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;new_vpsmarch_2025&quot;&gt;New VPS : March 2025&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; New VPS 1 obtained at Fasthosts&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;Type:Virtual Machine
Size:vps 1 2 60
Cpu:1 vCore
RAM:2 GB
Disk:60 GB NVMe SSD&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;Distributor ID: Ubuntu
Description:    Ubuntu 24.04.1 LTS
Release:        24.04
Codename:       noble&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Installed PHP and Apache2&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;gm4slv:~ $ php &lt;span class=&quot;re5&quot;&gt;--version&lt;/span&gt;
PHP 8.3.6 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cli&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;built: Dec  &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2024&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;NTS&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
Copyright &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; The PHP Group
Zend Engine v4.3.6, Copyright &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; Zend Technologies
    with Zend OPcache v8.3.6, Copyright &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, by Zend Technologies&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; configured SSL per previous method &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:ssl_install_vps&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:ssl_install_vps&quot; data-wiki-id=&quot;public:computers:archive:ssl_install_vps&quot;&gt;SSL Install on VPS&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; changed SSH port from default 22 to a &lt;em&gt;new&lt;/em&gt; port, changed VPS firewall to suit new SSH port&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ubunto OS brought up to date: &lt;code&gt;sudo apt-get update&lt;/code&gt; and &lt;code&gt;sudo apt-get upgrade&lt;/code&gt; and &lt;code&gt;sudo apt-get dist-upgrade&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;New VPS : March 2025&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;new_vpsmarch_2025&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;305-1148&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;dokuwiki_security&quot;&gt;Dokuwiki Security&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; previous installations used .htaccess to prevent web access to data/conf/lib/bin etc. directories&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; this time I decided not to use .htaccess but to follow the alternative instructions in &lt;a href=&quot;https://www.dokuwiki.org/security&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/security&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.dokuwiki.org/security&lt;/a&gt; to use &lt;strong&gt;LocationMatch&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dokuwiki Security&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki_security&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1149-1436&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;locationmatch_method&quot;&gt;LocationMatch method&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Apache is told which directories (data, conf, bin, inc, vendor) to make private. The downside is that this configuration might need altering if new directories are added during &lt;code&gt;dokuwiki&lt;/code&gt; upgrades. 
&lt;/p&gt;

&lt;p&gt;
add to &lt;code&gt;/etc/apache2/apache2.conf&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code apache&quot;&gt;&amp;lt;&lt;span class=&quot;kw3&quot;&gt;LocationMatch&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/(data|conf|bin|inc|vendor)/&amp;quot;&lt;/span&gt;&amp;gt;
    &lt;span class=&quot;kw1&quot;&gt;Order&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;allow&lt;/span&gt;,&lt;span class=&quot;kw1&quot;&gt;deny&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;Deny&lt;/span&gt; from &lt;span class=&quot;kw2&quot;&gt;all&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;Satisfy&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;All&lt;/span&gt;
&amp;lt;/&lt;span class=&quot;kw3&quot;&gt;LocationMatch&lt;/span&gt;&amp;gt;&lt;/pre&gt;

&lt;p&gt;
&lt;code&gt;sudo service apache2 restart&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;LocationMatch method&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;locationmatch_method&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1437-1883&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;htaccess_method&quot;&gt;.htaccess method&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
the secured directories in &lt;code&gt;dokuwiki&lt;/code&gt; have suitable .htaccess files already. Apache needs to betold to allow them to alter behaviour 
&lt;/p&gt;
&lt;pre class=&quot;code apache&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;AllowOverride&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;All&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
add to &lt;code&gt;/etc/apache2/apache2.conf&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code apache&quot;&gt;         &amp;lt;&lt;span class=&quot;kw3&quot;&gt;Directory&lt;/span&gt; /var/www/html&amp;gt;
                &lt;span class=&quot;kw1&quot;&gt;Options&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;Indexes&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;FollowSymLinks&lt;/span&gt; MultiViews
                &lt;span class=&quot;kw1&quot;&gt;AllowOverride&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;All&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;Order&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;allow&lt;/span&gt;,&lt;span class=&quot;kw1&quot;&gt;deny&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;allow&lt;/span&gt; from &lt;span class=&quot;kw2&quot;&gt;all&lt;/span&gt;
        &amp;lt;/&lt;span class=&quot;kw3&quot;&gt;Directory&lt;/span&gt;&amp;gt;&lt;/pre&gt;

&lt;p&gt;
&lt;code&gt;sudo service apache2 restart&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;.htaccess method&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;htaccess_method&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1884-2393&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;ssh_security&quot;&gt;SSH Security&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Configured &lt;code&gt;sshd&lt;/code&gt; to disallow password-logins and only accept public-key authentication&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; be careful to check the files in &lt;code&gt;/etc/ssh/sshd_conf.d&lt;/code&gt; for hidden config options!&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; uploaded public keys from &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Puttygen for &lt;a href=&quot;https://www.putty.org/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.putty.org/&quot; rel=&quot;ugc nofollow noopener&quot;&gt; putty&lt;/a&gt; on laptop&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://connectbot.org/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://connectbot.org/&quot; rel=&quot;ugc nofollow noopener&quot;&gt; ConnectBot &lt;/a&gt; app on phone&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; saved both in &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; now only logins with a valid public key will succeed. &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; In the event of a loss of the public keys it&amp;#039;s still possible to gain access via Fasthosts account dashboard&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; → then reconfigure sshd to accept password logins again until new keys can be uploaded.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSH Security&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssh_security&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2394-3077&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;renew_ssl_certificate&quot;&gt;06/04/25 : Renew SSL certificate&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Same procedure as before&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Download “Certificate” → &lt;code&gt;signed.crt&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Download “Intermediate Certificate” → &lt;code&gt;ca.pem&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Upload via WinSCP to VPS&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Copy old &lt;code&gt;/usr/local/ssl/signed.crt&lt;/code&gt; → &lt;code&gt;signed.crt.old&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Copy old &lt;code&gt;/usr/local/ssl/ca.pem&lt;/code&gt; → &lt;code&gt;ca.pem.old&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Copy new files into &lt;code&gt;/usr/local/ssl&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Restart Apache&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; There were 2 “Intermediate Certificate” for download from Fast Hosts… &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; I used the one named &lt;code&gt;7D5B5126B476BA11DB74160BBC530DA7.cer&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; This is the same as the one used when I renewed &lt;code&gt;YaddNet.org&lt;/code&gt; SSL &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:radio:2025:yaddnet_ssl_renewal&quot; class=&quot;wikilink2&quot; title=&quot;public:computers:radio:2025:yaddnet_ssl_renewal&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;public:computers:radio:2025:yaddnet_ssl_renewal&quot;&gt;yaddnet_ssl_renewal&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; It seems that the intermediate certificate is not unique to the domain being secured, it&amp;#039;s a certificate that verifies the identity of the authenticator of the domain&amp;#039;s SSL certificate.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;update_on_two_intermediate_certificates_05_07_25&quot;&gt;UPDATE ON TWO INTERMEDIATE CERTIFICATES 05/07/25&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
I&amp;#039;ve discovered that the 2 Intermediate Certificates are necessary to complete the &lt;em&gt;chain&lt;/em&gt; of authority.
&lt;/p&gt;

&lt;p&gt;
What should be done is to join them together into one &lt;em&gt;ca.pem&lt;/em&gt; file (and in the correct order…. )
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;wiki:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;g4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ssl&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# cat 397A66CC2756362E0DAA87CA6EABE3B1.cer 00D27FBBC1DE359E5216AD6149586099C4.cer &amp;gt; ca.pem&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;wiki:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;g4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ssl&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# cp ca.pem /usr/local/ssl&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;wiki:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;g4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ssl&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# systemctl restart apache2&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Check correct SSL operation at &lt;a href=&quot;https://www.ssllabs.com/ssltest/analyze.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.ssllabs.com/ssltest/analyze.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.ssllabs.com/ssltest/analyze.html&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;06\/04\/25 : Renew SSL certificate&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;renew_ssl_certificate&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3078-4532&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;old_information_below_is_for_historical_information&quot;&gt;Old information below is for historical information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;plugin_note notewarning&quot;&gt;GM4SLV.ORG.UK VPS : CANCELLED AND DELETED 9&lt;sup&gt;th&lt;/sup&gt; October 2024
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Wiki functionality easily provided by yaddnet.org VPS&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; wiki pages &amp;amp; data transferred to yaddnet.org &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Fasthosts deleted VPS following telephone confirmation&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; deletion/cancellation not possible via Control Panel&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; telephone call-back needed to confirm&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;&lt;pre class=&quot;code&quot;&gt;OS      : Debian 10 (Buster)
RAM     : 0.5GB
Network : 400MB 
SSD     : 10GB

IP Address : 213.171.209.127
Hostname   : gm4slv.org.uk
Open Ports : ssh, http, https

Domain Name  : gm4slv.org.uk
Renewal date : 3/4/2024&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Old information below is for historical information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;old_information_below_is_for_historical_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;4533-5197&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;access_via_fasthosts&quot;&gt;Access via FastHosts&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; browse to &lt;a href=&quot;https://admin.fasthosts.co.uk/Servers/VPS/1116040162&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://admin.fasthosts.co.uk/Servers/VPS/1116040162&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://admin.fasthosts.co.uk/Servers/VPS/1116040162&lt;/a&gt; and login with credentials&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Access via FastHosts&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;access_via_fasthosts&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;5198-5327&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;installing_ssl_for_https&quot;&gt;Installing SSL for HTTPS&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installing SSL for HTTPS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installing_ssl_for_https&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;5328-5364&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;create_certificates&quot;&gt;Create Certificates&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_dc78831d92782d10f5135857362be425_1&quot;&gt;First : obtain SSL Certificates &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_dc78831d92782d10f5135857362be425_1&quot;&gt;&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; generate CSR on the server itself: &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;pre class=&quot;code bash&quot;&gt;openssl req &lt;span class=&quot;re5&quot;&gt;-new&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-newkey&lt;/span&gt; rsa:&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-nodes&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-keyout&lt;/span&gt; gm4slv.org.uk.key &lt;span class=&quot;re5&quot;&gt;-out&lt;/span&gt; gm4slv.org.uk.csr &lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Use “gm4slv.org.uk” as CN (NOT &lt;a href=&quot;http://www.gm4slv.org.uk&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.gm4slv.org.uk&quot; rel=&quot;ugc nofollow noopener&quot;&gt;www.gm4slv.org.uk&lt;/a&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; on Fasthosts control panel - apply for SSL certificate and get to the page where the CSR is pasted into a box&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; paste the CSR file contents into the box and click “&amp;lt;whatever the button says&amp;gt;”&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; fill in the rest of the form with email/name/phone number etc.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; add file to root of www as verification, as directed at Fasthosts site….&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=server:screenshot_2022-05-04_21.02.56.png&quot; class=&quot;media wikilink2&quot; title=&quot;server:screenshot_2022-05-04_21.02.56.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=076b47&amp;amp;media=server:screenshot_2022-05-04_21.02.56.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; download &lt;strong&gt;both&lt;/strong&gt; certificate files from Fasthosts Control Panel&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Create Certificates&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;create_certificates&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;5365-6123&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;configure_apache&quot;&gt;Configure APACHE&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_dc78831d92782d10f5135857362be425_2&quot;&gt;Second : configure Apache to use HTTPS &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_dc78831d92782d10f5135857362be425_2&quot;&gt;&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; copy self generated gm4slv.org.uk.key from the “openssl” command to &lt;code&gt;/usr/local/ssl/&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; copy the *crt for the newly obtained &lt;em&gt;signed&lt;/em&gt; *.crt file renamed as signed.crt to &lt;code&gt;/usr/local/ssl&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; copy the “intermediate” file to &lt;code&gt;/usr/local/ssl/&lt;/code&gt; (renamed as ca.pem)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; edit apache config… looks like &lt;code&gt;/etc/apache2/sites-available/default-ssl.conf&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; SSLCertificateFile      /usr/local/ssl/signed.crt&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; SSLCertificateKeyFile /usr/local/ssl/gm4slv.org.uk.key&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; SSLCertificateChainFile /usr/local/ssl/ca.pem&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; make symlink  &lt;code&gt;sites-enabled/default-ssl.conf&lt;/code&gt; pointing to &lt;code&gt;sites-available/default-ssl.conf&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;a2enmod ssl&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; restart apache2&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; will it be listening on port 443? yes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; open firewall port 443 on Fasthost control panel&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Can I reach it with &lt;code&gt;&lt;a href=&quot;https://gm4slv.org.uk&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://gm4slv.org.uk&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://gm4slv.org.uk&lt;/a&gt;&lt;/code&gt;? yes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Can I still reach it with &lt;code&gt;&lt;a href=&quot;http://gm4slv.org.uk&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://gm4slv.org.uk&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://gm4slv.org.uk&lt;/a&gt;&lt;/code&gt;? yes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; force redirect of plain HTTP:&lt;em&gt; to HTTPS:&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; add to &lt;code&gt;000-default.conf&lt;/code&gt;:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code apache&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;ServerName&lt;/span&gt; gm4slv.org.uk
        &lt;span class=&quot;kw1&quot;&gt;ServerAlias&lt;/span&gt; www.gm4slv.org.uk
        &lt;span class=&quot;kw1&quot;&gt;Redirect&lt;/span&gt; permanent / https://gm4slv.org.uk/
&amp;nbsp;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; taken from &lt;a href=&quot;https://linuxize.com/post/redirect-http-to-https-in-apache/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://linuxize.com/post/redirect-http-to-https-in-apache/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://linuxize.com/post/redirect-http-to-https-in-apache/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; restart apache2&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; verify SSL access ok - yes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; verify non-SSL is redirected to SSL - yes&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configure APACHE&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configure_apache&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;6124-7507&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;confirm_proper_security&quot;&gt;Confirm proper security&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Browse to &lt;a href=&quot;https://gm4slv.org.uk&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://gm4slv.org.uk&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://gm4slv.org.uk&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
 &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=server:screenshot_2022-05-04_22.00.14.png&quot; class=&quot;media wikilink2&quot; title=&quot;server:screenshot_2022-05-04_22.00.14.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=668a8c&amp;amp;media=server:screenshot_2022-05-04_22.00.14.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Confirm proper security&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;confirm_proper_security&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;7508-7641&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;renew_ssl_certificate1&quot;&gt;20/04/23 Renew SSL Certificate&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; new Signed and CA (intermediate) certificates obtained and installed in /usr/local/ssl&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;20\/04\/23 Renew SSL Certificate&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;renew_ssl_certificate1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;7642-7777&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;hardware_upgrade_20_4_23&quot;&gt;Hardware Upgrade 20/4/23&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Original configuration VPS XS : 500MB RAM and 10GB SSD @ £1 per month (plus VAT)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Upgrade to VPS S : 1GB RAM and 20GB SSD @ £3 per month (plus VAT)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; VPS rebooted for upgrade&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; RAM seems to have increased to 1GB but reported &amp;#039;df -h&amp;#039; still shows 7.5GB total for / and 1.9GB for Swap. This is only 10GB. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Perhaps more time is needed for VM to catch up and expand the Virtual Hard Drive?&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Gotcha…. the Virtual Drive was increased to 20GB, but not the partition or the filesystem… the only way to get a full 20GB was to  “rebuild” the VPS….&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; took a backup of the dokuwiki files (rsync mirrored them to shack PC). Hit “Rebuild” and built a new VPS. Applied for replacement SSL keys (had to make a new CSR/KEY first)…&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Used rsync to send back the dokuwiki files (from the shack PC mirror)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; set up Apache2 to use the new SSL certificates…&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; VPS is now rebuilt and all wiki files restored &amp;amp; Apache2 uses HTTPS.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Hardware Upgrade 20\/4\/23&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hardware_upgrade_20_4_23&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;7778-8771&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;debian_upgrade_15_2_24&quot;&gt;Debian Upgrade 15/2/24&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Upgraded from Buster (10) → Bullseye (11)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Upgraded Dokuwiki (this needed PHP7.4 from Buster, which is why the Debian upgrade was necessary) to the newest version (Release 2024-02-06a “Kaos”)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Upgraded from Bullseye (11) → Bookwork (12) - might as well get to &lt;code&gt;STABLE&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Debian Upgrade 15\/2\/24&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;debian_upgrade_15_2_24&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;8772-9091&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;debian_upgrade_16_2_24&quot;&gt;Debian Upgrade 16/2/24&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Upgraded to Trixie (testing)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co4&quot;&gt;gm4slv@gm4slv:~$ &lt;/span&gt;lsb_release &lt;span class=&quot;re5&quot;&gt;-a&lt;/span&gt;
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Linux trixie&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sid
Release:        n&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;a
Codename:       trixie&lt;/pre&gt;
&lt;pre class=&quot;code bash&quot;&gt;deb http:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;deb.debian.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;debian trixie main contrib non-free non-free-firmware
deb-src http:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;deb.debian.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;debian trixie main contrib non-free non-free-firmware
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;#deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware&lt;/span&gt;
&amp;nbsp;
deb http:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;deb.debian.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;debian-security trixie-security main contrib non-free non-free-firmware
deb-src http:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;deb.debian.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;debian-security trixie-security main contrib non-free non-free-firmware&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Dokuwiki still working correctly with latest versions of Apache and PHP &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co4&quot;&gt;gm4slv@gm4slv:~$ &lt;/span&gt;php &lt;span class=&quot;re5&quot;&gt;--version&lt;/span&gt;
PHP 8.2.12 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cli&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;built: Jan  &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2024&lt;/span&gt; 06:&lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;NTS&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
Copyright &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; The PHP Group
Zend Engine v4.2.12, Copyright &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; Zend Technologies
    with Zend OPcache v8.2.12, Copyright &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, by Zend Technologies&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Debian Upgrade 16\/2\/24&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;debian_upgrade_16_2_24&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;9092-10265&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;gm4slvorguk_domain_renewed&quot;&gt;2024 gm4slv.org.uk domain renewed&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 03/04/24 Domain Name auto-renewed for 2 years until April 2026&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 04/04/24 SSL Certificate auto-renewed for 1 year until May 2025&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2024 gm4slv.org.uk domain renewed&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;gm4slvorguk_domain_renewed&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;10266-10448&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;install_renewed_ssl_certificate&quot;&gt;04/04/24 : Install Renewed SSL Certificate&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SSL Certificates &lt;strong&gt;Auto Renewed&lt;/strong&gt; by Fasthosts&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; download new certificates from Fasthosts control panel:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; New “Certificate” downloaded and renamed “signed.crt”&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; New “Intermediate Certificate” downloaded and renamed “ca.pem”&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; copied both → VPS $HOME dir via SCP&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; On VPS →&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; copied current &lt;strong&gt;/usr/local/ssl/ca.pem&lt;/strong&gt; → &lt;strong&gt;ca_old.pem&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; copied current &lt;strong&gt;/usr/local/ssl/signed.crt&lt;/strong&gt; → &lt;strong&gt;signed_old.crt&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; copied new ca.pem from $HOME to &lt;strong&gt;/usr/local/ssl/ca.pem&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; copied new signed.crt from $HOME to &lt;strong&gt;/usr/local/ssl/signed.crt&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; restarted apache &lt;code&gt;sudo service apache2 restart&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; check new valid certificate now in use in web browser&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acomputers%3Aarchive%3Avps_tips_tricks&amp;amp;media=public:computers:screenshot_2024-04-04_07.24.16.png&quot; class=&quot;media&quot; title=&quot;public:computers:screenshot_2024-04-04_07.24.16.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=ad1d3a&amp;amp;media=public:computers:screenshot_2024-04-04_07.24.16.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Validity Issued on &amp;amp; Expires on dates now show new certificate is in use&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Page Updated : 04/06/26 08:20 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:vps&amp;amp;do=showtag&amp;amp;tag=vps&quot; class=&quot;wikilink1&quot; title=&quot;tag:vps&quot; rel=&quot;tag&quot;&gt;vps&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:linux&amp;amp;do=showtag&amp;amp;tag=linux&quot; class=&quot;wikilink1&quot; title=&quot;tag:linux&quot; rel=&quot;tag&quot;&gt;linux&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:ssl&amp;amp;do=showtag&amp;amp;tag=ssl&quot; class=&quot;wikilink1&quot; title=&quot;tag:ssl&quot; rel=&quot;tag&quot;&gt;ssl&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;04\/04\/24 : Install Renewed SSL Certificate&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;install_renewed_ssl_certificate&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;10449-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 07:20:09 +0000</pubDate>
        </item>
        <item>
            <title>Over the air ID</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:allstar_id</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:start&quot; data-wiki-id=&quot;public:radio:topics:allstar:start&quot;&gt;AllStar Linking&lt;/a&gt;
&lt;/p&gt;

&lt;h2 class=&quot;sectionedit1&quot; id=&quot;over_the_air_id&quot;&gt;Over the air ID&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
What&amp;#039;s the requirement in the UK now, for identification of Gateways which are operating under your own licence, rather than an Notice of Variation that used to be needed in the olden days? 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Over the air ID&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;over_the_air_id&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-238&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;licence_quote&quot;&gt;Licence Quote&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code ini&quot;&gt;Identification
  &lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt;. The licensee that shall ensure that:
    a&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; the station is clearly identifiable at all times;
    b&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; the call sign is transmitted as &lt;span class=&quot;st0&quot;&gt;&amp;quot;frequently as is practicable during transmissions&amp;quot;&lt;/span&gt;; and
    c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; the Call sign is given in voice or other appropriate format consistent with the mode of operation.&lt;/pre&gt;

&lt;p&gt;
and nothing at all in the “Gateways” section that would require anything more than &lt;em&gt;&lt;strong&gt;as frequently as is practicable&lt;/strong&gt;&lt;/em&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Licence Quote&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;licence_quote&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;239-726&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;gateway_operation&quot;&gt;Gateway Operation&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;Gateway operation
  14. The Radio Equipment may be used as a Gateway and may be operated (but not
      controlled) by other radio amateurs without supervision, providing that the Licensee:
      a) ensures that the Gateway transmits at powers no greater than 5 Watts ERP;
      b) is able to demonstrate that reasonable steps have been taken to minimise the risk 
         of the Gateway causing undue interference to other authorised uses of radio and
         provide evidence of this if requested by Ofcom;
      c) is able to close down the Gateway within two hours of being required to do so by
         Ofcom.
      d) takes all reasonable steps to ensure that the Gateway is only used by an Amateur;
      e) remains responsible for the operation of the Gateway and compliance with the
         terms, conditions and limitations of the Licence; and
      f) Anyone wishing to establish a link to a Repeater must have the written permission
         of the Repeater keeper to do so.&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;voice_ids&quot;&gt;Voice IDs&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; I&amp;#039;ve added a couple of Crontab commands&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; The first one plays the ID every hour (that seems to meet “as frequently as is practicable”)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; The second plays the time, after the ID on the hour&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;00 * * * * sudo /usr/sbin/asterisk -rx &lt;span class=&quot;st0&quot;&gt;&amp;quot;rpt localplay 481480 /var/lib/asterisk/sounds/custom/gm4slv&amp;quot;&lt;/span&gt; &amp;gt; /dev/null &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&amp;gt;&amp;amp;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
00 * * * * sleep &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; &amp;amp;&amp;amp; sudo /usr/sbin/asterisk -rx &lt;span class=&quot;st0&quot;&gt;&amp;quot;rpt fun 481480 *81&amp;quot;&lt;/span&gt; &amp;gt;/dev/null &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&amp;gt;&amp;amp;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The sound file “gm4slv.ulaw” came from the &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:allstar_expands#node_callsigns_instead_of_numbers&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:allstar_expands&quot; data-wiki-id=&quot;public:radio:topics:allstar:allstar_expands&quot;&gt;Node Callsigns instead of Numbers&lt;/a&gt; script, renamed from &lt;code&gt;481410.ulaw&lt;/code&gt; to &lt;code&gt;gm4slv.ulaw&lt;/code&gt; and stored in &lt;code&gt;/var/lib/astersisk/sounds/custom&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The second crontab entry plays &lt;code&gt;Good [morning|afternoon|evening] the time is…..&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; They play sequentially at the top of the hour&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
This works, but it turns out to be an annoyance - especially when leaving a VHF H/T monitoring the gateway within earshot of people who don&amp;#039;t appreciate such interesting radio signals &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/wink.svg&quot; class=&quot;icon smiley&quot; alt=&quot;;-)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
I disabled it after a couple of hours…..
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;morse_ids&quot;&gt;Morse IDs&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The standard morse ID still goes out after a transmission - if no ID has been sent for at least 15 minutes (because the Gateway hasn&amp;#039;t been used for more than 15 minutes).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I&amp;#039;ve changed the morse tone frequency and amplitude&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;[morse]
speed = 20                              ; Approximate speed in WPM
frequency = 600                         ; Morse Telemetry Frequency
amplitude = 2048                        ; Morse Telemetry Amplitude
idfrequency = 600                       ; Morse ID Frequency (was 1065)
idamplitude = 512                       ; Morse ID Amplitude (was 1024)&lt;/pre&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 08/06/25 17:38 BST&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Gateway Operation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;gateway_operation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;727-3461&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:allstar&amp;amp;do=showtag&amp;amp;tag=allstar&quot; class=&quot;wikilink1&quot; title=&quot;tag:allstar&quot; rel=&quot;tag&quot;&gt;allstar&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3462-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 18:42:09 +0000</pubDate>
        </item>
        <item>
            <title>Desk15 - firmware for the DM15</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:3rd:desk15</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:3rd:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:3rd:start&quot; data-wiki-id=&quot;public:calculator:3rd:start&quot;&gt;3rd Party Firmware&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;desk15_-_firmware_for_the_dm15&quot;&gt;Desk15 - firmware for the DM15&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; From HP Forum &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-23488.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-23488.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.hpmuseum.org/forum/thread-23488.html&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; You Tube &lt;a href=&quot;https://youtu.be/ktrKZzN3wJw&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://youtu.be/ktrKZzN3wJw&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://youtu.be/ktrKZzN3wJw&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Github for firmware and brief README guide &lt;a href=&quot;https://github.com/zooxo/desk15&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/zooxo/desk15&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/zooxo/desk15&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Desk15 - firmware for the DM15&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;desk15_-_firmware_for_the_dm15&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;12-268&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;firmware_files&quot;&gt;Firmware Files&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit3&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Date&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Firmware&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Comment&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;17/02/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:desk15-001.hex&quot; class=&quot;media mediafile mf_hex&quot; title=&quot;public:calculator:info:desk15-001.hex (145.5 KB)&quot;&gt;desk15-001.hex&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; Version 01 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;296-390&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Firmware Files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;firmware_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;269-392&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;readme&quot;&gt;README&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_ee57745b1cc1fa2d102d6fb4de645b3c_1&quot;&gt;The developer&amp;#039;s README (click to read) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_ee57745b1cc1fa2d102d6fb4de645b3c_1&quot;&gt;&lt;pre class=&quot;code&quot;&gt;
This software is protected by the BSD 3 Clause Licence
and copyright (c) 2025 by deetee. All rights reserved.


DESK15 - Calculator suite (including a Spreadsheet) for the DM-15

____________________

PREAMBLE
____________________

The HP-15c was probably the most simple but versatile scientific calculator.
Similar to DESK42 (for the DM42) DESK15 offers an alternative firmware for the
DM15/DM15L replica of Swissmicros with a suite of some applications like a
complex number calculator, a spreadsheet, a symbolic, a tabletop calculator
and even a sliderule and a simple text editor.

Have fun!
deetee


____________________

INSTALLATION
____________________

To install a new firmware to a DM-15 (Voyager) calculator have a look at
chapter Firmware Update of the Swissmicros Voyager Series User Manual at:
  https://technical.swissmicros.com/voyager/firmware/

On linux computers for example install the package lpc21isp and flash the
desired firmware (hex file) to the calculator with:
  sudo lpc21isp &amp;lt;firmware.hex&amp;gt; /dev/ttyUSB0 115200 12000

After starting this command press the reset button on the backside of the
calculator with a paperclip. After the flashing procedure ends you might need to
reset the calculator again. Every Swissmicros-Calculator has a reset button
on the PCB (even if there is no hole to reach it).


____________________

DESK
____________________

When you start DESK15 the first time you see the application launcher DESK. You
can launch the desired application with the keys 7, 8, 9 and 4, 5, 6:

  7 PLEX ... Complex Number Calculator
  8 FLEX ... Symbolic Calculator
  9 RAX  ... Spreadsheet
  4 TTOP ... Table Top Calculator
  5 RULE ... Slide Rule Simulation
  6 TEX  ... Text Editor

On the right side of the screen you see some extra information like the battery
level, date (day) and time (24 hour format).

Please note that the battery level is a momentarily value that varies due to the
momentarily activity of the calculator. But if you see the empty battery symbol
quite often you might consider changing the battery.

____________________

PLEX
____________________

PLEX is a scientific calculator generically designed to work with complex
numbers. Many routines of PLEX are used by other applications (even if they work
with real numbers only). Beside advanced mathematic functions it even offers an
extensive function analysis (function value, slope, solve, integrate and plot).

PLEX supports the following functions:
  Basic
    0-9.      Number input
    ENTER     Enter number (stack lift) or duplicate TOS
    + - * /   Basic operation
    CHS       Negate TOS (ends number input)
    EEX       Push Y*10^X to the stack
    BSP gBSP  Clear number entry or TOS, clear stack and statistics data
    LASTx     Push last ENTERed number to stack
    SWAP      Swap X and Y
    ROT up/dn Rotate 3 stack elements
    STO RCL   Store TOS or push stored number to stack (store 0 to delete)
  Complex number operations
    fTAN      Convert X and Y (real values) to complex number (and vice versa)
    f1 g1     Display number in rectangular or polar view
    f-        Swap real and imaginary part of complex number
    fCHS      Conjugate complex number
  Advanced mathematics
    SQRT, SQR, EXP, LN, 10^X, LOG, Y^X, %, 1/X, delta%,
    FRAC, INT, ABS, PI, Pxy, Cxy, lnGAMMA (f0),
    SIN, COS, TAN, aSIN, aCOS, aTAN, SINH, COSH, TANH, aSINH, aCOSH, aTANH
    fENTER    NAND ~(X &amp;amp; Y) ... useful in HEX mode
    g-        Calculate 2 roots of quadratic equation xx+px+q=0 (enter p q)
    fCOS      PV (present value) of interest rate (%) and duration (periods)
  Statistics
    SUM+ SUM- Add/remove number to/from statistics registers
    g0 g.     Mean value and standard deviation
    fSUM      Parameters a and b of linear regression (y=a*x+b)
    gBSP      Clears statistics registers (and stack)
  Function analysis
    gR/S      Start key recorder to input f(x) (gR/S R/S to delete)
    R/S       Stop key recorder, calculate y=f(x)
    fg/ fg*   Solve, slope, integrate, plot
    GSB 8/9   SAVE/LOAD a recorded function to/from one of 6 slots
  Conversions
    fg7 8 9   cm&amp;lt;&amp;gt;in, km&amp;lt;&amp;gt;mi, km&amp;lt;&amp;gt;nmi
    fg4 5 6   kg&amp;lt;&amp;gt;lbs, °C&amp;lt;&amp;gt;°F, l&amp;lt;&amp;gt;gal
    fg1 2 3   rect/polar view, h&amp;lt;&amp;gt;h.ms, deg&amp;lt;&amp;gt;rad
  Menu
    GSB       QUIT, SAVE/LOAD, Physical Constant, Size of font, HEX mode
    fGSB      BATTERY, set LCD brightness/voltage, set OFFTIME
    gGSB      Get/set DATE, get/set TIME

    Please note:
    When in HEX mode enter numbers &amp;gt;9 with a dot (ie .1=a, .6=f).
    To set the OFFTIME (default is 60s) enter the desired value (5-300) in
    seconds to the stack and press Toff (fGSB6).
    Be careful when setting the lcd brightness (fGSB4, 0-64) or lcd voltage
    (fGSB5, 0-5-7). The default values are 0 and 5.
    Get/set date and time from/to the real time clock (RTC) with the gGSB menu.
    The format for the date on the stack is YY.MMDDw (where w is the number of
    the weekday (0=Monday). The format for the time is HH.MM.

  Physical constants keys (GSB4):
    ENTER     Select (push) constant
    2 8 3 9   Down, Up, PgDown, PgUp
    GSB       Quit (without selecting)

  Physical constants;
    0  c    299792458         Speed of light
    1  g    9.80665           Acceleration of gravity
    2  G    6.67430e-11       Newton constant of gravity
    3  Vm   0.02271095464     Molar volume of ideal gas
    4  NA   6.02214076e23     Avogadro constant
    5  Rinf 10973731.568160   Rydberg constant
    6  h    6.62607015e-34    Planck constant
    7  Phi0 2.067833848e-15   Magnetic flux quantum
    8  a0   5.29177210903e-11 Bohr radius
    9  k    1.380649e-23      Boltzmann constant
    10 R    8.314462618       Molar gas constant
    11 F    96485.33212       Faraday constant
    12 t    273.15            Celsius temperature
    13 atm  101325            Standard atmosphere
    14 e    1.602176634e-19   Elementary charge
    15 eps0 8.8541878128e-12  Vacuum electric permittivity
    16 mu0  1.25663706212e-6  Vacuum magnetic permeability
    17 Z0   376.730313668     Impedance of vacuum
    18 mU   1.6605390666e-27  Atomic mass constant
    19 re   2.8179403262e-15  Electron radius
    20 me   9.1093837015e-31  Electron mass
    21 mp   1.67262192369e-27 Proton mass
    22 mn   1.67492749804e-27 Neutron mass
    23 mmu  1.883531627e-28   Muon mass
    24 muB  9.2740100783e-24  Bohr magneton
    25 muN  5.0507837461e-27  Nuclear magneton
    26 mue  -9.2847647043e-24 Electron magnetic moment
    27 mup  1.41060679736e-26 Proton magnetic moment
    28 mun  -9.6623651e-27    Neutron magnetic moment
    29 mumu -4.4904483e-26    Muon magnetic moment
    30 alph 7.2973525693e-3   Fine structure constant
    31 sigm 5.670374419e-8    Stefan-Boltzmann constant
    32 G0   7.748091729       Conductance quantum
    33 gamp 2.6752218744e8    Proton gyromagnetic ratio
    34 C1   3.741771852e-16   First radiation constant
    35 C2   1.438776877e-2    Second radiation constant


____________________

RAX
____________________

RAX is the spreadsheet application of DESK15. When starting RAX you are in the
navigation mode, where the number keys work as cursor pad (see below). The
navigation mode is also active when you refer in a formula to a specific cell.

Keys in navigation mode:
  2 4 6 8  Navigation (Down/Left/Right/Up)
  ENTER 5  Edit selected cell, edit new formula cell
  R/S      Define and edit a new text cell
  BSP      Delete cell
  STO RCL  Save/load spreadsheet to/from one of 6 slots
           Please note that a text in the last cell (D8) is used as slot name.
  GSB      Menu: Quit RAX, New sheet, Copy&amp;amp;Glue/Paste, Hex mode (see PLEX)

Keys in edit mode (ENTER to select and quit):
  SST GTO        Cursor left/right
  SUM+           Insert a stack enter command to separate numbers
  BSP            Backspace - delete character
  RCL            Reference (Select reference cell and enter)
  ENTER GSB R/S  Quit edit mode to navigation mode

Keys in text edit mode (R/S):
  2 4 6 8    Navigation (Down/Left/Right/Up)
  7 1 5      Pos1, End, Center
  SST GTO    Cursor left/right
  BSP        Delete character (left of cursor)
  R/S ENTER  Exit text editing mode
  Any other key inserts the selected character.


____________________

FLEX
____________________

The symbolic calculator FLEX has the look and feel of PLEX, but actually
calculates in the first cell of a RAX spreadsheet. Hence you can see and edit
(with R/S) the formula that yields to the result.

Quit FLEX (and go back to the DESK menu) with GSB.

____________________

TTOP
____________________

TTOP is a tabletop calculator that enables (simple) calculations with big
numbers (even in HEX format) with up to 17 digits. If desired two digits are
used for decimals (ie for cent amounts). PLease note that entering decimals
(after pressing &amp;quot;.&amp;quot;) always &amp;quot;shifts the pressed number key in&amp;quot;.

TTOP supports the following functions:
  + - * / Basic operation
  CHS     Negate TOS (ends number input)
  EEX     Push Y*10^X to the stack (Y*16^X in HEX mode)
  ENTER   Enter number (stack lift) or duplicate TOS
  SWAP    Swap X and Y
  ROT     Rotate 3 stack elements
  BSP     Clear last number
  SQRT    Calculate square root
  SUM+    NAND ~(X &amp;amp; Y) ... useful in HEX mode
  STO RCL Store TOS or push stored number to stack (store 0 to delete)
  GSB     Menu: Quit TTOP, 0/2 decimals, HEX mode


____________________

RULE
____________________

RULE is a simulation of a historic slide rule for reasons of education and
reminiscence.

RULE supports the following functions:
  SQRT /   Slide one pixel left/right
  EXP 9    Slide 5 pixel left/right
  POW10 8  Slide 10 pixel left/right
  POW 7    Slide 20 pixel left/right
  GSB      Quit RULE


____________________

TEX
____________________

TEX is a (very) simple line oriented text editor. But as entering a text with
cursor keys is quite a pain TEX is sufficient to manage a ToDo or shopping list
or some important formulae. Please note that TEX can manage a maximum of 255
characters (with not more than 18 characters per line).

TTOP supports the following functions:
  4 8 3 9  Navigation (Down/Up/PdDown/PgUp)
  ENTER    Edit (top) line
  /        Edit line but split line at cursor position after editing
  *        Join two lines
  - BSP    Delete (top) line
  +        Insert line before top line
  STO RCL  Save/load TEX document to/from one of 6 slots
  GSB      Quit TEX

  To enter a new line after the last line edit with split option (/) and
  leave editor immediately (ENTER).
  To edit a text TEX uses the text editing routines of RAX (see above).

&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;README&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;readme&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;393-11063&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Page created  : 17/02/26 17:44 GMT
&lt;/p&gt;

&lt;p&gt;
Page updated : 19/04/26 21:14 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:calculator&amp;amp;do=showtag&amp;amp;tag=calculator&quot; class=&quot;wikilink1&quot; title=&quot;tag:calculator&quot; rel=&quot;tag&quot;&gt;calculator&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dm15l&amp;amp;do=showtag&amp;amp;tag=dm15l&quot; class=&quot;wikilink1&quot; title=&quot;tag:dm15l&quot; rel=&quot;tag&quot;&gt;dm15l&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:desk15&amp;amp;do=showtag&amp;amp;tag=desk15&quot; class=&quot;wikilink1&quot; title=&quot;tag:desk15&quot; rel=&quot;tag&quot;&gt;desk15&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;11064-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 19 Apr 2026 20:14:55 +0000</pubDate>
        </item>
        <item>
            <title>DM41X Matrix</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:dm41x_matrix</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:start&quot; data-wiki-id=&quot;public:calculator:guides:start&quot;&gt;Hints &amp;amp; Tips&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dm41x_matrix&quot;&gt;DM41X Matrix&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Matrix functions in the &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:advantage_pac&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:advantage_pac&quot; data-wiki-id=&quot;public:calculator:guides:advantage_pac&quot;&gt;Advantage Pac&lt;/a&gt; &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DM41X Matrix&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dm41x_matrix&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-107&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;background&quot;&gt;Background&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The &lt;strong&gt;matrix&lt;/strong&gt; functionality isn&amp;#039;t a standalone program, with a menu, like &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:dm41x_curve_fitting&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:dm41x_curve_fitting&quot; data-wiki-id=&quot;public:calculator:guides:dm41x_curve_fitting&quot;&gt;CFIT&lt;/a&gt; and &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:polynomial&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:polynomial&quot; data-wiki-id=&quot;public:calculator:guides:polynomial&quot;&gt;PLY&lt;/a&gt;. 
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s a collection of individual programs that can be used for many matrix tasks. Each one has to be called individually as needed.
&lt;/p&gt;

&lt;p&gt;
There are many commands, the most used are those for
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Dimensioning a new matrix &lt;code&gt;MATDIM&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Editing a matrix to enter values - there are 2 versions&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Real Matrix &lt;code&gt;MEDIT&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Complex Matrix &lt;code&gt;CMEDIT&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Inverting a matrix &lt;code&gt;MINV&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Transposing a matrix &lt;code&gt;TRNPS&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Finding the determinant &lt;code&gt;MDET&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Multiplying two matrices together &lt;code&gt;M*M&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Solving a system of equations defined by 2 matrices &lt;code&gt;MSYS&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Background&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;background&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;108-824&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;shortcuts_to_matrix_commands&quot;&gt;Shortcuts to Matrix Commands&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To make things easier it&amp;#039;s best to use the DM41X &lt;code&gt;CST&lt;/code&gt; custom command shortcut mechanism. 
&lt;/p&gt;

&lt;p&gt;
Start with a blank &lt;code&gt;CST&lt;/code&gt; and add the commands you need. Then save this &lt;code&gt;CST&lt;/code&gt; so that it&amp;#039;s easy to switch to other &lt;code&gt;CST&lt;/code&gt; setups, and then return to the &lt;code&gt;Matrix&lt;/code&gt; setup later.
&lt;/p&gt;

&lt;p&gt;
I have the following
&lt;/p&gt;
&lt;div class=&quot;table sectionedit4&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;A&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;MATDIM&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;I&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;B&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;MEDIT&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;J&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;C&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;CMEDIT&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;K&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;D&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;MINV&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;L&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;E&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;M*M&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;M&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;&lt;code&gt;ZK?YN&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;F&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;MDET&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;N&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;&lt;code&gt;EMDIR&lt;/code&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;G&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;TRNPS&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;O&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;&lt;code&gt;EMDIRX&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;H&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;MSYS&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;P&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;&lt;code&gt;PURFL&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1165-1339&amp;quot;} --&gt;
&lt;p&gt;
Matrices are saved in Extended Memory, and I put commands in CST to find and remove them once I&amp;#039;m finished: &lt;code&gt;EMDIR&lt;/code&gt;, &lt;code&gt;EMDIRX&lt;/code&gt; and &lt;code&gt;PURFL&lt;/code&gt; and I have &lt;code&gt;ZK?YN&lt;/code&gt; to quickly access &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:41z_module&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:41z_module&quot; data-wiki-id=&quot;public:calculator:guides:41z_module&quot;&gt;DM41X 41z Module&lt;/a&gt; complex number functions (assuming the module is &lt;em&gt;plugged-in&lt;/em&gt;).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Shortcuts to Matrix Commands&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;shortcuts_to_matrix_commands&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;825-1606&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;basic_workflow&quot;&gt;Basic Workflow&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
All matrix addressing is done via the &lt;code&gt;ALPHA&lt;/code&gt; register
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Basic Workflow&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;basic_workflow&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1607-1692&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;dimension_a_new_matrix&quot;&gt;Dimension a new Matrix&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put the &lt;code&gt;name&lt;/code&gt; of the matrix in the &lt;code&gt;ALPHA&lt;/code&gt; register.&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Use single letters &lt;code&gt;A&lt;/code&gt;, &lt;code&gt;B&lt;/code&gt;, &lt;code&gt;C&lt;/code&gt; etc. - these will create the matrix in Extended Memory&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put the dimensions in the &lt;code&gt;X&lt;/code&gt; register&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; this is in the form &lt;code&gt;r.ccc&lt;/code&gt; with &lt;code&gt;3&lt;/code&gt; decimal places for the column&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; for a &lt;code&gt;3&amp;times;3&lt;/code&gt; : &lt;code&gt;3.003&lt;/code&gt;  (3 rows, 3 columns)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; for a &lt;code&gt;4&amp;times;2&lt;/code&gt; : &lt;code&gt;4.002&lt;/code&gt; (4 rows, 2 columns)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3.003&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; puts the dimensions in the &lt;code&gt;X&lt;/code&gt; register ready for &lt;code&gt;MATDIM&lt;/code&gt; to assign to the matrix named in &lt;code&gt;ALPHA&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Execute the &lt;code&gt;MATDIM&lt;/code&gt; command from the &lt;code&gt;CST&lt;/code&gt; menu &lt;code&gt;A&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; This creates matrix &lt;code&gt;A&lt;/code&gt; in extended memory&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dimension a new Matrix&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dimension_a_new_matrix&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1693-2451&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;populate_a_new_matrix&quot;&gt;Populate a new Matrix&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Populate the matrix with values using &lt;code&gt;MEDIT&lt;/code&gt; from the &lt;code&gt;CST&lt;/code&gt; menu &lt;code&gt;B&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
For a &lt;code&gt;3&amp;times;3&lt;/code&gt; matrix
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;
| 1  1 -1 |
| 4  6  6 |
| 1  8  9 |
&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:2=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:3=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;CHS&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;4&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:2=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;6&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:3=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;6&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3:2=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;8&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3:3=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;9&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Populate a new Matrix&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;populate_a_new_matrix&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2452-3084&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;determinant&quot;&gt;Determinant&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
With &lt;code&gt;A&lt;/code&gt; still in the &lt;code&gt;ALPHA&lt;/code&gt; register use the &lt;code&gt;MDET&lt;/code&gt; command from the &lt;code&gt;CST&lt;/code&gt; menu &lt;code&gt;F&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;F&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;-50.000&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Matrix &lt;code&gt;A&lt;/code&gt; will now be in &lt;code&gt;LU Decomposition&lt;/code&gt; form.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; It can be used in this form for some other functions, but it&amp;#039;s possible to get it back to &lt;code&gt;normal&lt;/code&gt; form by &lt;strong&gt;Inverting&lt;/strong&gt; twice using &lt;code&gt;MINV&lt;/code&gt; from &lt;code&gt;CST&lt;/code&gt; menu &lt;code&gt;D&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; You can check the element values by using &lt;code&gt;MEDIT&lt;/code&gt; again, but just cycling through each with &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt; and not changing any values&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; it&amp;#039;s possible to set flag &lt;code&gt;08&lt;/code&gt; which prevents any changes to values &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Determinant&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;determinant&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;3085-3786&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;multiplication&quot;&gt;Multiplication&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Using &lt;code&gt;M*M&lt;/code&gt; &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
For matrix multiplication you need &lt;code&gt;3&lt;/code&gt; matrix definitions:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Matrix &lt;code&gt;A&lt;/code&gt; and Matrix &lt;code&gt;B&lt;/code&gt; are the two matrices to be multiplied&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;  Matrix &lt;code&gt;A&lt;/code&gt; and Matrix &lt;code&gt;B&lt;/code&gt; are dimensioned with &lt;code&gt;MATDIM&lt;/code&gt; and populated with &lt;code&gt;MEDIT&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Matrix &lt;code&gt;C&lt;/code&gt; is the matrix to hold the result&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Matrix &lt;code&gt;C&lt;/code&gt; is simply dimensioned with &lt;code&gt;MATDIM&lt;/code&gt; and will be filled automatically by the function &lt;code&gt;M*M&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
To multiply two matrices together they must have the correct dimensions
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Columns in &lt;code&gt;A&lt;/code&gt; must equal Rows in &lt;code&gt;B&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Results matrix &lt;code&gt;C&lt;/code&gt; will have the dimensions &lt;code&gt;Rows of A x Columns of B&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Multiplication&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;multiplication&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;3787-4431&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;create_matrix_a&quot;&gt;Create Matrix A&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Follow the same procedure as above. 
&lt;/p&gt;

&lt;p&gt;
Make sure &lt;code&gt;ALPHA&lt;/code&gt; has only the letter &lt;code&gt;A&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
A different numerical example
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;A&lt;/code&gt; will be a &lt;code&gt;3&amp;times;2&lt;/code&gt; matrix
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; use &lt;code&gt;MATDIM&lt;/code&gt; via &lt;code&gt;CST&lt;/code&gt; menu&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3.002&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;code&gt;
| 2 3 |
| 4 5 |
| 7 6 |&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Use &lt;code&gt;MEDIT&lt;/code&gt; via &lt;code&gt;CST&lt;/code&gt; menu&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;2&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:2=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;3&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;4&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:2=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;5&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;7&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3:2=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;6&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Create Matrix A&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;create_matrix_a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;4432-5072&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;create_matrix_b&quot;&gt;Create Matrix B&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;code&gt;B&lt;/code&gt; will be a &lt;code&gt;2&amp;times;2&lt;/code&gt; matrix
&lt;/p&gt;

&lt;p&gt;
Make sure &lt;code&gt;ALPHA&lt;/code&gt; only has &lt;code&gt;B&lt;/code&gt; and then dimension &lt;code&gt;B&lt;/code&gt; with &lt;code&gt;MATDIM&lt;/code&gt; from &lt;code&gt;CST&lt;/code&gt; menu &lt;code&gt;A&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2.002&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt;  &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;code&gt;
| 2 3 |
| 4 5 |&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
* Use &lt;code&gt;MEDIT&lt;/code&gt; via &lt;code&gt;CST&lt;/code&gt; menu
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;2&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:2=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;3&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;4&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:2=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;5&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
We now have defined the matrices to be multiplied together.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Create Matrix B&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;create_matrix_b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;5073-5673&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;create_matrix_c&quot;&gt;Create Matrix C&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
We need a &lt;code&gt;results&lt;/code&gt; matrix &lt;code&gt;C&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
The dimensions of &lt;code&gt;C&lt;/code&gt; will be &lt;code&gt;rows of A&lt;/code&gt; and &lt;code&gt;columns of B&lt;/code&gt; which is &lt;code&gt;3&lt;/code&gt; rows and &lt;code&gt;2&lt;/code&gt; columns : &lt;code&gt;3.002&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Make sure &lt;code&gt;ALPHA&lt;/code&gt; only has &lt;code&gt;C&lt;/code&gt; and dimension &lt;code&gt;C&lt;/code&gt; with &lt;code&gt;MATDIM&lt;/code&gt; from &lt;code&gt;CST&lt;/code&gt; menu &lt;code&gt;A&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3.002&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt;  &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
That&amp;#039;s enough to create the &lt;code&gt;results&lt;/code&gt; matrix
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Create Matrix C&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;create_matrix_c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;5674-6098&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;multiply_the_matrices&quot;&gt;Multiply the matrices&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put the matrix names in &lt;code&gt;ALPHA&lt;/code&gt; in the form &lt;code&gt;Matrix 1,Matrix2,Results Matrix&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;ALPHA&lt;/code&gt; = &lt;code&gt;A,B,C&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;,&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;,&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Execute &lt;code&gt;M*M&lt;/code&gt; from the &lt;code&gt;CST&lt;/code&gt; menu&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;E&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;C&lt;/code&gt; will now hold the answer&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Multiply the matrices&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;multiply_the_matrices&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;6099-6471&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;view_the_result&quot;&gt;View the result&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put &lt;code&gt;C&lt;/code&gt; in the &lt;code&gt;ALPHA&lt;/code&gt; register &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Use &lt;code&gt;MEDIT&lt;/code&gt; from the &lt;code&gt;CST&lt;/code&gt; menu and cycle through the elements (it&amp;#039;s a &lt;code&gt;3&amp;times;2&lt;/code&gt; matrix)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:1= 16.000?&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:2= 21.000?&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:1= 28.000?&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:2= 37.000?&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3:1= 38.000?&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3:2= 51.000?&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The &lt;code&gt;result&lt;/code&gt; in &lt;code&gt;C&lt;/code&gt; is 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;
| 16 21 |
| 28 37 |
| 38 51 |&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;View the result&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;view_the_result&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;6472-7029&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;system_of_equations&quot;&gt;System of Equations&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt; A simple example first &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;System of Equations&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;system_of_equations&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;7030-7093&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;set_of_equations&quot;&gt;Set of Equations&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt; 3 unknowns &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;
3x + 4y + 6z = 39.7 
2x - 4y - 3z = -7.0 
      y + 8z = 63.4 &lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Set of Equations&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;set_of_equations&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;7094-7208&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;matrix_representation&quot;&gt;Matrix representation&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;matrix_a&quot;&gt;Matrix A&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;
| 3  4  6 |
| 2 -4 -3 |
| 0  1  8 |
&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Dimensions &lt;code&gt;3.003&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;matrix_b&quot;&gt;Matrix B&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;
| 39.7 |
| -7.0 |
| 63.4 |
&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Dimensions &lt;code&gt;3.001&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Simultaneous Equations represented in Matrix Form
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;
    |A|     x  |C|  =   |B|   
                              
| 3  4  6 |   | x |   | 39.7 |
| 2 -4 -3 | x | y | = | -7.0 |
| 0  1  8 |   | z |   | 63.4 |&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Matrix representation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;matrix_representation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;7209-7618&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit18&quot; id=&quot;create_matrix_a1&quot;&gt;Create Matrix A&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3.003&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt;  (&lt;code&gt;MATDIM&lt;/code&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; (&lt;code&gt;MEDIT&lt;/code&gt;)&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;3&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:2=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;4&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:3=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;6&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;2&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:2=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;4&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CHS&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:3=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;3&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CHS&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;0&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3:2=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3:3=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;8&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Create Matrix A&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;create_matrix_a1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;7619-8262&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit19&quot; id=&quot;create_matrix_b1&quot;&gt;Create Matrix B&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3.001&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt;  (&lt;code&gt;MATDIM&lt;/code&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; (&lt;code&gt;MEDIT&lt;/code&gt;)&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;39.7&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;7&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CHS&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3:1=&lt;/code&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;63.4&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Create Matrix B&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;create_matrix_b1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;8263-8612&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit20&quot; id=&quot;run_msys&quot;&gt;Run MSYS&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put &lt;code&gt;A,B&lt;/code&gt; in &lt;code&gt;ALPHA&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;,&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run &lt;code&gt;MSYS&lt;/code&gt; - the solution matrix for &lt;code&gt;x&lt;/code&gt;, &lt;code&gt;y&lt;/code&gt; and &lt;code&gt;z&lt;/code&gt; will be placed in Matrix &lt;code&gt;B&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;H&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Run MSYS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;run_msys&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;8613-8880&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit21&quot; id=&quot;examine_matrix_b&quot;&gt;Examine Matrix B&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put &lt;code&gt;B&lt;/code&gt; in &lt;code&gt;ALPHA&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run &lt;code&gt;MEDIT&lt;/code&gt; from &lt;code&gt;CST&lt;/code&gt; menu&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; (&lt;code&gt;MEDIT&lt;/code&gt;) &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:1=&lt;/code&gt; &lt;code&gt;1.500&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;&amp;#039;R/S/&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:1=&lt;/code&gt; &lt;code&gt;-3.800&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3:1=&lt;/code&gt; &lt;code&gt;8.400&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;&amp;#039;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Examine Matrix B&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;examine_matrix_b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;8881-9208&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit22&quot; id=&quot;the_solution&quot;&gt;The solution&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;code&gt;
x =  1.5 
y = -3.8 
z =  8.4 &lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The solution&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_solution&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;9209-9267&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit23&quot; id=&quot;matrix_a1&quot;&gt;Matrix A&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;A&lt;/code&gt; is now in LU-decomposed format&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; It can be restored to normal by &lt;strong&gt;Inverting Twice&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put &lt;code&gt;A&lt;/code&gt; in &lt;code&gt;ALPHA&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run &lt;code&gt;MINV&lt;/code&gt; via &lt;code&gt;CST&lt;/code&gt; menu twice&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;A&lt;/code&gt; is now back to normal and can be inspected and edited by &lt;code&gt;MEDIT&lt;/code&gt; via the &lt;code&gt;CST&lt;/code&gt; menu&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Matrix A&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;matrix_a1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;9268-9618&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit24&quot; id=&quot;another_way_to_solve_a_system&quot;&gt;Another way to solve a system&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Instead of the &lt;code&gt;MSYS&lt;/code&gt; function you could do it manually by entering Matrix &lt;code&gt;A&lt;/code&gt; and Matrix &lt;code&gt;B&lt;/code&gt;, and define Matrix &lt;code&gt;C&lt;/code&gt; such that
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;A&lt;/code&gt; X &lt;code&gt;C&lt;/code&gt; = &lt;code&gt;B&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;C&lt;/code&gt; = &lt;code&gt;B&lt;/code&gt; / &lt;code&gt;A&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;C&lt;/code&gt; = &lt;code&gt;A*&lt;/code&gt; X &lt;code&gt;B&lt;/code&gt; where &lt;code&gt;A*&lt;/code&gt; is &lt;code&gt;Inverse A&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Create Matrix &lt;code&gt;C&lt;/code&gt; with dimensions &lt;code&gt;3.001&lt;/code&gt; in the usual way then and do:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put &lt;code&gt;A&lt;/code&gt; in &lt;code&gt;ALPHA&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Invert &lt;code&gt;A&lt;/code&gt; using &lt;code&gt;MINV&lt;/code&gt; from &lt;code&gt;CST&lt;/code&gt; menu (&lt;code&gt;A&lt;/code&gt; is replaced by its inverse)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put &lt;code&gt;A,B,C&lt;/code&gt; in &lt;code&gt;ALPHA&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Multiply using &lt;code&gt;M*M&lt;/code&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; this multiplies &lt;code&gt;B&lt;/code&gt; by the inverse of &lt;code&gt;A&lt;/code&gt; which is effectively dividing &lt;code&gt;B&lt;/code&gt; by the original &lt;code&gt;A&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;C&lt;/code&gt; now contains the solutions for &lt;code&gt;x&lt;/code&gt;, &lt;code&gt;y&lt;/code&gt; and &lt;code&gt;z&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put &lt;code&gt;C&lt;/code&gt; in &lt;code&gt;ALPHA&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Examine &lt;code&gt;C&lt;/code&gt; with &lt;code&gt;MEDIT&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;1:1= 1.500&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;2:1= -3.800&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;3:1= 8.400&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/s&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; This preserves &lt;code&gt;B&lt;/code&gt; unlike the &lt;code&gt;MSYS&lt;/code&gt; method.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The Inverse of &lt;code&gt;A&lt;/code&gt; can be reversed by repeating &lt;code&gt;MINV&lt;/code&gt; with &lt;code&gt;A&lt;/code&gt; in &lt;code&gt;ALPHA&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; We can even run &lt;code&gt;M*M&lt;/code&gt; on &lt;code&gt;A&lt;/code&gt; and &lt;code&gt;C&lt;/code&gt; to re-create &lt;code&gt;B&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put &lt;code&gt;A,C,B&lt;/code&gt; in &lt;code&gt;ALPHA&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run &lt;code&gt;M*M&lt;/code&gt; from &lt;code&gt;CST&lt;/code&gt; menu&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;B&lt;/code&gt; will be re-created&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Another way to solve a system&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;another_way_to_solve_a_system&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;9619-10809&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit25&quot; id=&quot;the_complex_matrix&quot;&gt;The Complex Matrix&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
It is possible to define, edit and carry out operations with matrices containing Complex Numbers.
&lt;/p&gt;

&lt;p&gt;
The matrix is defined with &lt;strong&gt;twice as many rows and columns&lt;/strong&gt; as appears necessary, and edited with the function &lt;code&gt;CMEDIT&lt;/code&gt;, in &lt;code&gt;CST&lt;/code&gt; menu &lt;code&gt;C&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The Complex Matrix&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_complex_matrix&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;10810-11089&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit26&quot; id=&quot;example_definition&quot;&gt;Example Definition&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;code&gt;
| 1+j2  5+j6 |
| 3+j4  7+j8 |
&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Two rows and two columns &lt;code&gt;2&amp;times;2&lt;/code&gt; containing complex numbers, so the definition/dimension is &lt;code&gt;4.004&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
The numbers are actually saved as if in a larger real matrix as
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;
| 1 -2  5 -6 |
| 2  1  6  5 |
| 3 -4  7 -8 |
| 4  3  8  7 |
&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
The entry is via &lt;code&gt;CMEDIT&lt;/code&gt; via &lt;code&gt;CST&lt;/code&gt; menu &lt;code&gt;C&lt;/code&gt;, which asks for each &lt;code&gt;Real&lt;/code&gt; and &lt;code&gt;Imaginary&lt;/code&gt; part in turn
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;4.004&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;RE. 1:1=&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;IM. 1:1=&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;2&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;RE. 1:2=&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;5&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;IM. 1:2=&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;6&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;RE. 2:1=&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;3&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;IM. 2:1=&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;4&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;RE. 2:2=&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;7&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;IM. 2:2=&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;8&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Example Definition&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;example_definition&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;11090-12033&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit27&quot; id=&quot;multiplication_of_complex_matrices&quot;&gt;Multiplication of Complex Matrices&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;create_a_second_matrix&quot;&gt;Create a second matrix&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Matrix &lt;code&gt;B&lt;/code&gt; of size &lt;code&gt;2&amp;times;1&lt;/code&gt; which can be multiplied by &lt;code&gt;A&lt;/code&gt; as &lt;code&gt;A&lt;/code&gt; x &lt;code&gt;B&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;code&gt;
| 3+j4 |
| 2+j6 |
&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;dimension_second_matrix&quot;&gt;Dimension second matrix&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
This is dimensioned as double the basic size of &lt;code&gt;2&amp;times;1&lt;/code&gt; : &lt;code&gt;4.002&lt;/code&gt; and then populated with &lt;code&gt;CMEDIT&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;4.002&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;RE. 1:1=&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;3&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;IM. 1:1=&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;4&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;RE. 2:1=&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;2&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;IM. 2:1=&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;6&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;create_a_result_matrix&quot;&gt;Create a result matrix&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Matrix &amp;#039;C&amp;#039; which will be also be a &lt;code&gt;2&amp;times;1&lt;/code&gt; complex with dimension :&lt;code&gt;4.002&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;4.002&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;multiply_a_x_b_c&quot;&gt;Multiply A X B = C&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;,&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;,&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;E&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;inspect_result_matrix_c&quot;&gt;Inspect Result Matrix C&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;RE. 1:1= -31.000&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;IM. 1:1=  52.000&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;RE. 2:1= -41.000&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;IM. 2:1=  82.000&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The result matrix is therefore
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;
| -31+j52 |
| -41+j82 |
&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Which agrees with my long-hand calculation (thanks to &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:41z_module&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:41z_module&quot; data-wiki-id=&quot;public:calculator:guides:41z_module&quot;&gt;DM41X 41z Module&lt;/a&gt; )
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;
|(1+j2).(3+j4) + (5+j6).(2+j6)|
|(3+J4).(3+J4) + (7+J8).(2+J6)|
&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;
| (-5+j10) + (-26+j42) |
| (-7+j24) + (-34+j58) |
&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;
| -31+j52 |
| -41+j82 |
&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Multiplication of Complex Matrices&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;multiplication_of_complex_matrices&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;12034-13655&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit28&quot; id=&quot;systems_of_complex_equations&quot;&gt;Systems of Complex Equations....&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Once you can enter and manipulate Complex Matrices you can also use &lt;code&gt;MSYS&lt;/code&gt; to solve systems with complex matrices in the same way as usual - the only difference is entering the matrices as Complex.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Systems of Complex Equations....&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;systems_of_complex_equations&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;13656-13904&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit29&quot; id=&quot;clearing_up_extended_memory&quot;&gt;Clearing Up Extended Memory&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
After creating and manipulating (and some finger trouble) there will be a bunch of files in Extended Memory. 
&lt;/p&gt;

&lt;p&gt;
Most will be simple matrix definitions with obvious names &lt;code&gt;A&lt;/code&gt;, &lt;code&gt;B&lt;/code&gt;, &lt;code&gt;C&lt;/code&gt; etc. but occasionally you&amp;#039;ll accidentally have run &lt;code&gt;MATDIM&lt;/code&gt; with some nonsense in the &lt;code&gt;ALPHA&lt;/code&gt; register and created a nonsensical filename in extended memory, which it&amp;#039;s tricky to spell out correctly in &lt;code&gt;ALPHA&lt;/code&gt; in order to run &lt;code&gt;PURLF&lt;/code&gt; - this is where &lt;code&gt;EMDIRX&lt;/code&gt; comes in.
&lt;/p&gt;

&lt;p&gt;
To simplify clearing up I include &lt;code&gt;EMDIR&lt;/code&gt;, &lt;code&gt;EMDIRX&lt;/code&gt; and &lt;code&gt;PURFL&lt;/code&gt; in the &lt;code&gt;CST&lt;/code&gt; menu.
&lt;/p&gt;

&lt;p&gt;
Assuming you have other files in Extended Memory, the quickest way is to find the number of files in EM with &lt;code&gt;EMDIR&lt;/code&gt;. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run &lt;code&gt;EMDIR&lt;/code&gt; from &lt;code&gt;CST&lt;/code&gt; menu&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;N&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Count the files to find the number of the first file you&amp;#039;ve created using &lt;code&gt;MATDIM&lt;/code&gt; - i.e. the first one &lt;em&gt;after&lt;/em&gt; your other EM files&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put this number in &lt;code&gt;x&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run &lt;code&gt;EMDIRX&lt;/code&gt; from &lt;code&gt;CST&lt;/code&gt; menu&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;O&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; this puts the &lt;code&gt;name&lt;/code&gt; of the specified-numbered file in &lt;code&gt;ALPHA&lt;/code&gt; and means you don&amp;#039;t have to type it in yourself&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run &lt;code&gt;PURFL&lt;/code&gt; from &lt;code&gt;CST&lt;/code&gt; menu to delete this filename&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;CST&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;P&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run &lt;code&gt;EMDIRX&lt;/code&gt; again (with the same number in &lt;code&gt;X&lt;/code&gt;)&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; If &lt;code&gt;X&lt;/code&gt; returns as non-zero we&amp;#039;ve found another &lt;em&gt;junk-matrix&lt;/em&gt; file in EM and &lt;code&gt;ALPHA&lt;/code&gt; will have its name&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Run &lt;code&gt;PURFL&lt;/code&gt; again&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Keep doing this until &lt;code&gt;EMDIRX&lt;/code&gt; returns &lt;code&gt;0.00&lt;/code&gt; in &lt;code&gt;X&lt;/code&gt; which means there are no more files to delete&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; all your original files are still safe, as they are numbered &lt;em&gt;below&lt;/em&gt; the number we were searching for&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Clearing Up Extended Memory&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;clearing_up_extended_memory&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;13905-15582&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit30&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:calculator&amp;amp;do=showtag&amp;amp;tag=calculator&quot; class=&quot;wikilink1&quot; title=&quot;tag:calculator&quot; rel=&quot;tag&quot;&gt;calculator&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dm41x&amp;amp;do=showtag&amp;amp;tag=dm41x&quot; class=&quot;wikilink1&quot; title=&quot;tag:dm41x&quot; rel=&quot;tag&quot;&gt;dm41x&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;15583-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 08 Feb 2026 08:26:58 +0000</pubDate>
        </item>
        <item>
            <title>Another diversion... I3 Tiling WM</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:i3wm2</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;another_diversion_i3_tiling_wm&quot;&gt;Another diversion... I3 Tiling WM&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 09/10/22 13:58&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
After setting up Alpine and some other console-mode software I got the urge to try going back to another window manager I&amp;#039;ve played with in the past - &lt;a href=&quot;https://i3wm.org/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://i3wm.org/&quot; rel=&quot;ugc nofollow noopener&quot;&gt; I3 WM&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I used it on my touchscreen Raspberry Pi that used to live in the LandRover as a control panel for the Icom IC-M710 HF radio - as it&amp;#039;s good for simple mouse-less control.
&lt;/p&gt;

&lt;p&gt;
I delved into the usual round of other tiling WMs:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I3&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DWM&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Herbstluftwm (HLWM)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
After setting up some things on I3 to work the way I wanted I didn&amp;#039;t see the need to re-invent the wheel by spending time learning/configuring DWM or HLWM so I&amp;#039;ve settled on I3
&lt;/p&gt;

&lt;p&gt;
There are some snippets of info and configs on a page in the Wiki:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:i3_window_manager&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:i3_window_manager&quot; data-wiki-id=&quot;public:computers:archive:i3_window_manager&quot;&gt;I3 Window Manager&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I have it setup on my laptop which runs Antix Linux from a USB memory stick, without using the Hard Drive, and with Persistent Storage working well it&amp;#039;s a great, fast and responsive, Linux-on-the-desktop user machine. I&amp;#039;m limited by how much software can be installed, as it all has to fit in 3GB of RAM once it boots. There&amp;#039;s some USB storage available for data/documents etc. too.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;m also setting I3 up on the old laptop I have in the shed as my main fixed machine - which is where I&amp;#039;m learning to write 6502 Assembly, and using I3 tiling WM is great for this - one large tile can have a VIM session to edit the source code, smaller tiles with terminal/shell can be used to assemble the code and to write/burn it to EEPROM, and to handle GIT commits/uploads to GITHUB.
&lt;/p&gt;

&lt;p&gt;
Linux is just &lt;em&gt;so&lt;/em&gt; versatile!
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 07:18:16 +0000</pubDate>
        </item>
        <item>
            <title>DokuWiki Tweaks</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:dokuwiki:dokuwiki_tweaks</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:dokuwiki:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:dokuwiki:start&quot; data-wiki-id=&quot;public:computers:dokuwiki:start&quot;&gt;Dokuwiki&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dokuwiki_tweaks&quot;&gt;DokuWiki Tweaks&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DokuWiki Tweaks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki_tweaks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;16-46&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;hide_revisions_and_page_source_for_not-admin_in_users&quot;&gt;Hide Revisions and Page Source for not-ADMIN in Users&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Edit &lt;code&gt;../lib/tpl/monobook/conf/tabs.php&lt;/code&gt; to add the check of &lt;code&gt;AUTH_ADMIN&lt;/code&gt; for the tabs for Page Source and Revisions
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$INFO&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;exists&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$_monobook_tabs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ca-edit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;btn_edit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//language comes from DokuWiki core&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$_monobook_tabs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ca-edit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;btn_create&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//language comes from DokuWiki core&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;elseif&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;actionOK&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;source&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;auth_quickaclcheck&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$ID&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; AUTH_ADMIN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//check if action is disabled and also that AUTH_ADMIN is logged in&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$_monobook_tabs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ca-edit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;      &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;btn_source&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//language comes from DokuWiki core&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$_monobook_tabs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ca-edit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;accesskey&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;E&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;//old versions/revisions tab&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$INFO&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;exists&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
            actionOK&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;revisions&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;auth_quickaclcheck&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$ID&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; AUTH_ADMIN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// check AUTH_ADMIN is logged in to see old revisions&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//check if action is disabled&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;//ATTENTION: &amp;quot;ca-history&amp;quot; is used as css id selector!&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$_monobook_tabs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ca-history&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;      &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;btn_revs&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//language comes from DokuWiki core&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$_monobook_tabs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ca-history&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;href&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;      &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; wl&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cleanID&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;getId&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;do&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;revisions&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;amp;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$_monobook_tabs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ca-history&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;accesskey&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;O&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$ACT&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;revisions&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//$ACT comes from DokuWiki core&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$_monobook_tabs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ca-history&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;class&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;selected&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Hide Revisions and Page Source for not-ADMIN in Users&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hide_revisions_and_page_source_for_not-admin_in_users&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;47-1607&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;include_blog_read_more&quot;&gt;Include / Blog &amp;quot;Read More...&amp;quot;&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The default is for a “read more…” link to be placed at the extreme right of the page - which is not ideal when using Monobook template.
&lt;/p&gt;

&lt;p&gt;
I found the css setting that controls the position of “read more…” in &lt;code&gt;../lib/plugins/include/style.css&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code css&quot;&gt;div&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; p&lt;span class=&quot;re1&quot;&gt;.include_readmore&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;right&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
changing it to 
&lt;/p&gt;
&lt;pre class=&quot;code css&quot;&gt;div&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; p&lt;span class=&quot;re1&quot;&gt;.include_readmore&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
solved the problem and “read more…” is now on the left, directly at the point that the eyes get to when reading a post on the main blog index page.
&lt;/p&gt;

&lt;p&gt;
To prevent this being overwritten on updates I found it works to put the same stanza in &lt;code&gt;../conf/userstyle.css&lt;/code&gt; which should keep it safe…
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Include \/ Blog \&amp;quot;Read More...\&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;include_blog_read_more&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1608-2366&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;vector_monobook_tweaks&quot;&gt;Vector / Monobook tweaks&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I like the Vector and Monobook templates, very similar feel to Wikipedia
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Vector \/ Monobook tweaks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vector_monobook_tweaks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2367-2478&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;logout_errors_with_later_versions_of_dokuwiki&quot;&gt;Logout errors with later versions of Dokuwiki&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
After upgrading Dokuwiki to &lt;em&gt;Igor&lt;/em&gt; it became impossible to log out due to a warning 
&lt;/p&gt;
&lt;div class=&quot;plugin_note notewarning&quot;&gt;Security Token did not match. Possible CSRF attack.

&lt;/div&gt;
&lt;p&gt;
I initially ignored it but then downgraded back to &lt;em&gt;Hogfather&lt;/em&gt; as there seemed to be no fix - other than to use a different template.
&lt;/p&gt;

&lt;p&gt;
I recently upgraded to the latest Dokuwiki (Jack Jackrum), and upgraded all plugins and templates where possible. However the problem with logout with Vector and Monobook re-appeared.
&lt;/p&gt;

&lt;p&gt;
I found there was a fix described on the forum:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://forum.dokuwiki.org/d/20248-security-token-did-not-match-possible-csrf-attack-cannot-log-out&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://forum.dokuwiki.org/d/20248-security-token-did-not-match-possible-csrf-attack-cannot-log-out&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://forum.dokuwiki.org/d/20248-security-token-did-not-match-possible-csrf-attack-cannot-log-out&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
and the cure is to edit the appropriate line in &lt;code&gt;main.php&lt;/code&gt; for each template, as the author seems not to be maintaining these templates any more, at least not the official ones accessed via Dokuwiki&amp;#039;s Template/Extension installer. The github repository shows that the fix has been applied to &lt;code&gt;Vector&lt;/code&gt;, and a pull request submitted to fix &lt;code&gt;Monobook&lt;/code&gt;, the fixes haven&amp;#039;t appeared in the official versions. 
&lt;/p&gt;

&lt;p&gt;
The &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; does work, though…
&lt;/p&gt;

&lt;p&gt;
For Vector edit &lt;code&gt;/var/www/html/dokuwiki/lib/tpl/vector/main.php&lt;/code&gt; to add &lt;code&gt;, &amp;#039;sectok&amp;#039; ⇒ getSecurityToken()&lt;/code&gt; in the &lt;code&gt;array&lt;/code&gt; statement after &lt;code&gt;“do” ⇒ “logout”&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt;  &lt;span class=&quot;st0&quot;&gt;&amp;quot;      &amp;lt;li id=&lt;span class=&quot;es1&quot;&gt;\&amp;quot;&lt;/span&gt;pt-logout&lt;span class=&quot;es1&quot;&gt;\&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;a href=&lt;span class=&quot;es1&quot;&gt;\&amp;quot;&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;wl&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cleanID&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;getId&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;do&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;logout&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;sectok&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; getSecurityToken&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\&amp;quot;&lt;/span&gt; rel=&lt;span class=&quot;es1&quot;&gt;\&amp;quot;&lt;/span&gt;nofollow&lt;span class=&quot;es1&quot;&gt;\&amp;quot;&lt;/span&gt;&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;hsc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;btn_logout&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//language comes from DokuWiki core&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
and the same for &lt;code&gt;Monobook&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt;  &lt;span class=&quot;st0&quot;&gt;&amp;quot;          &amp;lt;li id=&lt;span class=&quot;es1&quot;&gt;\&amp;quot;&lt;/span&gt;pt-logout&lt;span class=&quot;es1&quot;&gt;\&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;a href=&lt;span class=&quot;es1&quot;&gt;\&amp;quot;&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;wl&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cleanID&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;getId&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;do&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;logout&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;sectok&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; getSecurityToken&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\&amp;quot;&lt;/span&gt; rel=&lt;span class=&quot;es1&quot;&gt;\&amp;quot;&lt;/span&gt;nofollow&lt;span class=&quot;es1&quot;&gt;\&amp;quot;&lt;/span&gt;&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;hsc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;btn_logout&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//language comes from DokuWiki core&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Logout errors with later versions of Dokuwiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logout_errors_with_later_versions_of_dokuwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2479-4309&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;monospace_font&quot;&gt;Monospace font&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I found the style applied to &lt;code&gt;monospace&lt;/code&gt; text was a little underwhelming. 
&lt;/p&gt;

&lt;p&gt;
I found the place to change it:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; /var/www/html/dokuwiki/lib/tpl/{vector|monobook}/user/screen.css &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
add the the following and adjust as needed:
&lt;/p&gt;
&lt;pre class=&quot;code css&quot;&gt;div#&lt;span class=&quot;kw2&quot;&gt;content&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; code &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;100%&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding-left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding-right&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#eee&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#00f&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;direction&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ltr&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Monospace font&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;monospace_font&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;4310-4758&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;footer_buttons&quot;&gt;Footer Buttons&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Remove the default footer buttons by editing &lt;code&gt;{vector|monobook}/user/buttons.php&lt;/code&gt; and adding
&lt;/p&gt;
&lt;div class=&quot;plugin_note notetip&quot;&gt;For Monobook, change to &lt;pre class=&quot;code&quot;&gt;$_monobook_btns = array();&lt;/pre&gt;

&lt;/div&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;//delete all (defaults)&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
this suppresses the inclusion of footer buttons from &lt;code&gt;vector/conf/buttons.php&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;add_just_the_dokuwiki_and_vector_monobook_buttons&quot;&gt;Add just the Dokuwiki and Vector/Monobook Buttons&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Edit &lt;code&gt;{vector|monobook}/user/buttons.php&lt;/code&gt;
&lt;/p&gt;
&lt;div class=&quot;plugin_note notetip&quot;&gt;Swap &lt;code&gt;monobook&lt;/code&gt; for &lt;code&gt;vector&lt;/code&gt; as appropriate

&lt;/div&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;//check if we are running within the DokuWiki environment&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/defined&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;DOKU_INC&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/die&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//delete all (defaults)&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;  
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;//note: The buttons will be rendered in the order they were defined. Means:&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      first button will be rendered first, last button will be rendered at&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      last.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//DokuWiki button&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;dw&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;img&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;      &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; DOKU_TPL&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;static/img/button-dw.png&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;dw&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;href&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;     &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;https://www.dokuwiki.org/&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;dw&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;width&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;dw&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;height&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;dw&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;title&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;DokuWiki&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;dw&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;nofollow&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cleanID&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;getID&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;start&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;//&amp;quot;vector for DokuWiki&amp;quot; button&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;vecfdw&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;img&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;      &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; DOKU_TPL&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;static/img/button-vector.png&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;vecfdw&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;href&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;     &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;https://www.dokuwiki.org/template:vector&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;vecfdw&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;width&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;vecfdw&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;height&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;vecfdw&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;title&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;vector_mdtemplatefordw&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$_vector_btns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;vecfdw&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;nofollow&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cleanID&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;getID&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;start&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Footer Buttons&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;footer_buttons&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4759-6393&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;symbol_chooser_font_size&quot;&gt;Symbol Chooser font size&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The drop-down picker for choosing a symbol to insert in the text being edited is very small in Monobook as standard.
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s controlled by the &lt;code&gt;pickerbutton&lt;/code&gt; class and is set at &lt;code&gt;80%&lt;/code&gt; in the standard &lt;code&gt;monobook&lt;/code&gt; css.
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s adjusted thus (to 1.2em) and some extra margin added around the symbols:
&lt;/p&gt;

&lt;p&gt;
button.pickerbutton {
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;padding: 0px;
margin: 2px 2px 2px 2px;
border: 0;
background-color: transparent;
font-size: 1.2em;
cursor: pointer;&lt;/pre&gt;

&lt;p&gt;
}
&lt;/p&gt;

&lt;p&gt;
Put this in &lt;code&gt;user/screen.css&lt;/code&gt; with all the other tweaks.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Symbol Chooser font size&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;symbol_chooser_font_size&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;6394-6944&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;mobile_scaling&quot;&gt;Mobile Scaling&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The layout on a phone isn&amp;#039;t too good, and can&amp;#039;t be zoomed/scaled. 
&lt;/p&gt;

&lt;p&gt;
I found this thread:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://forum.dokuwiki.org/d/12469-vector-template-doesn-t-display-correctly-on-mobile-devices/6&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://forum.dokuwiki.org/d/12469-vector-template-doesn-t-display-correctly-on-mobile-devices/6&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://forum.dokuwiki.org/d/12469-vector-template-doesn-t-display-correctly-on-mobile-devices/6&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
and applied the comment-out of the line :
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;//echo &amp;quot;&amp;lt;meta name=\&amp;quot;viewport\&amp;quot; content=\&amp;quot;width=device-width,initial-scale=1\&amp;quot; /&amp;gt;&amp;quot;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
in &lt;code&gt;main.php&lt;/code&gt; and &lt;code&gt;mediamanager.php&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
the page now scales/zooms okay to make it useable on a phone.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mobile Scaling&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mobile_scaling&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;6945-7417&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;monobook_user_screencss&quot;&gt;Monobook user/screen.css&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* Give sidebar more space.
&amp;nbsp;
   Default widths:
   - 12.2em as left spacer for the content area. This example is using 14.2em
     instead.
   - 11.6em as sidebar width. This example is using 13.6em instead.
   - 10.9em as width for the search input field. This example is using 12.9em
     instead.
   - 150px as left spacer for the Ajax searchbox. This example is using 180px.
*/&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* move content container more to the right */&lt;/span&gt;
#&lt;span class=&quot;kw2&quot;&gt;content&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2.8em&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;14.2em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;#column-content&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;.6em&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;-14.2em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;#column-content&lt;/span&gt; #&lt;span class=&quot;kw2&quot;&gt;content&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin-left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;14.2em&lt;/span&gt; !important&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;coMULTI&quot;&gt;/* adjustment for  IE (7) */&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* redefine sidebar width + tab bar position */&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.portlet&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;13.6em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;#p-cactions&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;13.6em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;coMULTI&quot;&gt;/* tab bar */&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* search input field */&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;#qsearch__in&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;11.5em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* ajax &amp;quot;matching pagename&amp;quot; searchbox */&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;#qsearch__out&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;180px&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
div&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#dw__toc&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.2em&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;right&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;200px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;100%&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;clear&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;both&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; __background__&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; 
&amp;nbsp;
div#&lt;span class=&quot;kw2&quot;&gt;content&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; code &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.1em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding-left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding-right&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#eee&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#22f&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;4px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;direction&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ltr&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;white-space&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;pre&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
div#&lt;span class=&quot;kw2&quot;&gt;content&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;pre&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#faffff&lt;/span&gt; !important&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
button&lt;span class=&quot;re1&quot;&gt;.pickerbutton&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2px&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2px&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2px&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;transparent&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.2em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cursor&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;pointer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.pBody&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.1em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;padding-bottom&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;#bodyContent&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.1em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
kbd&lt;span class=&quot;re1&quot;&gt;.__keyboard&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#0000ff&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#defede&lt;/span&gt; !important&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;center&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;border-left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1px&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;solid&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#cfcfcf&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;border-top&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1px&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;solid&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#cfcfcf&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;border-right&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;3px&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;solid&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#666666&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;3px&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;solid&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#666666&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  -moz-border-radius&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;4px&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;4px&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;4px&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;4px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;6px&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;6px&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;6px&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;6px&lt;/span&gt; !important&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding-left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;3px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding-top&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding-right&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;3px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding-bottom&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin-left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin-right&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;vertical-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;sans-serif&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;white-space&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;nowrap&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.1em&lt;/span&gt; !important&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
div&lt;span class=&quot;re1&quot;&gt;.qq-upload-button&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1px&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;solid&lt;/span&gt; __border__&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Monobook user\/screen.css&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;monobook_user_screencss&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;7418-9664&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;dokuwiki_template_css&quot;&gt;Dokuwiki Template CSS&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Standard settings for font sizes etc. for different elements is here:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;/var/www/html/dokuwiki/lib/tpl/dokuwiki/css/design.less&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; add any modified tweaks to the CSS to a &lt;code&gt;userstyle.css&lt;/code&gt; i.e. &lt;code&gt;/var/www/html/dokuwiki/conf/userstyle.css&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;font-size&lt;/code&gt; etc&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;pre&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;10px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#fcffff&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
code &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#c72522&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.1em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0.1em&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0.3em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;.aside&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;90%&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
body &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;90%&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; div&lt;span class=&quot;re1&quot;&gt;.breadcrumbs&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;90%&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
See also &lt;a href=&quot;#dokuwiki_template_monospace_font&quot; title=&quot;public:computers:dokuwiki:dokuwiki_tweaks ↵&quot; class=&quot;wikilink1&quot;&gt;Dokuwiki Template monospace font&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dokuwiki Template CSS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki_template_css&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;9665-10350&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;dokuwiki_template_tagline&quot;&gt;Dokuwiki Template Tagline&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;p style=&amp;quot;font-size:12px;background-color:#a5e4fa;&amp;quot;&amp;gt;Try to learn &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;something&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; about everything, and &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;everything&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; about something &amp;lt;br&amp;gt; &amp;lt;i&amp;gt; -Thomas Huxley “Darwin&amp;#039;s bulldog” (1824-1895)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dokuwiki Template Tagline&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki_template_tagline&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;10351-10621&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;dokuwiki_timezone&quot;&gt;Dokuwiki Timezone&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I noticed the timestamps on file creation/modification were in UTC&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I&amp;#039;d rather have “local time” so I don&amp;#039;t have to think too hard&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The answer is here → &lt;a href=&quot;https://www.dokuwiki.org/tips:timezone&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/tips:timezone&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.dokuwiki.org/tips:timezone&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I used the first option, after successfully testing the second (editing &lt;code&gt;php.ini&lt;/code&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I created &lt;code&gt;conf/local.protected.php&lt;/code&gt; with &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/date_default_timezone_set&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;date_default_timezone_set&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Europe/London&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I did &lt;code&gt;sudo chown www-data:www-data local.protected.php&lt;/code&gt; too, just to be sure&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; All looks good - pages created/modified while in &lt;em&gt;summer time&lt;/em&gt; show the time in &lt;code&gt;BST&lt;/code&gt; and pages modified in &lt;em&gt;winter time&lt;/em&gt; show the time in &lt;code&gt;GMT&lt;/code&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dokuwiki Timezone&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki_timezone&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;10622-11313&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;add_dw2pdf&quot;&gt;Add DW2PDF&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; To allow export of pages from Wiki → PDF format install plugin &lt;a href=&quot;https://www.dokuwiki.org/plugin:dw2pdf&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:dw2pdf&quot; rel=&quot;ugc nofollow noopener&quot;&gt;dw2pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; to enable functionality it was necessary to install &lt;code&gt;php-mbstring&lt;/code&gt; package on the VPS&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;pre class=&quot;code&quot;&gt;sudo apt-get install php-mbstring&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;pre class=&quot;code&quot;&gt;sudo service apache2 restart&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Add DW2PDF&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;add_dw2pdf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:14,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;11314-11647&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;update&quot;&gt;UPDATE&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 26/04/23 10:04&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
removed &lt;code&gt;dw2pdf&lt;/code&gt; plugin, it is largely unused and adds pointless bloat.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;UPDATE&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;update&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:16,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;11648-11782&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;increase_maximum_file_size_upload_for_media_manager&quot;&gt;Increase maximum file size upload for Media Manager&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; edit &lt;code&gt;php.ini&lt;/code&gt; &lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;pre class=&quot;code&quot;&gt;sudo vi /etc/php/XX/apache2/php.ini&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; change  &lt;code&gt;upload_max_filesize = 2M&lt;/code&gt; to &lt;code&gt;upload_max_filesize = 20M&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; change &lt;code&gt;post_max_size = 2M&lt;/code&gt; to &lt;code&gt;post_max_size = 20M&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;pre class=&quot;code&quot;&gt;sudo service apache2 restart&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Increase maximum file size upload for Media Manager&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;increase_maximum_file_size_upload_for_media_manager&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:16,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;11783-12112&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;allow_any_file-type_upload&quot;&gt;Allow any file-type upload&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
From &lt;a href=&quot;https://forum.dokuwiki.org/d/3318-allow-upload-of-any-filetype/5&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://forum.dokuwiki.org/d/3318-allow-upload-of-any-filetype/5&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://forum.dokuwiki.org/d/3318-allow-upload-of-any-filetype/5&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Edit &lt;code&gt;/var/www/html/www/dokuwiki/inc/media.php&lt;/code&gt; and comment out :
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;    &lt;span class=&quot;co1&quot;&gt;// because a temp file was created already&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;//if (!preg_match(&#039;/\.(&#039; . $regex . &#039;)$/i&#039;, $fn)) {&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;//    return [$lang[&#039;uploadwrong&#039;], -1];&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;//}&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Allow any file-type upload&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;allow_any_file-type_upload&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:18,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;12113-12475&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;jpg_upload_error_-_xml&quot;&gt;jpg upload error - XML&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Media manage red warnings when uploading jpg image files
&lt;/p&gt;
&lt;div class=&quot;plugin_note notewarning&quot;&gt;Error: Call to undefined function xml_parser_create()

&lt;/div&gt;
&lt;p&gt;
New VPS was missing the &lt;code&gt; php-xml &lt;/code&gt; package.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt install php-xml
sudo service apache2 restart&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://forum.dokuwiki.org/d/21045-error-call-to-undefined-function-xml-parser-create&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://forum.dokuwiki.org/d/21045-error-call-to-undefined-function-xml-parser-create&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://forum.dokuwiki.org/d/21045-error-call-to-undefined-function-xml-parser-create&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;jpg upload error - XML&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;jpg_upload_error_-_xml&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:19,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;12476-12847&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;acronyms_abbreviations&quot;&gt;Acronyms &amp;amp; Abbreviations&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I find the underlining and “explanation” of some abbreviations/acronyms by dokuwiki, when rendering a page, to be annoying.
&lt;/p&gt;

&lt;p&gt;
such as DNS and ACL
&lt;/p&gt;

&lt;p&gt;
The process is described &lt;a href=&quot;https://www.dokuwiki.org/abbreviations&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/abbreviations&quot; rel=&quot;ugc nofollow noopener&quot;&gt; HERE &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
To disable this I simply copied the default &lt;code&gt;conf/acronyms.conf&lt;/code&gt; to a local version &lt;code&gt;conf/acronyms.local.conf&lt;/code&gt; and then edited the &lt;code&gt;local&lt;/code&gt; version to remove all the explanations.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# Acronyms.

ACL
AFAICS
AFAIK
AFAIR
API
ASAP
ASCII
BTW
CMS
CSS
DNS
EOF
EOL
EOM
EOT
FAQ
FTP
FOSS
FLOSS
FUD
FYI
GB
GHz
GPL
GUI
HTML
IANAL
IE
IIRC
IMHO
IMO
IOW
IRC
IRL
KISS
LAN
LGPL
LOL
MathML
MB
MHz
MSIE
OMG
OS
OSS
OTOH
PITA
RFC
ROTFL
RTFM
spec
TIA
TL;DR
TOC
URI
URL
W3C
WTF?
WYSIWYG
YMMV
&lt;/pre&gt;

&lt;p&gt;
This supresses the annoyance.
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 30/04/23 13:49&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Acronyms &amp;amp; Abbreviations&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;acronyms_abbreviations&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:19,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;12848-13671&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;add_folded_plugin&quot;&gt;Add folded plugin&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
make a clickable hide/reveal section with 
&lt;/p&gt;

&lt;p&gt;

++++ visible text | 

hidden text blah blah 

++++

&lt;/p&gt;

&lt;p&gt;
e.g.
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_6905d78f3aa2024d930cb931efaca3ef_33&quot;&gt;There is a table here... &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_6905d78f3aa2024d930cb931efaca3ef_33&quot;&gt;&lt;div class=&quot;table sectionedit21&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Col1&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Col2&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Col3&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;one&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;two&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;three&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;13843-13875&amp;quot;} --&gt;&lt;pre class=&quot;code python&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; func&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;hello world&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Add folded plugin&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;add_folded_plugin&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:20,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;13672-13941&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit22&quot; id=&quot;increase_tagcloud_font_size&quot;&gt;Increase TAGCLOUD font size&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
edit &lt;code&gt;/var/www/html/dokuwiki/lib/plugins/cloud/style.less&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
increase &lt;code&gt;size factor&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* Size factor. */&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@sF&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1.2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
force re-fresh of browser to show new font size.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Increase TAGCLOUD font size&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;increase_tagcloud_font_size&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:21,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;13942-14169&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit23&quot; id=&quot;keyboard_plugin&quot;&gt;Keyboard Plugin&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; tweak the size, border and colour&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;example_keys&quot;&gt;example keys&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;Ctrl&lt;/kbd&gt;+&lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;tweaks&quot;&gt;Tweaks&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;/var/www/html/dokuwiki/lib/plugins/keyboard/all.css&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code css&quot;&gt;kbd&lt;span class=&quot;re1&quot;&gt;.__keyboard&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#0000ff&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#defede&lt;/span&gt; !important&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;center&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;border-left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1px&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;solid&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#cfcfcf&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;border-top&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1px&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;solid&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#cfcfcf&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;border-right&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;3px&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;solid&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#666666&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;3px&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;solid&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#666666&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  -moz-border-radius&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;4px&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;4px&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;4px&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;4px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding-left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;3px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding-top&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding-right&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;3px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;padding-bottom&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin-left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin-right&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;vertical-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;sans-serif&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;white-space&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;nowrap&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.2em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Keyboard Plugin&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;keyboard_plugin&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:22,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;14170-14868&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit24&quot; id=&quot;dokuwiki_template_monospace_font&quot;&gt;Dokuwiki Template monospace font&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; the colour of the mono font is the same as general text and doesn&amp;#039;t stand out as well as in other templates.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; edit &lt;code&gt;/var/www/html/dokuwiki/lib/tpl/dokuwiki/css/basic.less&lt;/code&gt; with a hex code for a better colour&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; but see below for a better place to do the configuraiton&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code css&quot;&gt;code &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#c72522&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.1em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0.1em&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0.3em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; To prevent upgrades overwriting these changes - add them to &lt;code&gt;/var/www/html/dokuwiki/conf/userstyle.css&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;pre&lt;/code&gt; relates to the blocks of &amp;lt;code&amp;gt; ////// &amp;lt;/code&amp;gt; &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;code&lt;/code&gt; relates to &lt;code&gt;monospaced text&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;pre&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;10px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
         &lt;span class=&quot;kw1&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#fcffff&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
code &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;#c72522&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.1em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0.1em&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0.3em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dokuwiki Template monospace font&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki_template_monospace_font&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:23,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;14869-15743&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit25&quot; id=&quot;remove_dokuwiki_template_footer_buttons&quot;&gt;Remove Dokuwiki template footer buttons&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; edit &lt;code&gt;/var/www/html/dokuwiki/lib/tpl/dokuwiki/tpl_footer.php&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; comment out ( &amp;lt;!-- ///// --&amp;gt; ) the license stanza &lt;strong&gt;and/or&lt;/strong&gt; the &amp;lt;div&amp;gt; that contains the “buttons”&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;/**&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;* Template footer, included in the main and detail files&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;*/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// must be run from within DokuWiki&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/defined&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;DOKU_INC&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/die&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;nbsp;
&amp;lt;!-- ********** FOOTER ********** --&amp;gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;lt;div id=&amp;quot;dokuwiki__footer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;pad&amp;quot;&amp;gt;
&amp;nbsp;
&lt;span class=&quot;xtra ln-xtra&quot;&gt;&amp;lt;!--    &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; tpl_license&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// license text ?&amp;gt; --&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;xtra ln-xtra&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;!--&lt;/span&gt;    &lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;div &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;buttons&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
            tpl_license&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;button&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// license button, no wrapper&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;target&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;extern&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ? &lt;span class=&quot;st_h&quot;&gt;&#039;target=&amp;quot;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;target&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;extern&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&amp;quot;&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
        &amp;lt;a href=&amp;quot;https://www.dokuwiki.org/donate&amp;quot; title=&amp;quot;Donate&amp;quot; &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;gt;&amp;lt;img
            src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-donate.gif&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;15&amp;quot; alt=&amp;quot;Donate&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
        &amp;lt;a href=&amp;quot;https://php.net&amp;quot; title=&amp;quot;Powered by PHP&amp;quot; &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;gt;&amp;lt;img
            src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-php.gif&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;15&amp;quot; alt=&amp;quot;Powered by PHP&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
        &amp;lt;a href=&amp;quot;//validator.w3.org/check/referer&amp;quot; title=&amp;quot;Valid HTML5&amp;quot; &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;gt;&amp;lt;img
            src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-html5.png&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;15&amp;quot; alt=&amp;quot;Valid HTML5&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
        &amp;lt;a href=&amp;quot;//jigsaw.w3.org/css-validator/check/referer?profile=css3&amp;quot; title=&amp;quot;Valid CSS&amp;quot; &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;gt;&amp;lt;img
            src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-css.png&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;15&amp;quot; alt=&amp;quot;Valid CSS&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
        &amp;lt;a href=&amp;quot;https://dokuwiki.org/&amp;quot; title=&amp;quot;Driven by DokuWiki&amp;quot; &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;gt;&amp;lt;img
            src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-dw.png&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;15&amp;quot;
            alt=&amp;quot;Driven by DokuWiki&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
    &amp;lt;/div&amp;gt;
&lt;span class=&quot;xtra ln-xtra&quot;&gt;--&amp;gt;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- /footer --&amp;gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
tpl_includeFile&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;footer.html&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Remove Dokuwiki template footer buttons&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;remove_dokuwiki_template_footer_buttons&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:25,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;15744-17735&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit26&quot; id=&quot;bootstrap3_themebynamespace&quot;&gt;Bootstrap3 ThemeByNamespace&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To force specific &lt;code&gt;bootstrap/bootswatch&lt;/code&gt; themes dependant on the namespace
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; enable &lt;code&gt;ThemeByNamespace&lt;/code&gt; option &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; create a file in &lt;code&gt;&amp;lt;dokuwiki&amp;gt;/conf&lt;/code&gt; called &lt;code&gt;bootstrap3.themes.conf&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;chown www-data:www-data bootstrap3.themes.conf&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; add the required theme/namespace mapping:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;# Namespace  Bootswatch Theme&lt;/span&gt;
start                   bootswatch&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;darkly
public                  bootswatch&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;darkly
public:calculator       bootswatch&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;slate
public:journal          bootswatch&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;journal
private                 bootswatch&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;flatly
playground              bootswatch&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;united
private:wire2waves      bootswatch&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;paper
blog                    bootswatch&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;yeti&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; it seems necessary to disable &lt;code&gt;showThemeSwitcher&lt;/code&gt; and to select a default theme to be used outside of any listed in the conf file&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Bootstrap3 ThemeByNamespace&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bootstrap3_themebynamespace&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:26,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;17736-18594&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit27&quot; id=&quot;alternative&quot;&gt;Alternative&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Using the &lt;code&gt;loadskin&lt;/code&gt; plugin &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
it&amp;#039;s possible to switch to the default &lt;code&gt;dokuwiki&lt;/code&gt; template when on a mobile device and the &lt;code&gt;vector&lt;/code&gt; template when on a computer.
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteimportant&quot;&gt;The &lt;code&gt;loadskin&lt;/code&gt; plugin seems to lead to problems switching between &lt;code&gt;monobook&lt;/code&gt; and &lt;code&gt;vector&lt;/code&gt; - the &lt;strong&gt;navigation sidebar&lt;/strong&gt; seems to disappear on one or the other. Not sure where the problem is.
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Alternative&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;alternative&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:27,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;18595-19008&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit28&quot; id=&quot;note_plugin&quot;&gt;Note Plugin&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Various Coloured notes:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
&amp;lt;note&amp;gt;
This is my note ! Remember it!!
&amp;lt;/note&amp;gt;

&amp;lt;note important&amp;gt;
Warning ! You&amp;#039;re about to lose your mind ;-)
&amp;lt;/note&amp;gt;

&amp;lt;note tip&amp;gt;
The clues are in the images.
&amp;lt;/note&amp;gt;

&amp;lt;note warning&amp;gt;
Beware of the cat when you open the door !!
&amp;lt;/note&amp;gt;


++++Note in a Folded section|
&amp;lt;note warning&amp;gt;
Ça fonctionne seulement avec le //div// pas le //span//.
&amp;lt;/note&amp;gt;
++++
&lt;/pre&gt;
&lt;div class=&quot;plugin_note noteclassic&quot;&gt;This is my note ! Remember it!!

&lt;/div&gt;&lt;div class=&quot;plugin_note noteimportant&quot;&gt;Warning ! You&amp;#039;re about to lose your mind &lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/wink.svg&quot; class=&quot;icon smiley&quot; alt=&quot;;-)&quot; /&gt;

&lt;/div&gt;&lt;div class=&quot;plugin_note notetip&quot;&gt;The clues are in the images.

&lt;/div&gt;&lt;div class=&quot;plugin_note notewarning&quot;&gt;Beware of the cat when you open the door !!

&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_6905d78f3aa2024d930cb931efaca3ef_34&quot;&gt;Note in a Folded section &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_6905d78f3aa2024d930cb931efaca3ef_34&quot;&gt;&lt;div class=&quot;plugin_note notewarning&quot;&gt;Ça fonctionne seulement avec le &lt;em&gt;div&lt;/em&gt; pas le &lt;em&gt;span&lt;/em&gt;.

&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Note Plugin&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;note_plugin&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:27,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;19009-19784&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit29&quot; id=&quot;monobook_tweaks&quot;&gt;Monobook Tweaks&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Monobook Tweaks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;monobook_tweaks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:28,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;19785-19813&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit30&quot; id=&quot;pdf_export_tab&quot;&gt;PDF Export Tab&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The &lt;code&gt;dw2pdf&lt;/code&gt; plugin provides a button on many templates to trigger export to &lt;code&gt;PDF&lt;/code&gt; but not on &lt;code&gt;monobook&lt;/code&gt;. It&amp;#039;s possible to add a tab to the top of the page, beside the &lt;code&gt;edit&lt;/code&gt; etc. tabs, to do the the &lt;code&gt;pdf export&lt;/code&gt; function.
&lt;/p&gt;
&lt;div class=&quot;plugin_note notetip&quot;&gt;add the following code to to &lt;code&gt;monobook/user/tabs.php&lt;/code&gt;
&lt;/div&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;//PDF plugin: export tab&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/file_exists&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_exists&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DOKU_PLUGIN&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;dw2pdf/action.php&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
    &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;plugin_isdisabled&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;dw2pdf&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$_monobook_tabs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;tab-export-pdf&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;pdf export&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$_monobook_tabs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;tab-export-pdf&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;href&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; wl&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;getID&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;do&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;export_pdf&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;amp;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;PDF Export Tab&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pdf_export_tab&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:28,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;19814-20446&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit31&quot; id=&quot;vector_interwiki_icons&quot;&gt;Vector Interwiki Icons&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The icon shown on interwiki links almost always appears as a small “lock” rather than the correct icon 
&lt;/p&gt;

&lt;p&gt;
commenting out the &lt;code&gt;.link-https&lt;/code&gt; section in &lt;code&gt;/vector/static/3rd/vector/main-ltr.css&lt;/code&gt; stops this :
&lt;/p&gt;
&lt;pre class=&quot;code css&quot;&gt;div#&lt;span class=&quot;kw2&quot;&gt;content&lt;/span&gt; a.external&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
div#&lt;span class=&quot;kw2&quot;&gt;content&lt;/span&gt; a&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;href &lt;span class=&quot;sy0&quot;&gt;^=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;gopher://&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;static/3rd/vector/external-link-ltr-icon.png&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;center&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;right&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;no-repeat&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;13px&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/*
div#content a[href ^=&amp;quot;https://&amp;quot;],
.link-https {
        background: url(static/3rd/vector/lock-icon.png) center right no-repeat;
        padding: 0 13px 0 0;
}
*/&lt;/span&gt;
&amp;nbsp;
div#&lt;span class=&quot;kw2&quot;&gt;content&lt;/span&gt; a&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;href &lt;span class=&quot;sy0&quot;&gt;^=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;mailto:&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.link-mailto&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;co2&quot;&gt;static/3rd/vector/mail-icon.png&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;center&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;right&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;no-repeat&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;13px&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Page Updated: 19/04/26 16:02 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dokuwiki&amp;amp;do=showtag&amp;amp;tag=dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;tag:dokuwiki&quot; rel=&quot;tag&quot;&gt;dokuwiki&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Vector Interwiki Icons&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vector_interwiki_icons&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:29,&amp;quot;secid&amp;quot;:31,&amp;quot;range&amp;quot;:&amp;quot;20447-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 19 Apr 2026 15:02:31 +0000</pubDate>
        </item>
        <item>
            <title>QSO Logging</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:qso_logging</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:start&quot; data-wiki-id=&quot;public:radio:topics:start&quot;&gt;Radio Topics&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;qso_logging&quot;&gt;QSO Logging&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; 2023 Logging setup &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;QSO Logging&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;qso_logging&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-69&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;paper_logbook&quot;&gt;Paper Logbook&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I&amp;#039;ve always (when I remember) used a Paper Logbook for CW and SSB contacts. I&amp;#039;m on the third book after starting the 1st one in March 1983. 
&lt;/p&gt;

&lt;p&gt;
I usually don&amp;#039;t (but sometimes do) log Digimode QSOs on paper, as fldigi has its own ADIF logbook. However I&amp;#039;ve moved/installed/upgraded/deleted various fldigi installations on so many different PCs that I&amp;#039;ve actually lost all the logs anyway. I&amp;#039;ve recently started logging &lt;strong&gt;all&lt;/strong&gt; QSOs in the paper logbook. There&amp;#039;s no chance of “accidentally deleting” a real, paper logbook, after all.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;update_july_2023&quot;&gt;Update July 2023&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I initially started to make notes of each day&amp;#039;s activity and QSOs here, in the wiki&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; This became a chore, too many separate things to do during/after a QSO&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I ditched the wiki-diary idea but want to have more of a record of QSOs, and other notes on condx etc. than a simple one line entry in the logbook&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I started keeping a paper “journal” - basically a more carefully created scratch-pad - with entries being done &lt;strong&gt;during&lt;/strong&gt; the QSO - my notes done at the time.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The left hand page of the spread is a scribble/rough notes area and the right hand page of the spread has notes of activity, CQs made, CQs replied to, QSOs, callsigns, propagation data (SFI, A, K etc), beacons heard, anything really.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I still add an entry to both paper logbook and Xlog, but they don&amp;#039;t need too much additional detail, as it&amp;#039;s all in the “journal”&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;group wrap__dark plugin_wrap&quot;&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_column wrap_half wrap__dark plugin_wrap&quot;&gt;
&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Aqso_logging&amp;amp;media=public:radio:active:journal1.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:active:journal1.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=500&amp;amp;tok=ecdab3&amp;amp;media=public:radio:active:journal1.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Aqso_logging&amp;amp;media=public:radio:active:journal2.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:active:journal2.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=500&amp;amp;tok=6010b6&amp;amp;media=public:radio:active:journal2.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_column wrap_half wrap__dark plugin_wrap&quot;&gt;
&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Aqso_logging&amp;amp;media=public:radio:active:journal3.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:active:journal3.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=500&amp;amp;tok=f2ca1b&amp;amp;media=public:radio:active:journal3.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Aqso_logging&amp;amp;media=public:radio:active:journal4.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:active:journal4.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=500&amp;amp;tok=969106&amp;amp;media=public:radio:active:journal4.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Paper Logbook&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;paper_logbook&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;70-1759&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;electronic_logs&quot;&gt;Electronic Logs&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I&amp;#039;ve tried various PC based log systems over the years. A few years ago I had a major project to add all the old data from my paper logs into an electronic log - I think I used “logger32” on a windows PC. I started from August 2003, the date I re-activated my dormant interest in amateur radio, and I built my Elecraft K1. 
&lt;/p&gt;

&lt;p&gt;
I count this as “day zero” of my current radio incarnation.
&lt;/p&gt;

&lt;p&gt;
I could then export the ADIF file and could use it to “pre-populate” any new log system I fancied trying.
&lt;/p&gt;

&lt;p&gt;
I now use &lt;strong&gt;xlog&lt;/strong&gt; on my shack&amp;#039;s old Linux laptop. It has all the QSO data from August 2003 to the present (except most Digimode QSOs) and I continue to use &lt;strong&gt;xlog&lt;/strong&gt; in parallel with a good old fashioned paper logbook.
&lt;/p&gt;

&lt;p&gt;
I have also discovered that fldigi will automatically add each logged QSO to Xlog, if they are running on the same machine, which means I can now ensure my digimode QSOs are recorded alongside my CW and SSB QSOs.
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteclassic&quot;&gt;As of August 26th 2023 I no longer keep an electronic log. 
&lt;p&gt;
I have ceased LOTW uploads. QSLs are now &lt;strong&gt;direct only&lt;/strong&gt; if anyone wants/needs confirmation of a QSO 
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Electronic Logs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;electronic_logs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;1760-2894&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;lotw&quot;&gt;LOTW&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;del&gt;While I was adding all my historical QSO data to an electronic log I decided to “join” the ARRL Logbook Of The World and add my QSO data. I did it in various stages, but I think I&amp;#039;ve now got all my QSO records uploaded to LOTW. This is mainly to assist others in their paper chasing goals, as I&amp;#039;m not generally interested in getting QSLs in order to claim awards (I&amp;#039;ve &lt;em&gt;only&lt;/em&gt; got 84 DXCC “confirmed” on LOTW for “Mixed”, with 65 in Phone and 65 in CW). If my uploads allow other people to reach targets, without me needing to write and post physical QSL cards, then it&amp;#039;s easy enough to oblige with LOTW.

I had to download the sourcecode and compile the latest version of TQSL from the ARRL website to run on Linux. I forget how I got the necessary certificates from ARRL…. &lt;/del&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;LOTW&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lotw&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;2895-3701&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;club_log&quot;&gt;Club Log&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;del&gt;I created a ClubLog account and I also upload my ADIF exports at regular intervals. I embed the “last 30” QSOs on my qrz.com page.&lt;/del&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;update_july_20231&quot;&gt;Update July 2023&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; I decided it&amp;#039;s too cumbersome, and with no obvious benefit, to upload ADIF files to ClubLog as well as to LOTW&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; ClubLog has no purpose, really, for me at the moment&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;update_august_28_2023&quot;&gt;Update August 28 2023&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; I have decided to drop &lt;strong&gt;ALL&lt;/strong&gt; computer logging&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; this means no LOTW either&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I want a simpler radio shack, without reliance on computer for logging or any other purpose.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Logging :  paper log book&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Notes : on paper in separate “diary” made during QSO - these can be dated and kept as a reference&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Notes on radio setup, antennas, beacons etc., solar conditions etc. are in the same “diary” - as a record of day to day activity alongside any QSOs etc.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; No RBN checking, no QRZ.COM checking.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Re-start card-index of stations worked, if not too time-consuming?&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Club Log&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;club_log&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;3702-5340&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;workflow&quot;&gt;Workflow&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;del&gt;start flrig &amp;amp; ensure correct communication with IC-7200&lt;/del&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;del&gt;start fldigi &amp;amp; ensure it controls the IC-7200 via flrig&lt;/del&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;del&gt;start xlog &amp;amp; ensure it shows the correct radio frequency (when the freq. log button is pressed)&lt;/del&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; have QSOs  in &lt;del&gt;fldigi or&lt;/del&gt; CW and log in paper logbook &lt;del&gt;as appropriate&lt;/del&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;del&gt;export log ADIF file from xlog - selecting the latest QSO numbers, rather than the whole log&lt;/del&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;del&gt;use TQSL to sign and upload this latest ADIF export to my LOTW account&amp;lt;?del&amp;gt;
  * &amp;lt;del&amp;gt;use the ClubLog website to upload this latest ADIF export to my CLubLog account&lt;/del&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 19/06/23 12:55&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Workflow&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;workflow&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;5341-6043&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;6044-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 18:15:51 +0000</pubDate>
        </item>
        <item>
            <title>CA65 Setup</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:6502:ca65_setup</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:6502:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:6502:start&quot; data-wiki-id=&quot;public:computers:archive:6502:start&quot;&gt;6502 Project&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ca65_setup&quot;&gt;CA65 Setup&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Using CA65 in place of VASM &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CA65 Setup&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ca65_setup&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-77&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;support_files&quot;&gt;Support Files&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; firmware.cfg&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;MEMORY
{
# Zero page
  ZP: start = $00, size = $100, type = rw, define = yes;
  RAM: start = $200, size = $3dff define=yes;
  ROM:       start=$8000, size=$8000, type=ro, define=yes, fill=yes,   fillval=$00, file=%O;
}

SEGMENTS
{
  ZEROPAGE: load = ZP,             type = zp;
  BSS:        load=RAM,       type=bss, define=yes;
  
  CODE:      load=ROM,       type=ro,  define=yes;
  VECTORS:   load=ROM,       type=ro,  define=yes,   offset=$7ffa, optional=yes;
}&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; cc65.rules.mk&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code makefile&quot;&gt;include /home/gm4slv/6502/ca65src/tools.mk
&amp;nbsp;
BUILD_FOLDER=../build
TEMP_FOLDER=$(BUILD_FOLDER)/$(ROM_NAME)
ROM_FILE=$(BUILD_FOLDER)/$(ROM_NAME).bin
MAP_FILE=$(TEMP_FOLDER)/$(ROM_NAME).map
&amp;nbsp;
ASM_OBJECTS=$(ASM_SOURCES:%.s=$(TEMP_FOLDER)/%.o)
&amp;nbsp;
# Compile assembler sources
$(TEMP_FOLDER)/%.o: %.s
	@$(MKDIR_BINARY) $(MKDIR_FLAGS) $(TEMP_FOLDER)
	$(CA65_BINARY) $(CA65_FLAGS) -o $@ -l $(@:.o=.lst) $&amp;lt;
&amp;nbsp;
# Link ROM image
$(ROM_FILE): $(ASM_OBJECTS) $(FIRMWARE_CFG)
	@$(MKDIR_BINARY) $(MKDIR_FLAGS) $(BUILD_FOLDER)
	$(LD65_BINARY) $(LD65_FLAGS) -C $(FIRMWARE_CFG) -o $@ -m $(MAP_FILE) $(ASM_OBJECTS)
&amp;nbsp;
# Default target
all: $(ROM_FILE)
&amp;nbsp;
# Build and dump output
test: $(ROM_FILE)
	$(HEXDUMP_BINARY) $(HEXDUMP_FLAGS) $&amp;lt;
	$(MD5_BINARY) $&amp;lt;
&amp;nbsp;
# Clean build artifacts
clean:
	$(RM_BINARY) -f $(ROM_FILE) \
	$(MAP_FILE) \
	$(ASM_OBJECTS) \
	$(ASM_OBJECTS:%.o=%.lst)&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; tools.mk&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;# cc65 utilities used in this example
CA65_BINARY=ca65
CC65_BINARY=cc65
LD65_BINARY=ld65
AR65_BINARY=ar65

VASM_BINARY=vasm6502_oldstyle

CPU_FLAG=--cpu 65C02
ARCH_FLAG=-t none

CC65_FLAGS=$(CPU_FLAG) $(ARCH_FLAG) $(EXTRA_FLAGS) -O
CA65_FLAGS=$(CPU_FLAG) $(EXTRA_FLAGS)
LD65_FLAGS=
AR65_FLAGS=r

VASM_FLAGS=-Fbin -dotdir

# Hexdump is used for &amp;quot;testing&amp;quot; the ROM
HEXDUMP_BINARY=hexdump
HEXDUMP_FLAGS=-C

# Checksum generator
MD5_BINARY=md5sum

# Standard utilities (rm/mkdir)
RM_BINARY=rm
RM_FLAGS=-f
MKDIR_BINARY=mkdir
MKDIR_FLAGS=-p
CP_BINARY=cp
CP_FLAGS=-f
&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; project &lt;code&gt;makefile&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;CONF_DIR=/home/gm4slv/6502/ca65src

ROM_NAME=monitor_dev

ASM_SOURCES=monitor_dev.s

FIRMWARE_CFG=$(CONF_DIR)/firmware.cfg

include $(CONF_DIR)/cc65.rules.mk
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Support Files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;support_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;78-2289&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;a_typical_project&quot;&gt;A typical project&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;A typical project&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;a_typical_project&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2290-2320&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;monitor_devs_setup&quot;&gt;monitor_dev.s setup&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put the asm source for the project in a folder (&lt;code&gt;/home/gm4slv/6502/ca65src/src/monitor/monitor_dev.s&lt;/code&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put the &lt;code&gt;makefile&lt;/code&gt; in the same folder&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; put any source files to be included in the assembly process in the &lt;code&gt;includes&lt;/code&gt; folder&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/home/gm4slv/6502/ca65src/src/includes/rtc.inc&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/home/gm4slv/6502/ca65src/src/includes/ioports.inc&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; make a &lt;code&gt;build&lt;/code&gt; main folder &lt;code&gt;/home/gm4slv/6502/ca65src/build/&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The general tree:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;/home/gm4slv/6502/ca65src/&lt;/code&gt; = base folder for ca65 projects aka &lt;code&gt;$CA65SRC&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; config files : firmware.cfg, cc65.rules.mk, tools.mk are in &lt;code&gt;$(CA65SRC)&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; sources directory : &lt;code&gt;src&lt;/code&gt; is in &lt;code&gt;$(CA65SRC)&lt;/code&gt; → &lt;code&gt;$(CA65SRC)/src&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; inside sources directory are &lt;code&gt;build&lt;/code&gt;, &lt;code&gt;includes&lt;/code&gt; and the individual project source directories. &lt;code&gt;$(CA65SRC)/src/build/&lt;/code&gt;, &lt;code&gt;$(CA65SRC)/src/includes/&lt;/code&gt; and (eg) &lt;code&gt;$(CA65SRC)/src/monitor/&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; inside each &lt;code&gt;project&lt;/code&gt; source directory are the asm source file eg &lt;code&gt;monitor_dev.s&lt;/code&gt; and a specific &lt;code&gt;makefile&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
To include sources from the &lt;code&gt;includes&lt;/code&gt; directory first define the variables, then the includes
:
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;variables&quot;&gt;Variables&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
define &lt;code&gt;zeropage&lt;/code&gt; variables:
&lt;/p&gt;
&lt;pre class=&quot;code asm&quot;&gt;&lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;zeropage
&amp;nbsp;
DUMP_POINTER&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;     &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
FLAGS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
TOGGLE_TIME&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;      &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
CLOCK_LAST&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;       &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
MESSAGE_POINTER&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
TICKS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
CENTISEC&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;         &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
HUNDRED_HRS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;      &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
TEN_HRS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
HRS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;              &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
TEN_MINUTES&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;      &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
MINUTES&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
TEN_SECONDS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;      &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
SECONDS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
MEM_POINTER&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;      &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
and define the other &lt;code&gt;.bss&lt;/code&gt; variables:
&lt;/p&gt;
&lt;pre class=&quot;code asm&quot;&gt;&lt;span class=&quot;kw5&quot;&gt;.bss&lt;/span&gt;
&amp;nbsp;
INKEY&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
ASCII&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;             &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
TENS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;             &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
HUNDREDS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;         &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
HEX&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;              &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
HEXB&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;             &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
TEMP&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;             &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
TEMP2&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Then the &lt;code&gt;includes&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code asm&quot;&gt;  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;include &lt;span class=&quot;st0&quot;&gt;&amp;quot;../includes/ioports.inc&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;include &lt;span class=&quot;st0&quot;&gt;&amp;quot;../includes/lcd.inc&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;include &lt;span class=&quot;st0&quot;&gt;&amp;quot;../includes/getkey.inc&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;include &lt;span class=&quot;st0&quot;&gt;&amp;quot;../includes/functions.inc&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;include &lt;span class=&quot;st0&quot;&gt;&amp;quot;../includes/rtc.inc&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
make sure the &lt;code&gt;include&lt;/code&gt; files have appropriate &lt;code&gt;.code&lt;/code&gt; directive to put it in the right place when its all assembled together:
&lt;/p&gt;

&lt;p&gt;
e.g. in &lt;code&gt;functions.inc&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code asm&quot;&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;code&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;          convert a binary number from Accumulator, in range 00000000 -&amp;gt; 11111111 ($00 to $FF)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;          to its HEX number encode as ASCII -  using a simple lookup table and print it on LCD&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
bintohex&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  pha
  lsr
  lsr
  lsr
  lsr
  tax
  lda hexascii&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;x
  jsr print_char
  pla
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0f&lt;/span&gt;
  tax
  lda hexascii&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;x
  jsr print_char
  rts
&amp;nbsp;
hexascii&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0123456789ABCDEF&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;monitor_dev.s setup&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;monitor_devs_setup&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2321-5090&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;monitor_devs_source_code&quot;&gt;monitor_dev.s source code&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_965e507a710981562292fc5a230a5c5c_36&quot;&gt;monitor_dev.s &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_965e507a710981562292fc5a230a5c5c_36&quot;&gt;&lt;pre class=&quot;code asm&quot;&gt;&amp;nbsp;
&lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;localchar &lt;span class=&quot;st0&quot;&gt;&#039;@&#039;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;.SEGMENT &amp;quot;ZEROPAGE&amp;quot;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;zeropage
&amp;nbsp;
DUMP_POINTER&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;     &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
FLAGS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
TOGGLE_TIME&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;      &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
CLOCK_LAST&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;       &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
MESSAGE_POINTER&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
TICKS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
CENTISEC&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;         &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
HUNDRED_HRS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;      &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
TEN_HRS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
HRS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;              &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
TEN_MINUTES&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;      &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
MINUTES&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
TEN_SECONDS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;      &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
SECONDS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
MEM_POINTER&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;      &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;.SEGMENT &amp;quot;BSS&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw5&quot;&gt;.bss&lt;/span&gt;
&amp;nbsp;
INKEY&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
ASCII&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;             &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
TENS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;             &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
HUNDREDS&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;         &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
HEX&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;              &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
HEXB&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;             &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
TEMP&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;             &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
TEMP2&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;            &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;res &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;include &lt;span class=&quot;st0&quot;&gt;&amp;quot;../includes/ioports.inc&amp;quot;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;include &lt;span class=&quot;st0&quot;&gt;&amp;quot;../includes/lcd.inc&amp;quot;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;include &lt;span class=&quot;st0&quot;&gt;&amp;quot;../includes/getkey.inc&amp;quot;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;include &lt;span class=&quot;st0&quot;&gt;&amp;quot;../includes/functions.inc&amp;quot;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;include &lt;span class=&quot;st0&quot;&gt;&amp;quot;../includes/rtc.inc&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;code&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
reset&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  ldx #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;ff
  txs
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;cli&lt;/span&gt;      &lt;span class=&quot;co1&quot;&gt;; interrupts ON&lt;/span&gt;
&amp;nbsp;
  jsr via_1_init &lt;span class=&quot;co1&quot;&gt;; set-up VIA_1 for LCD/Keypad &lt;/span&gt;
  jsr lcd_init &lt;span class=&quot;co1&quot;&gt;; set-up 4-bit mode &lt;/span&gt;
  jsr lcd_start &lt;span class=&quot;co1&quot;&gt;; set-up various features of lcd &lt;/span&gt;
&amp;nbsp;
init_variables&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  stz TICKS
  stz TICKS &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  stz TICKS &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
  stz TICKS &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
  stz DUMP_POINTER
  stz DUMP_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  stz MESSAGE_POINTER
  stz MESSAGE_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  stz TOGGLE_TIME
  stz CLOCK_LAST
  stz CENTISEC
  stz FLAGS
  stz SECONDS
  stz TEN_SECONDS
  stz MINUTES
  stz HRS
  stz TEN_HRS
  stz TEN_MINUTES
  stz HUNDRED_HRS
  stz TEMP
  stz TEMP2
  stz TENS  
  stz MEM_POINTER
  stz MEM_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;; test then clear RAM between &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; $0200 - $3FFF - avoids the ZP and STACK areas&lt;/span&gt;
&amp;nbsp;
ram_clear&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;02&lt;/span&gt;            &lt;span class=&quot;co1&quot;&gt;; start at $0200&lt;/span&gt;
  sta MEM_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  ldy #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00&lt;/span&gt;
loop_ram&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;AA
  sta &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MEM_POINTER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;y
  lda #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;FF
  lda &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MEM_POINTER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;y
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;AA
  bne mem_fail_1
  lda #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt;
  sta &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MEM_POINTER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;y
  lda #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;FF
  lda &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MEM_POINTER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;y
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt;
  bne mem_fail_2
  lda #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00&lt;/span&gt;
  sta &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MEM_POINTER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;y
  iny
  beq next_page
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; loop_ram
next_page&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda MEM_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;
  beq done_ram
  sta MEM_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; loop_ram
&amp;nbsp;
&amp;nbsp;
done_ram&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  lda #&amp;lt;mem_pass_msg
  sta MESSAGE_POINTER
  lda #&amp;gt;mem_pass_msg
  sta MESSAGE_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  jsr print 
  smb5 FLAGS
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;loop&lt;/span&gt;
&amp;nbsp;
mem_fail_1&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&amp;lt;mem_fail_msg_1
  sta MESSAGE_POINTER
  lda #&amp;gt;mem_fail_msg_1
  sta MESSAGE_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  jsr print
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;loop&lt;/span&gt;
&amp;nbsp;
mem_fail_2&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&amp;lt;mem_fail_msg_2
  sta MESSAGE_POINTER
  lda #&amp;gt;mem_fail_msg_2
  sta MESSAGE_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  jsr print
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;loop&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;; go straight to MONITOR at startup&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  lda #&amp;lt;splash&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  sta MESSAGE_POINTER&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  lda #&amp;gt;splash&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  sta MESSAGE_POINTER + 1&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  jsr new_address&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;; main loop&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;loop&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  wai
  jsr check_flags
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;loop&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;; FUNCTIONS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
check_flags&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  bbs0 FLAGS&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt; update_block_address
  bbs5 FLAGS&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt; clock_time
  &lt;span class=&quot;co1&quot;&gt;; check other flags... other actions....&lt;/span&gt;
  rts
&amp;nbsp;
update_block_address&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  sec
  lda TICKS
  sbc TOGGLE_TIME
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;
  bcc exit_update_block
  jsr block_address
  lda TICKS
  sta TOGGLE_TIME
&amp;nbsp;
exit_update_block&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  rts
&amp;nbsp;
&amp;nbsp;
clock_time&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  sec
  lda TICKS
  sbc CLOCK_LAST
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;
  bcc exit_clock
&amp;nbsp;
  jsr lcd_cursor_off
&amp;nbsp;
  jsr lcd_home
&amp;nbsp;
  lda HUNDRED_HRS
  jsr bintoascii
  lda TEN_HRS
  jsr bintoascii
  lda HRS
  jsr bintoascii
  lda #&lt;span class=&quot;st0&quot;&gt;&#039;:&#039;&lt;/span&gt;
  jsr print_char
  lda TEN_MINUTES
  jsr bintoascii
  lda MINUTES
  jsr bintoascii
  lda #&lt;span class=&quot;st0&quot;&gt;&#039;:&#039;&lt;/span&gt;
  jsr print_char
  lda TEN_SECONDS
  jsr bintoascii
  lda SECONDS
  jsr bintoascii
  lda #&lt;span class=&quot;st0&quot;&gt;&#039; &#039;&lt;/span&gt;
  jsr print_char
  lda TICKS
  sta CLOCK_LAST
exit_clock&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  rts
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;      update screen when new memory location is selected&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
new_address&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  jsr lcd_clear
&amp;nbsp;
  jsr lcd_cursor_on
&amp;nbsp;
&amp;nbsp;
print_address&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;st0&quot;&gt;&#039;$&#039;&lt;/span&gt;
  jsr print_char
  lda DUMP_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  jsr bintohex
  lda DUMP_POINTER
  jsr bintohex
&amp;nbsp;
  lda #&lt;span class=&quot;st0&quot;&gt;&#039; &#039;&lt;/span&gt;
  jsr print_char
&amp;nbsp;
print_data&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  ldy #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00&lt;/span&gt;
&amp;nbsp;
  lda &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DUMP_POINTER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;y
  jsr bintohex
  lda #&lt;span class=&quot;st0&quot;&gt;&#039; &#039;&lt;/span&gt;
  jsr print_char
  lda &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DUMP_POINTER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;y
  jsr print_char
&amp;nbsp;
message_end&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  jsr print   &lt;span class=&quot;co1&quot;&gt;; add second line (cursor) after re-writing the top line&lt;/span&gt;
  rts
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; display 8 bytes of data for a &amp;quot;block&amp;quot; of memory&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
block_address&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  jsr lcd_clear
&amp;nbsp;
  ldy #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00&lt;/span&gt;
&amp;nbsp;
print_block_address&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;st0&quot;&gt;&#039;$&#039;&lt;/span&gt;
  jsr print_char
  lda DUMP_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  jsr bintohex
  lda DUMP_POINTER
  jsr bintohex
&amp;nbsp;
  jsr lcd_line_2
&amp;nbsp;
print_block&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  lda &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DUMP_POINTER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;y
  jsr bintohex
  lda &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DUMP_POINTER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;y
  iny
  cpy #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;08&lt;/span&gt;
  bne print_block
&amp;nbsp;
&amp;nbsp;
block_message_end&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  rts
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; re-draw line 2 cursor&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
print&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  jsr lcd_line_2
&amp;nbsp;
  ldy #&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
line1&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;MESSAGE_POINTER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;y
  beq end_print
  jsr print_char
  iny
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; line1
&amp;nbsp;
end_print&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  rts
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;      Monitor function - decrement the selected address &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
decrement_address&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  sec
  lda DUMP_POINTER
  sbc #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;01&lt;/span&gt;
  sta DUMP_POINTER
  sta &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt;
  lda DUMP_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  sbc #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00&lt;/span&gt;
  sta DUMP_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  sta &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
dec_ok&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  rts
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;      Monitor function - increment the selected address &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
increment_address&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;clc&lt;/span&gt;
  lda DUMP_POINTER
  &lt;span class=&quot;kw1&quot;&gt;adc&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;01&lt;/span&gt;
  sta DUMP_POINTER
  sta &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt;
  bcc inc_ok
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt; DUMP_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  lda DUMP_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  sta &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
inc_ok&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  rts
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;      Monitor function - increment the selected block of  addresses by 8 &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
increment_block&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;clc&lt;/span&gt;
  lda DUMP_POINTER
  &lt;span class=&quot;kw1&quot;&gt;adc&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;08&lt;/span&gt;
  sta DUMP_POINTER
  sta &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt;
  lda DUMP_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;adc&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00&lt;/span&gt;
  sta DUMP_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  sta &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  rts
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;      Monitor function - decrement the selected block of  addresses by 8 &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
decrement_block&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  sec
  lda DUMP_POINTER
  sbc #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;08&lt;/span&gt;
  sta DUMP_POINTER
  sta &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt;
  lda DUMP_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  sbc #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00&lt;/span&gt;
  sta DUMP_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  sta &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  rts
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;          use last 4 entered ASCII characters from the keypad and convert &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;          them to TWO 8-bit binary bytes in RAM&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
ascii_byte&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  lda ASCII &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
  jsr ascii_bin
  &lt;span class=&quot;kw1&quot;&gt;clc&lt;/span&gt;
  asl
  asl
  asl
  asl
  sta &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt;
&amp;nbsp;
  lda ASCII
&amp;nbsp;
  jsr ascii_bin
  ora &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt;
  sta &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt;
&amp;nbsp;
  lda ASCII &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
  jsr ascii_bin
  &lt;span class=&quot;kw1&quot;&gt;clc&lt;/span&gt;
  asl
  asl
  asl
  asl
  sta &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
  lda ASCII &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
&amp;nbsp;
  jsr ascii_bin
  ora &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  sta &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  rts
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;    toggle the display/update of Clock on each appropriate keypress&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
show_clock&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  bbs5 FLAGS&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt; reset_bit5
  smb5 FLAGS
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_show_clock
&amp;nbsp;
reset_bit5&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  rmb5 FLAGS
&amp;nbsp;
exit_show_clock&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  rts
  &lt;span class=&quot;co1&quot;&gt;;jmp debounce&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;    toggle the automatic update view of the &amp;quot;8-byte memory block&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
show_block&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  bbs0 FLAGS&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt; reset_bit0
  smb0 FLAGS
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_show_block
&amp;nbsp;
reset_bit0&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  rmb0 FLAGS
&amp;nbsp;
exit_show_block&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  rts
  &lt;span class=&quot;co1&quot;&gt;;jmp debounce&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;debounce:&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  ldx #$ff&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  ldy #$ff&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;delay:&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  nop&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  dex&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  bne delay&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  dey&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  bne delay&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  rts  &lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;; INTERRUPT HANDLERS ;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;      CB1 : reset &amp;amp; restart timer&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
cb1_handler&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  stz HUNDRED_HRS
  stz TEN_HRS
  stz TEN_MINUTES
  stz TEN_SECONDS
  stz HRS
  stz MINUTES
  stz SECONDS
&amp;nbsp;
  smb5 FLAGS
&amp;nbsp;
  rts
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;     CB2 : lap-time pause timer&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
cb2_handler&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  jsr show_clock
  rts
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;                    MONITOR / KEYPAD &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
keypad_handler&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  jsr get_key     &lt;span class=&quot;co1&quot;&gt;; READs from PORTA which also re-sets VIA&#039;s Interrupt flag&lt;/span&gt;
  sta INKEY       &lt;span class=&quot;co1&quot;&gt;; put the ASCII value of input into RAM ( $00 ) &lt;/span&gt;
&amp;nbsp;
  lda PORTB_1       &lt;span class=&quot;co1&quot;&gt;; check for SHIFT/INSTRUCTION button&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%10000000&lt;/span&gt;
  beq check_keypress &lt;span class=&quot;co1&quot;&gt;; done this way to get around the limit in size of branch jumps....&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; handle_new_char
&amp;nbsp;
check_keypress&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda INKEY       
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;; choose action of &amp;quot;SHIFTed&amp;quot; key-press&lt;/span&gt;
check_a&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;st0&quot;&gt;&#039;A&#039;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;; move up one memory address and display contents&lt;/span&gt;
  bne check_b     
  jsr increment_address
  jsr new_address
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_key_irq
&amp;nbsp;
check_b&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;st0&quot;&gt;&#039;B&#039;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;; move down one memory address and display contents&lt;/span&gt;
  bne check_c
  jsr decrement_address
  jsr new_address
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_key_irq
&amp;nbsp;
check_c&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;st0&quot;&gt;&#039;C&#039;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;; return to MONITOR&lt;/span&gt;
  bne check_d
  rmb5 FLAGS
  jsr lcd_clear
  lda #&amp;lt;splash
  sta MESSAGE_POINTER
  lda #&amp;gt;splash
  sta MESSAGE_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
  jsr new_address
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_key_irq
&amp;nbsp;
check_d&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;st0&quot;&gt;&#039;D&#039;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;; move monitor to entered 4-digit memory address&lt;/span&gt;
  bne check_e
  lda &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt;
  sta DUMP_POINTER
  lda &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  sta DUMP_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  jsr new_address
  jsr print
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_key_irq
&amp;nbsp;
check_e&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;st0&quot;&gt;&#039;E&#039;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;; insert (POKE) byte of data in to current memory address, then increment to next address&lt;/span&gt;
  bne check_f
  lda &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt;
  ldy #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00&lt;/span&gt;
  sta &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DUMP_POINTER&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;y
  jsr increment_address
  jsr new_address
  jsr print
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_key_irq
&amp;nbsp;
check_f&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;st0&quot;&gt;&#039;F&#039;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;; show 8-byte wide block of memory&lt;/span&gt;
  bne check_1
  ldy #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00&lt;/span&gt;
  lda &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt;
  sta DUMP_POINTER
  lda &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  sta DUMP_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  jsr block_address
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_key_irq
&amp;nbsp;
check_1&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;st0&quot;&gt;&#039;1&#039;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;; show/auto-update clock&lt;/span&gt;
  bne check_3
  jsr lcd_clear
  lda #&amp;lt;emt
  sta MESSAGE_POINTER
  lda #&amp;gt;emt
  sta MESSAGE_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  jsr print
  smb5 FLAGS
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;;jsr show_clock&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_key_irq
&amp;nbsp;
check_3&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;st0&quot;&gt;&#039;3&#039;&lt;/span&gt;
  bne check_6
  ldy #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00&lt;/span&gt;
  jsr increment_block
  jsr block_address
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_key_irq
&amp;nbsp;
check_6&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;st0&quot;&gt;&#039;6&#039;&lt;/span&gt;
  bne check_9
  ldy #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00&lt;/span&gt;
  jsr decrement_block
  jsr block_address
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_key_irq
&amp;nbsp;
check_9&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;st0&quot;&gt;&#039;9&#039;&lt;/span&gt;
  bne check_4
  jsr show_block
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_key_irq
&amp;nbsp;
check_4&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;st0&quot;&gt;&#039;4&#039;&lt;/span&gt;
  bne check_5
  lda &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt;
  sta HEXB
  lda &lt;span class=&quot;kw6&quot;&gt;BYTE&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  sta HEXB &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  jsr byte_to_hex
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_key_irq
&amp;nbsp;
check_5&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;st0&quot;&gt;&#039;5&#039;&lt;/span&gt;
  bne exit_key_irq
  jsr &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;3F00
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_key_irq
&amp;nbsp;
&amp;nbsp;
handle_new_char&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda ASCII &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
  sta ASCII &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
  lda ASCII &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  sta ASCII &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
  lda ASCII
  sta ASCII &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  lda INKEY       &lt;span class=&quot;co1&quot;&gt;; get the new ASCII keypress value and... &lt;/span&gt;
  sta ASCII
  jsr print_char  &lt;span class=&quot;co1&quot;&gt;; and print it on LCD&lt;/span&gt;
&amp;nbsp;
  jsr ascii_byte  &lt;span class=&quot;co1&quot;&gt;; convert the rolling 4-byte ASCII character data into two binary bytes&lt;/span&gt;
&amp;nbsp;
exit_key_irq&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
  jsr scan  &lt;span class=&quot;co1&quot;&gt;; re-enable keypad&lt;/span&gt;
&amp;nbsp;
  rts
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&amp;nbsp;
nmi&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  rti
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;    interrupt is triggered by HIGH edge on VIA CA1 pin&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;     PORTA low nibble (keypad columns) inputs are diode ORed to CA1&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
irq&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;; put registers on the stack while handling the IRQ&lt;/span&gt;
  pha
  phx
  phy
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;  find responsible hardware&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;  Is it VIA_1?&lt;/span&gt;
&amp;nbsp;
  lda IFR_1   &lt;span class=&quot;co1&quot;&gt;; if IFR_1 has Bit7 set (ie sign=NEGATIVE) then it IS the source of the interrupt&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;bpl&lt;/span&gt; next_device &lt;span class=&quot;co1&quot;&gt;; if it&#039;s not set (ie sign=POSITIVE) then branch to test the next possible device&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; IFR Flags&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; B7  B6  B5  B4  B3  B2  B1  B0&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; IRQ TI1 TI2 CB1 CB2 SR CA1 CA2&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; Interrupt source is found by sequentially shifting IFR bit left to put bit-of-interest into the CARRY place&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; and then branching based on whether CARRY is SET or not&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; Only add tests for IRQ sources in use, and adjust the ASLs in each test as necessary&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&amp;nbsp;
test_timer1&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  asl           &lt;span class=&quot;co1&quot;&gt;; shift IFR left twice puts the TI1 bit into CARRY....&lt;/span&gt;
  asl
  bcc test_cb1  &lt;span class=&quot;co1&quot;&gt;; carry clear = next test&lt;/span&gt;
  bit T1CL_1      &lt;span class=&quot;co1&quot;&gt;; clear not clear = handle the TIMER interrupt&lt;/span&gt;
  jsr rtc
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_irq
&amp;nbsp;
test_cb1&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  asl
  asl
  bcc test_cb2
  bit PORTB_1
  jsr cb1_handler
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_irq
&amp;nbsp;
test_cb2&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  asl
  bcc test_ca1
  bit PORTB_1
  jsr cb2_handler
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_irq
&amp;nbsp;
test_ca1&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  asl           &lt;span class=&quot;co1&quot;&gt;; shift CA1 bit into the CARRY bit &amp;amp; test&lt;/span&gt;
  asl
  bcc exit_irq        &lt;span class=&quot;co1&quot;&gt;; carry clear = leave&lt;/span&gt;
  jsr keypad_handler  &lt;span class=&quot;co1&quot;&gt;; carry not clear = handle the CA1 interrupt (keypad)&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_irq
&amp;nbsp;
&amp;nbsp;
next_device&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
exit_irq&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  ply
  plx
  pla
&amp;nbsp;
&amp;nbsp;
  rti
&amp;nbsp;
emt&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;asciiz &lt;span class=&quot;st0&quot;&gt;&amp;quot;hhh mm ss  MET&amp;quot;&lt;/span&gt;
splash&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;asciiz &lt;span class=&quot;st0&quot;&gt;&amp;quot;cmon&amp;gt; &amp;quot;&lt;/span&gt;
error_message&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;asciiz &lt;span class=&quot;st0&quot;&gt;&amp;quot;Not Decimal&amp;quot;&lt;/span&gt;
mem_pass_msg&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;asciiz &lt;span class=&quot;st0&quot;&gt;&amp;quot;RAM Test Pass&amp;quot;&lt;/span&gt;
mem_fail_msg_1&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;asciiz &lt;span class=&quot;st0&quot;&gt;&amp;quot;RAM Test 1 Fail&amp;quot;&lt;/span&gt;
mem_fail_msg_2&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;asciiz &lt;span class=&quot;st0&quot;&gt;&amp;quot;RAM Test 2 Fail&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;; Reset/IRQ vectors&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;segment&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;VECTORS&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;word&lt;/span&gt; nmi
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;word&lt;/span&gt; reset
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;word&lt;/span&gt; irq&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_965e507a710981562292fc5a230a5c5c_37&quot;&gt;ioports.inc &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_965e507a710981562292fc5a230a5c5c_37&quot;&gt;&lt;pre class=&quot;code asm&quot;&gt;  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;code&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;; VIA_1 Port addresses&lt;/span&gt;
VIA_1     = &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6000&lt;/span&gt;
PORTB_1   = VIA_1
PORTA_1   = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
DDRB_1    = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
DDRA_1    = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
T1CL_1    = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
T1CH_1    = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;
T1LL_1    = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;
T1LH_1    = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;
T2CL_1    = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;
T2CH_1    = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;
SR_1      = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
ACR_1     = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;
PCR_1     = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;
IFR_1     = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;
IER_1     = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;
PORTA_NO_HS_1 = VIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;; VIA_2 Port addresses&lt;/span&gt;
VIA_2     = &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5000&lt;/span&gt;
PORTB_2   = VIA_2
PORTA_2   = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
DDRB_2    = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
DDRA_2    = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
T1CL_2    = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
T1CH_2    = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;
T1LL_2    = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;
T1LH_2    = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;
T2CL_2    = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;
T2CH_2    = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;
SR_2      = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
ACR_2     = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;
PCR_2     = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;
IFR_2     = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;
IER_2     = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;
PORTA_NO_HS_2 = VIA_2 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;; VIA_3 Port addresses&lt;/span&gt;
VIA_3     = &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4800&lt;/span&gt;
PORTB_3   = VIA_3
PORTA_3   = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
DDRB_3    = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
DDRA_3    = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
T1CL_3    = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
T1CH_3    = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;
T1LL_3    = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;
T1LH_3    = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;
T2CL_3    = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;
T2CH_3    = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;
SR_3      = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
ACR_3     = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;
PCR_3     = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;
IFR_3     = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;
IER_3     = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;
PORTA_NO_HS_3 = VIA_3 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;; ACIA_1 Port Addresses&lt;/span&gt;
ACIA_1    = &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4400&lt;/span&gt;
S_TXRX_1  = ACIA_1      &lt;span class=&quot;co1&quot;&gt;; TXD / RXD&lt;/span&gt;
S_STA_1   = ACIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;; Status&lt;/span&gt;
S_COM_1   = ACIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;; Command&lt;/span&gt;
S_CON_1   = ACIA_1 &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;; Control&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
via_1_init&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  lda #&lt;span class=&quot;nu0&quot;&gt;%01000000&lt;/span&gt;
  sta ACR_1
  lda #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;0E
  sta T1CL_1
  lda #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;27&lt;/span&gt;
  sta T1CH_1
&amp;nbsp;
  lda #&lt;span class=&quot;nu0&quot;&gt;%11011010&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;; T1, CA1 active&lt;/span&gt;
  sta IER_1
&amp;nbsp;
  lda #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;01&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;;  CA1 active high-transition &lt;/span&gt;
  sta PCR_1
&amp;nbsp;
  lda #&lt;span class=&quot;nu0&quot;&gt;%01111111&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Set all pins on port B to output except BIT 7 which is used for &amp;quot;SHIFT/INSTRUCTION&amp;quot;  button&lt;/span&gt;
  sta DDRB_1
  lda #&lt;span class=&quot;nu0&quot;&gt;%11110000&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Set low-nibble pins on port A to input and high-nibble pins to output, for keypad&lt;/span&gt;
  sta DDRA_1
&amp;nbsp;
  rts&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_965e507a710981562292fc5a230a5c5c_38&quot;&gt;lcd.inc &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_965e507a710981562292fc5a230a5c5c_38&quot;&gt;&lt;pre class=&quot;code asm&quot;&gt;&amp;nbsp;
&amp;nbsp;
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;code&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;; LCD Command masks&lt;/span&gt;
E  = &lt;span class=&quot;nu0&quot;&gt;%01000000&lt;/span&gt;
RW = &lt;span class=&quot;nu0&quot;&gt;%00100000&lt;/span&gt;
RS = &lt;span class=&quot;nu0&quot;&gt;%00010000&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;                              LCD Functions &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
lcd_start&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;nu0&quot;&gt;%00101000&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Set 4-bit mode; 2-line display; 5x8 font&lt;/span&gt;
  jsr lcd_instruction
  jsr lcd_entry_mode
  jsr lcd_cursor_off
  jsr lcd_clear
  rts
&amp;nbsp;
lcd_entry_mode&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;nu0&quot;&gt;%00000110&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Increment and shift cursor; don&#039;t shift display&lt;/span&gt;
  jsr lcd_instruction
  rts
&amp;nbsp;
lcd_home&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;nu0&quot;&gt;%00000010&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; cursor HOME&lt;/span&gt;
  jsr lcd_instruction
  rts
&amp;nbsp;
lcd_clear&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;nu0&quot;&gt;%00000001&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Clear display&lt;/span&gt;
  jsr lcd_instruction
  rts
&amp;nbsp;
lcd_cursor_off&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;nu0&quot;&gt;%00001100&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Display on; cursor off; blink off&lt;/span&gt;
  jsr lcd_instruction
  rts
&amp;nbsp;
lcd_cursor_on&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;nu0&quot;&gt;%00001111&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Display on; cursor on; blink on&lt;/span&gt;
  jsr lcd_instruction
  rts
&amp;nbsp;
lcd_line_2&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;nu0&quot;&gt;%10101001&lt;/span&gt;
  jsr lcd_instruction
  rts
&amp;nbsp;
lcd_wait&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  pha
  lda #&lt;span class=&quot;nu0&quot;&gt;%01110000&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;; LCD data is input (don&#039;t change MSB BIT7, it has to stay ZERO for SHIFT Button input)&lt;/span&gt;
  sta DDRB_1
lcdbusy&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #RW
  sta PORTB_1
  lda #&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;RW | E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  sta PORTB_1
  lda PORTB_1     &lt;span class=&quot;co1&quot;&gt;; Read high nibble&lt;/span&gt;
  pha             &lt;span class=&quot;co1&quot;&gt;; and put on stack since it has the busy flag&lt;/span&gt;
  lda #RW
  sta PORTB_1
  lda #&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;RW | E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  sta PORTB_1
  lda PORTB_1       &lt;span class=&quot;co1&quot;&gt;; Read low nibble&lt;/span&gt;
  pla             &lt;span class=&quot;co1&quot;&gt;; Get high nibble off stack&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%00001000&lt;/span&gt;
  bne lcdbusy
&amp;nbsp;
  lda #RW
  sta PORTB_1
  lda #&lt;span class=&quot;nu0&quot;&gt;%01111111&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;; LCD data is output (don&#039;t change MSB BIT7, it has to stay ZERO for SHIFT Buttion input)&lt;/span&gt;
  sta DDRB_1
  pla
  rts
&amp;nbsp;
lcd_init&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;nu0&quot;&gt;%00000010&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Set 4-bit mode : DO ONCE AT POWER UP&lt;/span&gt;
  sta PORTB_1
  ora #E
  sta PORTB_1
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%00001111&lt;/span&gt;
  sta PORTB_1
  rts
&amp;nbsp;
lcd_instruction&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  jsr lcd_wait
  pha
  lsr
  lsr
  lsr
  lsr            &lt;span class=&quot;co1&quot;&gt;; Send high 4 bits&lt;/span&gt;
  sta PORTB_1
  ora #E         &lt;span class=&quot;co1&quot;&gt;; Set E bit to send instruction&lt;/span&gt;
  sta PORTB_1
  eor #E         &lt;span class=&quot;co1&quot;&gt;; Clear E bit&lt;/span&gt;
  sta PORTB_1
  pla
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%00001111&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Send low 4 bits&lt;/span&gt;
  sta PORTB_1
  ora #E         &lt;span class=&quot;co1&quot;&gt;; Set E bit to send instruction&lt;/span&gt;
  sta PORTB_1
  eor #E         &lt;span class=&quot;co1&quot;&gt;; Clear E bit&lt;/span&gt;
  sta PORTB_1
  rts
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;   &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;        PRINT Characters on LCD - an ASCII value in Accumulator &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;        is printed on the display&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
print_char&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  jsr lcd_wait
  pha
  lsr
  lsr
  lsr
  lsr             &lt;span class=&quot;co1&quot;&gt;; Send high 4 bits&lt;/span&gt;
  ora #RS         &lt;span class=&quot;co1&quot;&gt;; Set RS&lt;/span&gt;
  sta PORTB_1
  ora #E          &lt;span class=&quot;co1&quot;&gt;; Set E bit to send instruction&lt;/span&gt;
  sta PORTB_1
  eor #E          &lt;span class=&quot;co1&quot;&gt;; Clear E bit&lt;/span&gt;
  sta PORTB_1
  pla
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%00001111&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;; Send low 4 bits&lt;/span&gt;
  ora #RS         &lt;span class=&quot;co1&quot;&gt;; Set RS&lt;/span&gt;
  sta PORTB_1
  ora #E          &lt;span class=&quot;co1&quot;&gt;; Set E bit to send instruction&lt;/span&gt;
  sta PORTB_1
  eor #E          &lt;span class=&quot;co1&quot;&gt;; Clear E bit&lt;/span&gt;
  sta PORTB_1
  rts&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_965e507a710981562292fc5a230a5c5c_39&quot;&gt;getkey.inc &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_965e507a710981562292fc5a230a5c5c_39&quot;&gt;&lt;pre class=&quot;code asm&quot;&gt;&amp;nbsp;
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;code&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;      READ THE 4x4 keypad using  VIA_1 PORTA &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;      Accumulator holds the ASCII value of the pressed key when it returns&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
get_key&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
readKeypad&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  ldx #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;04&lt;/span&gt;        &lt;span class=&quot;co1&quot;&gt;; Row 4 - counting down&lt;/span&gt;
  ldy #&lt;span class=&quot;nu0&quot;&gt;%10000000&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;;&lt;/span&gt;
ScanRow&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  sty PORTA_1
  lda PORTA_1
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%00001111&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;; mask off keypad input - only low 4 (keypad column) bits are read&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00&lt;/span&gt;
  bne Row_Found   &lt;span class=&quot;co1&quot;&gt;; non-zero means a row output has been connected via a switch to a column input&lt;/span&gt;
  dex             &lt;span class=&quot;co1&quot;&gt;; zero means it hasn&#039;t been found, so check next row down&lt;/span&gt;
  tya
  lsr
  tay
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%00001000&lt;/span&gt;
  bne ScanRow
  lda #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;ff
  rts
Row_Found&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  stx TEMP &lt;span class=&quot;co1&quot;&gt;; store row&lt;/span&gt;
  ldy #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;ff
FindCol&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  iny
  lsr
  bcc FindCol
  tya
  asl
  asl  &lt;span class=&quot;co1&quot;&gt;; col * 4&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;clc&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;adc&lt;/span&gt; TEMP &lt;span class=&quot;co1&quot;&gt;; add row &lt;/span&gt;
  tax
  lda keypad_array&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;x
  rts
&amp;nbsp;
&amp;nbsp;
keypad_array&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;?DCBAF9630852E741&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;  set ROW keypad outputs high as a source for triggering interrupt when a key is pressed&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
scan&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  ldy #&lt;span class=&quot;nu0&quot;&gt;%11110000&lt;/span&gt;
  sty PORTA_1
  rts&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_965e507a710981562292fc5a230a5c5c_40&quot;&gt;functions.inc &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_965e507a710981562292fc5a230a5c5c_40&quot;&gt;&lt;pre class=&quot;code asm&quot;&gt;&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;.zeropage&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;MESSAGE_POINTER = $20&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;  .org $8000&lt;/span&gt;
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;code&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;          convert a binary number from Accumulator, in range 00000000 -&amp;gt; 11111111 ($00 to $FF)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;          to its HEX number encode as ASCII -  using a simple lookup table and print it on LCD&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
bintohex&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  pha
  lsr
  lsr
  lsr
  lsr
  tax
  lda hexascii&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;x
  jsr print_char
  pla
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0f&lt;/span&gt;
  tax
  lda hexascii&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;x
  jsr print_char
  rts
&amp;nbsp;
hexascii&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0123456789ABCDEF&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;    convert a binary (hex) value in Accumulator into&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;    its ASCII equivalent character in decimal 0-99 and print it&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;    this converts hex/binary numbers from the RTC into human readable&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;    decimal for display on clock&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
bintoascii&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
  bmi single_figure
  asl
  tax
  lda binascii&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;x
  jsr print_char
&amp;nbsp;
  inx
&amp;nbsp;
  lda binascii&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;x
  jsr print_char
  rts
&amp;nbsp;
single_figure&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  asl
  tax
  inx
  lda binascii&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;x
  jsr print_char
  rts
&amp;nbsp;
&amp;nbsp;
binascii&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;00010203040506070809&amp;quot;&lt;/span&gt;
          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;10111213141516171819&amp;quot;&lt;/span&gt;
          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;20212223242526272829&amp;quot;&lt;/span&gt;
          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;30313233343536373839&amp;quot;&lt;/span&gt;
          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;40414243444546474849&amp;quot;&lt;/span&gt;
          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;50515253545556575859&amp;quot;&lt;/span&gt;
          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;60616263646566676869&amp;quot;&lt;/span&gt;
          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;70717273747576777879&amp;quot;&lt;/span&gt;
          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;80818283848586878889&amp;quot;&lt;/span&gt;
          &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;90919293949596979899&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;      Convert a decimal number entered at keypad into its&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;      HEX equivalent and display&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
byte_to_hex&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
  jsr lcd_clear
  lda HEXB &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0f&lt;/span&gt;
  jsr bintohex
  lda HEXB
  jsr bintohex
  lda #&lt;span class=&quot;st0&quot;&gt;&#039;d&#039;&lt;/span&gt;
  jsr print_char
  lda #&lt;span class=&quot;st0&quot;&gt;&#039;=&#039;&lt;/span&gt;
  jsr print_char
  lda #&lt;span class=&quot;st0&quot;&gt;&#039;$&#039;&lt;/span&gt;
  jsr print_char
&amp;nbsp;
  lda HEXB &lt;span class=&quot;co1&quot;&gt;; lo byte&lt;/span&gt;
  pha
  lsr
  lsr
  lsr
  lsr
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;bpl&lt;/span&gt; error
  jsr mult10
  sta TENS
  pla
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%00001111&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; UNITS&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;bpl&lt;/span&gt; print_error
&lt;span class=&quot;co1&quot;&gt;;  jsr mult10&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;clc&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;adc&lt;/span&gt; TENS
  sta HEX
&amp;nbsp;
  lda HEXB &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; hi byte&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%00001111&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;bpl&lt;/span&gt; print_error
  jsr mult10
  jsr mult10 &lt;span class=&quot;co1&quot;&gt;; hundreds&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;adc&lt;/span&gt; HEX
&amp;nbsp;
  jsr bintohex
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; exit_byte_to_hex
&amp;nbsp;
error&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  pla
print_error&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&amp;lt;error_message
  sta MESSAGE_POINTER
  lda #&amp;gt;error_message
  sta MESSAGE_POINTER &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  jsr print
  &lt;span class=&quot;co1&quot;&gt;;jsr lcd_cursor_off&lt;/span&gt;
  rts
&amp;nbsp;
exit_byte_to_hex&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  jsr lcd_line_2
&amp;nbsp;
  rts
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;  (A * 8) + (A * 2) = A * 10 &lt;/span&gt;
&amp;nbsp;
mult10&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  pha
  asl
  asl
  asl
  sta TEMP2 &lt;span class=&quot;co1&quot;&gt;; A*8&lt;/span&gt;
  pla
  asl      &lt;span class=&quot;co1&quot;&gt;; A*2&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;adc&lt;/span&gt; TEMP2 &lt;span class=&quot;co1&quot;&gt;; A*10&lt;/span&gt;
  rts
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; Convert the encoded ASCII character representing a hex digit to its actual binary value.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; e.g. Letter &amp;quot;A&amp;quot; in ASCII is $41 (0100001) but its &amp;quot;numerical&amp;quot; value as a hex digit is &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; 10 ($0A = 10d = %00001010). &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; We convert &amp;quot;A&amp;quot; in ASCII ($41) to a byte of numerical value 10 by subtracting $37&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; $41 - $37 = $0A (in decimal 65 - 55 = 10) and the result is a byte 00001010&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; The same is done for all characters representing upper case letters.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; Numbers are handled differently according to their place on the ASCII table.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; The ASCII representation of &amp;quot;9&amp;quot; is $39 (00111001) and to get a byte with a value of 9 we can simply&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;; AND it with a mask of 00001111 to save only the lower 4 bits.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
ascii_bin&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;clc&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;41&lt;/span&gt;
  bmi ascii_bin_num   &lt;span class=&quot;co1&quot;&gt;; a CMP with $41, from a number character ($30 - $39), will set the negative flag&lt;/span&gt;
                      &lt;span class=&quot;co1&quot;&gt;; and the conversion is done by ANDing with $0F&lt;/span&gt;
&amp;nbsp;
ascii_bin_letter&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;co1&quot;&gt;; otherwise treat as a letter (A -&amp;gt; F) and the conversion is done by&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;clc&lt;/span&gt;                &lt;span class=&quot;co1&quot;&gt;; subtracting $37&lt;/span&gt;
  sec
  sbc #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;37&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; end_ascii_bin
&amp;nbsp;
ascii_bin_num&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%00001111&lt;/span&gt;
&amp;nbsp;
end_ascii_bin&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;      &lt;span class=&quot;co1&quot;&gt;; Accumulator holds the numerical version of the ASCII character supplied&lt;/span&gt;
  rts&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_965e507a710981562292fc5a230a5c5c_41&quot;&gt;rtc.inc &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_965e507a710981562292fc5a230a5c5c_41&quot;&gt;&lt;pre class=&quot;code asm&quot;&gt;&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;code&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;                          RTC / Jiffy Tick&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
rtc&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;  RTC stores ticks at 10ms intervals into a 4-byte (32 bit) value&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;  as each byte rolls over the next one is incremented&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;  on a tick that doesn&#039;t roll over the TIME OF DAY &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;  is updated&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt; TICKS
  bne inc_MET
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt; TICKS &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  bne inc_MET
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt; TICKS &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
  bne inc_MET
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt; TICKS &lt;span class=&quot;sy1&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;  Every time it&#039;s called we increment the &amp;quot;hundredths of a second&amp;quot; byte&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;  When there&#039;s been 100 x 10ms (i.e. 1 second) we increment the seconds&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;  When SECONDS reaches 60 we increment MINUTES and reset SECONDS to zero...&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;  etc... for HOURS, DAYS etc.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;  days/months years are handled too - although probably moot&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;  this routine comes from http://wilsonminesco.com/6502interrupts/#2.1&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;;;&lt;/span&gt;
inc_MET&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt; CENTISEC
  lda CENTISEC
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
  bmi end_MET
  stz CENTISEC
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt; SECONDS
  lda SECONDS
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
  bmi end_MET
  stz SECONDS
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt; TEN_SECONDS
&amp;nbsp;
  lda TEN_SECONDS
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;
  bmi end_MET
  stz TEN_SECONDS
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt; MINUTES
  lda MINUTES
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
  bmi end_MET
  stz MINUTES
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt; TEN_MINUTES
  lda TEN_MINUTES
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;
  bmi end_MET
  stz TEN_MINUTES
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt; HRS
  lda HRS
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
  bmi end_MET
  stz HRS
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt; TEN_HRS
  lda TEN_HRS
  &lt;span class=&quot;kw1&quot;&gt;cmp&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
  bmi end_MET
  stz TEN_HRS
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;inc&lt;/span&gt; HUNDRED_HRS
&amp;nbsp;
end_MET&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  rts&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
— &lt;em&gt;John Pumford-Green 05/09/22 14:23&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;monitor_dev.s source code&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;monitor_devs_source_code&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;5091-28628&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:14,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;28629-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>Tutorial Progress</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:6502:tutorial_progress</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:6502:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:6502:start&quot; data-wiki-id=&quot;public:computers:archive:6502:start&quot;&gt;6502 Project&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;tutorial_progress&quot;&gt;Tutorial Progress&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; A record of my progress through the Ben Eater You Tube tutorial &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Tutorial Progress&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tutorial_progress&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-120&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;day_onetuesday_16_8_22&quot;&gt;Day One : Tuesday 16/8/22&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Kit arrived&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Installed:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; CPU&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; EEPROM&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; NAND Gate&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Address &amp;amp; Data lines between CPU and EEPROM and address decoder for EEPROM&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Used python “makerom.py” script to burn eprom:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code python&quot;&gt;rom &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;bytearray&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0xea&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;32768&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
rom&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0xa9&lt;/span&gt;
rom&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x42&lt;/span&gt;
&amp;nbsp;
rom&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x8d&lt;/span&gt;
rom&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x00&lt;/span&gt;
rom&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x60&lt;/span&gt;
&amp;nbsp;
rom&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0x7ffc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x00&lt;/span&gt;
rom&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0x7ffd&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x80&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;rom.bin&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;wb&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; out_file:
     out_file.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rom&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;

&lt;p&gt;
ROM file hexdump:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;00000000  a9 42 8d 00 60 ea ea ea  ea ea ea ea ea ea ea ea  |.B..`...........|
00000010  ea ea ea ea ea ea ea ea  ea ea ea ea ea ea ea ea  |................|
*
00007ff&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Unable to confirm correct running - still waiting for Arduino Mega to act as a logic analyzer. LEDs on data or Address lines show activity….&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Day One : Tuesday 16\/8\/22&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;day_onetuesday_16_8_22&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;121-953&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;next_stage&quot;&gt;Next stage&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; add the 65C22 VIA and use LEDs on output to show correct running&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; make an 8-bit binary counter with LEDs as an exercise&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Next stage&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;next_stage&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;954-1104&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;day_twowednesday_17_8_22&quot;&gt;Day Two : Wednesday 17/8/22&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Using Siglent Function Generator as the CPU PHI2 clock
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; added 65C22 VIA and 8 leds&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; much debugging of hardware/wiring - breadboard is a NASTY way of doing this…..!&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; ordered some IC sockets &amp;amp; other hardware to allow me to build a version on Vero/perf board and move away from breadboard once I&amp;#039;ve got the the point in the tutorials where all the hardware is stable.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; used python script to get the “01010101 → 10101010” LED sequence running.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Day Two : Wednesday 17\/8\/22&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;day_twowednesday_17_8_22&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1105-1604&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;self-study&quot;&gt;Self-study&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; modified assembly code to make the LEDs flash in a binary count&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;bit_counter&quot;&gt;8 bit counter&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code python&quot;&gt;&lt;span class=&quot;co1&quot;&gt;### 8-bit Counter&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;code&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;bytearray&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
    &lt;span class=&quot;nu0&quot;&gt;0xa9&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0xff&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;         &lt;span class=&quot;co1&quot;&gt;# lda #$FF&lt;/span&gt;
    &lt;span class=&quot;nu0&quot;&gt;0x8d&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x02&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x60&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;co1&quot;&gt;# sta $6002 : put 11111111 into VIA&#039;s Port B control register - all port pins are OUTPUT&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;nu0&quot;&gt;0xa9&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0xff&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;         &lt;span class=&quot;co1&quot;&gt;# lda #$ff (start with all LEDs lit)&lt;/span&gt;
    &lt;span class=&quot;nu0&quot;&gt;0x8d&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x00&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x60&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;co1&quot;&gt;# sta $6000&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;nu0&quot;&gt;0x1a&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;                &lt;span class=&quot;co1&quot;&gt;# inc A&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;nu0&quot;&gt;0x4c&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x07&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x80&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;co1&quot;&gt;# jmp $8007&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
rom &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;code&lt;/span&gt; + &lt;span class=&quot;kw3&quot;&gt;bytearray&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0xea&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;32768&lt;/span&gt; - &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;code&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
rom&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0x7ffc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x00&lt;/span&gt;
rom&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0x7ffd&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0x80&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;rom.bin&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;wb&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; out_file:
     out_file.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rom&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
This assembles as :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;00000000  a9 ff 8d 02 60 a9 ff 8d  00 60 1a 4c 07 80 ea ea  |....`....`.L....|
00000010  ea ea ea ea ea ea ea ea  ea ea ea ea ea ea ea ea  |................|
*
00007ff0  ea ea ea ea ea ea ea ea  ea ea ea ea 00 80 ea ea  |................|
00008000
&lt;/pre&gt;

&lt;p&gt;
LEDs flash in binary count to 255 and cycle round… endlessly.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;bit_counter1&quot;&gt;16 bit counter&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
I wanted to see if I could extend the counter to 16-bits, using 2 VIA ports to drive the LEDs
&lt;/p&gt;

&lt;p&gt;
To make life easier I moved to &lt;code&gt;assembly&lt;/code&gt; language and the &lt;code&gt;VASM&lt;/code&gt; assembler as recommended in the tutorial. 
&lt;/p&gt;

&lt;p&gt;
To count beyond a single 8-bit byte needs a way of holding 2 separate bytes of the count, the low byte and high byte, and only increment the high byte when the low byte rolls past &lt;code&gt;11111111&lt;/code&gt;. Tricky with no RAM installed yet.
&lt;/p&gt;

&lt;p&gt;
I used the 2 index registers &lt;code&gt;X&lt;/code&gt; and &lt;code&gt;Y&lt;/code&gt;. The carry bit is set as a result of arithmetic on the Accumulator register, so &lt;code&gt;X&lt;/code&gt; (low byte) has to be copied to the Accumulator for the addition of &lt;code&gt;1&lt;/code&gt; each time round the loop.
&lt;/p&gt;
&lt;pre class=&quot;code asm&quot;&gt;        &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;org &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8000&lt;/span&gt;
&amp;nbsp;
reset&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
        lda #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;ff
        sta &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6002&lt;/span&gt;    &lt;span class=&quot;co1&quot;&gt;; set port B pins to all output&lt;/span&gt;
        sta &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6003&lt;/span&gt;    &lt;span class=&quot;co1&quot;&gt;; set port A pins to all output&lt;/span&gt;
        lda #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00&lt;/span&gt;
        tax          &lt;span class=&quot;co1&quot;&gt;; X holds the low byte. initialize to zero&lt;/span&gt;
        tay          &lt;span class=&quot;co1&quot;&gt;; Y holds the high byte. initialize to zero&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;loop&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
        txa          &lt;span class=&quot;co1&quot;&gt;; copy low byte to A&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;adc&lt;/span&gt; #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;01&lt;/span&gt;     &lt;span class=&quot;co1&quot;&gt;; add 1&lt;/span&gt;
        tax          &lt;span class=&quot;co1&quot;&gt;; copy new value to X&lt;/span&gt;
        bcs high_b   &lt;span class=&quot;co1&quot;&gt;; if carry flag set, branch to increment the high byte&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
print&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
        txa          &lt;span class=&quot;co1&quot;&gt;; bring the low byte to A&lt;/span&gt;
        sta &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6000&lt;/span&gt;    &lt;span class=&quot;co1&quot;&gt;; send low byte to Port B LEDs&lt;/span&gt;
        tya          &lt;span class=&quot;co1&quot;&gt;; bring the high byte to A&lt;/span&gt;
        sta &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6001&lt;/span&gt;    &lt;span class=&quot;co1&quot;&gt;; send high byte to Port A LEDs&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;loop&lt;/span&gt;
&amp;nbsp;
high_b&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
        iny          &lt;span class=&quot;co1&quot;&gt;; increment high byte in Y&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; print
&amp;nbsp;
        &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;org &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;fffc
        &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;word&lt;/span&gt; reset
        &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;word&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0000&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Assembled code
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;00000000  a9 ff 8d 02 60 8d 03 60  a9 00 aa a8 8a 69 01 aa  |....`..`.....i..|
00000010  b0 0b 8a 8d 00 60 98 8d  01 60 4c 0c 80 c8 4c 12  |.....`...`L...L.|
00000020  80 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00007ff0  00 00 00 00 00 00 00 00  00 00 00 00 00 80 00 00  |................|
00008000&lt;/pre&gt;

&lt;p&gt;
Add another 8 LEDs, to Port A, to show the High Byte…. 
&lt;/p&gt;

&lt;p&gt;
It now counts to &lt;code&gt;1111111111111111&lt;/code&gt; or &lt;code&gt;$FFFF&lt;/code&gt; or &lt;code&gt;65535&lt;/code&gt; as displayed by the LEDs attached to both VIA ports.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Self-study&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;self-study&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1605-4825&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;next_stage1&quot;&gt;Next stage&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
 is to add the LCD module in place of the flashing LEDs
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Next stage&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;next_stage1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;4826-4905&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;day_threefriday_19_8_22&quot;&gt;Day Three : Friday 19/8/22&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Day Three : Friday 19\/8\/22&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;day_threefriday_19_8_22&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4906-4946&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;lcd&quot;&gt;LCD&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; added the LCD module to the VIA output port(s)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; put the “hello.s” assembled code into ROM&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; LCD printed &lt;code&gt;Hello, w&lt;/code&gt; and no more….&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
8 Characters… what, why?
&lt;/p&gt;

&lt;p&gt;
Lots of messing about with the assembler code to see if I could get all the &lt;code&gt;Hello, world!&lt;/code&gt; message to print to the LCD.
&lt;/p&gt;

&lt;p&gt;
By adding the necessary instruction to change the display position I could use all 16 characters of the display, but I couldn&amp;#039;t get it to print all the message in one go…. The same happened with a different LCD module.
&lt;/p&gt;

&lt;p&gt;
Eventually I checked, and re-checked, the address and data lines between CPU, ROM and VIA and must have re-inserted one that was loose. Afterwards the display showed &lt;code&gt;Hello, world!&lt;/code&gt; correctly.
&lt;/p&gt;

&lt;p&gt;
I assume the error was that an address line between CPU and ROM wasn&amp;#039;t connected, so at one step of the program the ROM went to the wrong address and returned garbage data, and the program stopped, or just randomly stepped through the otherwise empty ROM?
&lt;/p&gt;

&lt;p&gt;
Anyway, whatever the mechanism, ensuring all address &amp;amp; data lines were seated correctly cured the &lt;em&gt;bug&lt;/em&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;LCD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lcd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;4947-6039&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;next_stage2&quot;&gt;Next Stage&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; adding RAM&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; rebuilding on “properly wired” stripboard to remove the annoyance of breadboard wires coming adrift.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Next Stage&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;next_stage2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;6040-6182&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;day_4saturday_21_8_22&quot;&gt;Day 4 : Saturday 21/8/22&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; added RAM&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; re-wrote “hello_world” to use 4-bit LCD addressing and moved LCD to PORTB of VIA, freeing up all of PORTA for other uses&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; began building veroboard version to&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Day 4 : Saturday 21\/8\/22&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;day_4saturday_21_8_22&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;6183-6400&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;day_5sunday_22_8_22&quot;&gt;Day 5 : Sunday 22/8/22&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; completed veroboard build and tested with 4-bit/2-line LCD “Hello world”&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code asm&quot;&gt;&amp;nbsp;
PORTB = &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6000&lt;/span&gt;
PORTA = &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6001&lt;/span&gt;
DDRB = &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6002&lt;/span&gt;
DDRA = &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6003&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
E  = &lt;span class=&quot;nu0&quot;&gt;%01000000&lt;/span&gt;
RW = &lt;span class=&quot;nu0&quot;&gt;%00100000&lt;/span&gt;
RS = &lt;span class=&quot;nu0&quot;&gt;%00010000&lt;/span&gt;
LED = &lt;span class=&quot;nu0&quot;&gt;%10000000&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;org &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8000&lt;/span&gt;
&amp;nbsp;
reset&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  ldx #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;ff
  txs
&amp;nbsp;
  lda #&lt;span class=&quot;nu0&quot;&gt;%11111111&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Set all pins on port B to output&lt;/span&gt;
  sta DDRB
  lda #&lt;span class=&quot;nu0&quot;&gt;%00000000&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Set all pins on port A to input&lt;/span&gt;
  sta DDRA
&amp;nbsp;
  jsr lcd_init
  lda #&lt;span class=&quot;nu0&quot;&gt;%00101000&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Set 4-bit mode; 2-line display; 5x8 font&lt;/span&gt;
  jsr lcd_instruction
  lda #&lt;span class=&quot;nu0&quot;&gt;%00001110&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Display on; cursor on; blink off&lt;/span&gt;
  jsr lcd_instruction
  lda #&lt;span class=&quot;nu0&quot;&gt;%00000110&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Increment and shift cursor; don&#039;t shift display&lt;/span&gt;
  jsr lcd_instruction
  lda #&lt;span class=&quot;nu0&quot;&gt;%00000001&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Clear display&lt;/span&gt;
  jsr lcd_instruction
&amp;nbsp;
  ldx #&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
print1&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda message1&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;x
  beq print2
  jsr print_char
  inx
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; print1
&amp;nbsp;
message1&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;asciiz &lt;span class=&quot;st0&quot;&gt;&amp;quot;Shed-o-tron II &amp;quot;&lt;/span&gt;
&amp;nbsp;
message2&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;asciiz &lt;span class=&quot;st0&quot;&gt;&amp;quot;* * 22/8/22 * * &amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;loop&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #LED
  sta PORTB
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;loop&lt;/span&gt;
&amp;nbsp;
print2&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;nu0&quot;&gt;%10101001&lt;/span&gt;
  jsr lcd_instruction
&amp;nbsp;
  ldx #&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
line2&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda message2&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;x
  beq &lt;span class=&quot;kw1&quot;&gt;loop&lt;/span&gt;
  jsr print_char
  inx
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; line2
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
lcd_wait&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  pha
  lda #&lt;span class=&quot;nu0&quot;&gt;%11110000&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;; LCD data is input&lt;/span&gt;
  sta DDRB
lcdbusy&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #RW
  sta PORTB
  lda #&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;RW | E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  sta PORTB
  lda PORTB       &lt;span class=&quot;co1&quot;&gt;; Read high nibble&lt;/span&gt;
  pha             &lt;span class=&quot;co1&quot;&gt;; and put on stack since it has the busy flag&lt;/span&gt;
  lda #RW
  sta PORTB
  lda #&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;RW | E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  sta PORTB
  lda PORTB       &lt;span class=&quot;co1&quot;&gt;; Read low nibble&lt;/span&gt;
  pla             &lt;span class=&quot;co1&quot;&gt;; Get high nibble off stack&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%00001000&lt;/span&gt;
  bne lcdbusy
&amp;nbsp;
  lda #RW
  sta PORTB
  lda #&lt;span class=&quot;nu0&quot;&gt;%11111111&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;; LCD data is output&lt;/span&gt;
  sta DDRB
  pla
  rts
&amp;nbsp;
lcd_init&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #&lt;span class=&quot;nu0&quot;&gt;%00000010&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Set 4-bit mode&lt;/span&gt;
  sta PORTB
  ora #E
  sta PORTB
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%00001111&lt;/span&gt;
  sta PORTB
  rts
&amp;nbsp;
lcd_instruction&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  jsr lcd_wait
  pha
  lsr
  lsr
  lsr
  lsr            &lt;span class=&quot;co1&quot;&gt;; Send high 4 bits&lt;/span&gt;
  sta PORTB
  ora #E         &lt;span class=&quot;co1&quot;&gt;; Set E bit to send instruction&lt;/span&gt;
  sta PORTB
  eor #E         &lt;span class=&quot;co1&quot;&gt;; Clear E bit&lt;/span&gt;
  sta PORTB
  pla
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%00001111&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Send low 4 bits&lt;/span&gt;
  sta PORTB
  ora #E         &lt;span class=&quot;co1&quot;&gt;; Set E bit to send instruction&lt;/span&gt;
  sta PORTB
  eor #E         &lt;span class=&quot;co1&quot;&gt;; Clear E bit&lt;/span&gt;
  sta PORTB
  rts
&amp;nbsp;
print_char&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  jsr lcd_wait
  pha
  lsr
  lsr
  lsr
  lsr             &lt;span class=&quot;co1&quot;&gt;; Send high 4 bits&lt;/span&gt;
  ora #RS         &lt;span class=&quot;co1&quot;&gt;; Set RS&lt;/span&gt;
  sta PORTB
  ora #E          &lt;span class=&quot;co1&quot;&gt;; Set E bit to send instruction&lt;/span&gt;
  sta PORTB
  eor #E          &lt;span class=&quot;co1&quot;&gt;; Clear E bit&lt;/span&gt;
  sta PORTB
  pla
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%00001111&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;; Send low 4 bits&lt;/span&gt;
  ora #RS         &lt;span class=&quot;co1&quot;&gt;; Set RS&lt;/span&gt;
  sta PORTB
  ora #E          &lt;span class=&quot;co1&quot;&gt;; Set E bit to send instruction&lt;/span&gt;
  sta PORTB
  eor #E          &lt;span class=&quot;co1&quot;&gt;; Clear E bit&lt;/span&gt;
  sta PORTB
  rts
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;; Reset/IRQ vectors&lt;/span&gt;
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;org &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;fffc
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;word&lt;/span&gt; reset
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;word&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0000&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Day 5 : Sunday 22\/8\/22&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;day_5sunday_22_8_22&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;6401-8933&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;next_stage3&quot;&gt;Next Stage&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; begin expanding software&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; routines to examine memory contents and display (in HEX) the contents of selected memory location(s)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; add switches to VIA PORTA and begin reading state of switches and update LCD with information&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; a power-on memory test and toggle LED/LCD?&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Next Stage&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;next_stage3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;8934-9242&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Github : &lt;a href=&quot;https://github.com/gm4slv/6502&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/gm4slv/6502&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/gm4slv/6502&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:6502&amp;amp;do=showtag&amp;amp;tag=6502&quot; class=&quot;wikilink1&quot; title=&quot;tag:6502&quot; rel=&quot;tag&quot;&gt;6502&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;9243-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>Arduino Project</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:blog:arduino_project</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;arduino_project&quot;&gt;Arduino Project&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
I dabbled with Arduino to build some small projects back in 2021, mostly using the SI5351 PLL chip. 
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
A lot was learned from the You Tube channel, and blog, of Charlie Morris ZL2CTM
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.youtube.com/c/CharlieMorrisZL2CTM&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.youtube.com/c/CharlieMorrisZL2CTM&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.youtube.com/c/CharlieMorrisZL2CTM&lt;/a&gt; and  &lt;a href=&quot;https://zl2ctm.blogspot.com/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://zl2ctm.blogspot.com/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://zl2ctm.blogspot.com/&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
I designed and built a 60m QRP SSB/CW/Digimode transceiver which started as a Direct Conversion DSB radio and then morphed into a superhet SSB rig with 9MHz IF and crystal filter. I was also was in the process of building a phasing RX and CW TX to make an HF CW transceiver - band TBC but it &lt;em&gt;was&lt;/em&gt; working on 17m when I drifted off the path and abandoned radio for a while.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve dug out the 60m rig and it&amp;#039;s still working. I&amp;#039;ve got it in my new shack as a 60m monitor RX. One of its features is a “scanner” - just cycling around a selection of channels pausing for a second and moving on which is handy for spotting activity popping up on one or other channel.
&lt;/p&gt;

&lt;p&gt;
Today I also went searching for the Arduino sketches for all my little experiments at the time, and found them on the old laptop I used in the shed-shack at the time. This laptop is physically decrepit - screen broken etc. - but can still be accessed over the LAN. I&amp;#039;ve retrieved all the sketches and they are linked at the bottom of the page.
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s been a while (5 years!) since I played with Arduino and the 5351 PLL, so I&amp;#039;m a little rusty, but I&amp;#039;m considering making a QRSS TX to run on 60m if I can find somewhere to put a small base-loaded vertical (perhaps a helical linear-loaded vertical?). The first step will be to write the Arduino sketch to make the 5351 make pretty patterns on a waterfall. Then a simple 500mW PA strip shouldn&amp;#039;t be too difficult.
&lt;/p&gt;

&lt;p&gt;
I still have some un-used Seeduino Nano boards and some 5351s, so I think I&amp;#039;ll rig up a development board and start writing code. Small baby steps….
&lt;/p&gt;

&lt;p&gt;
(I&amp;#039;ve begun &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:arduino:qrss_tx&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:arduino:qrss_tx&quot; data-wiki-id=&quot;public:radio:topics:arduino:qrss_tx&quot;&gt;QRSS MEPT&lt;/a&gt; )
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Arduino Project&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;arduino_project&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;2-1951&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; My old Ardiuno Code sketches: &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:topics:arduino_sketches.tar&quot; class=&quot;media mediafile mf_tar&quot; title=&quot;public:radio:topics:arduino_sketches.tar (790 KB)&quot;&gt;arduino_sketches.tar&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:arduino&amp;amp;do=showtag&amp;amp;tag=arduino&quot; class=&quot;wikilink1&quot; title=&quot;tag:arduino&quot; rel=&quot;tag&quot;&gt;arduino&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:qrss&amp;amp;do=showtag&amp;amp;tag=qrss&quot; class=&quot;wikilink1&quot; title=&quot;tag:qrss&quot; rel=&quot;tag&quot;&gt;qrss&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:homebrew&amp;amp;do=showtag&amp;amp;tag=homebrew&quot; class=&quot;wikilink1&quot; title=&quot;tag:homebrew&quot; rel=&quot;tag&quot;&gt;homebrew&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1952-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 12 Jul 2026 07:27:53 +0000</pubDate>
        </item>
        <item>
            <title>Music - A Return To An Old Hobby</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:blog:music_-_a_return_to_an_old_hobby</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;music_-_a_return_to_an_old_hobby&quot;&gt;Music - A Return To An Old Hobby&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
date: 2026-03-02 14:52
&lt;/p&gt;

&lt;p&gt;
I used to play &lt;em&gt;a lot&lt;/em&gt; of music - by this I mean actually play it myself, on instruments like mandolin, bodhran, guitar….
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I first fiddled with guitar as a teenager. Badly. I had a cheap nylon strung &lt;em&gt;“classical”&lt;/em&gt; guitar, and even for a while a &lt;strong&gt;&lt;em&gt;very cheap and very, very nasty&lt;/em&gt;&lt;/strong&gt; electric guitar.
&lt;/p&gt;

&lt;p&gt;
When I went to University in 1984 I was already into folk music, as well as &lt;em&gt;heavily&lt;/em&gt; into early Mike Oldfield. So I knew of the bodhran. I bought myself a basic model mandolin and found a guy who made bodhrans in a small workshop in Manchester. All I could afford was a very basic calf-skin bodhran but it was enough to get the hang of it.
&lt;/p&gt;

&lt;p&gt;
I listened to a lot of Planxty, Bothy Band, Boys from the Lough, Andy Irvine etc. back then, all on vinyl. I still have the same vinyl albums and play them occasionally even now.
&lt;/p&gt;

&lt;p&gt;
Here&amp;#039;s a B&amp;amp;W photo of my stash of instruments from around 1986. I developed &amp;amp; printed it myself, using an enlarger a mate had borrowed &amp;amp; set up in the bathroom in his flat. I recently found the photo again, and put it in a clip frame and hung it in my den.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Ablog%3Amusic_-_a_return_to_an_old_hobby&amp;amp;media=public:blog:instruments1.jpg&quot; class=&quot;media&quot; title=&quot;public:blog:instruments1.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=e00d06&amp;amp;media=public:blog:instruments1.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;*my original mandolin, bodhran etc.*&quot; alt=&quot;*my original mandolin, bodhran etc.*&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I later bought a better mandolin, and also got better goatskin bodhran from Hobgoblin Music. 
&lt;/p&gt;

&lt;p&gt;
I sold my 1st mandolin, and bodhran to a mate of mine. I &lt;em&gt;think&lt;/em&gt; he still has them. I certainly still have my 2nd mandolin and bodhran.
&lt;/p&gt;

&lt;p&gt;
While I was at UMIST, between 1984 and 1988 I used to drink in the &lt;strong&gt;Jolly Angler&lt;/strong&gt; in Ducie Street. It was a backstreet Irish pub, but had no music session. I went to play pool with mates and drink copious quantities of Hyde&amp;#039;s Anvil bitter (and at Christmas time their strong Winter Ale from a small barrel on the bar).
&lt;/p&gt;

&lt;p&gt;
The landlord had a niece who at that time was doing her O levels and was struggling with maths. She was a mean piano accordion player too. We started a weekly maths tuition followed by a few tunes. I took my mandolin and she took her PA. 
&lt;/p&gt;

&lt;p&gt;
After a few weeks of this a few customers asked 
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 “is this a regular session?”&lt;br/&gt;
&lt;br/&gt;
“no, just us having a few tunes”&lt;br/&gt;
&lt;br/&gt;
“is it ok if we join in next week? There&amp;#039;s no good session on a Thursday nearby”&lt;br/&gt;
&lt;br/&gt;
“ Yeah! that&amp;#039;d be fun”&lt;/div&gt;&lt;/blockquote&gt;

&lt;p&gt;
and then it exploded from there.
&lt;/p&gt;

&lt;p&gt;
More and more and more people came on a Thursday night. After only a few weeks I found I was well out of my depth, and stopped playing, or trying to play. I&amp;#039;d learned a few new tunes in the first few weeks of the &lt;em&gt;session&lt;/em&gt; but then found all I could do was sit and watch and listen.
&lt;/p&gt;

&lt;p&gt;
But I still played mandolin for my own amusement. I wasn&amp;#039;t particularly good, but I enjoyed it.
&lt;/p&gt;

&lt;p&gt;
There have been various instruments over the years since then. 
&lt;/p&gt;

&lt;p&gt;
Later, after leaving UMIST and getting a job I bought myself a bouzouki from Hobgoblin too.
&lt;/p&gt;

&lt;p&gt;
My parents had found an old Hohner Double-Ray Black-Dot in B/C at an antiques fair which I later bought by visiting the guy&amp;#039;s house in Cramlington (nr. Newcastle) while we were visiting.
&lt;/p&gt;

&lt;p&gt;
The story of this is on my old, old website which I recently uncovered…
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://g4slv.info/website/pages/music.htm&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://g4slv.info/website/pages/music.htm&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://g4slv.info/website/pages/music.htm&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I then bought a 2nd hand Saltarelle “Le Bouebe” melodeon in D/G in around 2002, and later a Castagnari Lilly melodeon for my 40th birthday in 2006. I later sold the Lilly, as I wasn&amp;#039;t playing it enough to justify keeping it. 
&lt;/p&gt;

&lt;p&gt;
I still have the Saltarelle. But I rarely ever take it out and play it any more.
&lt;/p&gt;

&lt;p&gt;
Here&amp;#039;s an old photo of me in the Westings, Shetland. 
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Ablog%3Amusic_-_a_return_to_an_old_hobby&amp;amp;media=public:blog:box1.jpg&quot; class=&quot;media&quot; title=&quot;public:blog:box1.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=f220b0&amp;amp;media=public:blog:box1.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;*Me on Saltarelle D/G with Neil Donald on a Chromatic button box*&quot; alt=&quot;*Me on Saltarelle D/G with Neil Donald on a Chromatic button box*&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I got to be “ok” on melodeon - but nothing better then “ok”. 
&lt;/p&gt;

&lt;p&gt;
In fact I&amp;#039;ve never got better than “ok” on anything, in the 45+ years of my trying to play.
&lt;/p&gt;

&lt;p&gt;
I didn&amp;#039;t have a guitar for several years and during Covid lockdown in 2020 I bought a cheap classical guitar (Yamaha C40) and spent a lot of time while isolated at home trying to learn proper classical guitar. I followed some of the excellent courses by Bradford Werner &lt;a href=&quot;https://www.thisisclassicalguitar.com/start-here/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.thisisclassicalguitar.com/start-here/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.thisisclassicalguitar.com/start-here/&lt;/a&gt;. When life returned to normal I stopped studying, but I&amp;#039;d already found some physical problems with my wrists and hands due to the Rheumatoid Arthritis. I still noodle on the guitar, but I can&amp;#039;t see me being able to really immerse myself in learning it properly.
&lt;/p&gt;

&lt;p&gt;
I also bought a Treble Recorder last year and then neglected to do anything about it. I&amp;#039;d played Descant Recorder as a primary schoolboy aged 10 or so. That&amp;#039;s where I learned to read music. So the Treble Recorder was supposed to be my way of reconnecting with the fun of learning a new (and at face value fairly simple) instrument. Of course the Recorder is a vastly under-rated instrument capable of magical sound when played by an expert. 
&lt;/p&gt;

&lt;p&gt;
I recently found some old mp3 recordings I&amp;#039;d done in around 2002, in a zip file which contained the HTML and other files from  a website I had back then. There were 4 mp3 files that had me playing mandolin, and bodhran (and guitar, out of tune)
&lt;/p&gt;

&lt;p&gt;
They are badly recorded - from memory I did it by using a pair of cheap stereo headphones as a microphone (!) and recording using grecord on a linux box (an old Gnome app for simple sound recording - probably running on Red Hat 6?) 
&lt;/p&gt;

&lt;p&gt;
To multi track I&amp;#039;d play the 1st recording back from the speakers on another linux box while recording the 2nd track (and the playback of the 1st which was audible in the background….) and I&amp;#039;d repeat this again to get a 3rd track.
&lt;/p&gt;

&lt;p&gt;
The are in &lt;a href=&quot;https://g4slv.info/website/pshed/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://g4slv.info/website/pshed/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://g4slv.info/website/pshed/&lt;/a&gt; and these are the links to the files
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://g4slv.info/website/pshed/erin_a.mp3&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://g4slv.info/website/pshed/erin_a.mp3&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Farewell to Erin&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://g4slv.info/website/pshed/mason_c.mp3&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://g4slv.info/website/pshed/mason_c.mp3&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Mason&amp;#039;s Apron&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://g4slv.info/website/pshed/mooncoin_b.mp3&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://g4slv.info/website/pshed/mooncoin_b.mp3&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Mooncoin Jig&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://g4slv.info/website/pshed/boing.mp3&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://g4slv.info/website/pshed/boing.mp3&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Banging on the bodhran&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Music - A Return To An Old Hobby&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;music_-_a_return_to_an_old_hobby&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-5894&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;the_future&quot;&gt;The future?&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Ablog%3Amusic_-_a_return_to_an_old_hobby&amp;amp;media=public:blog:instruments2.jpg&quot; class=&quot;media&quot; title=&quot;public:blog:instruments2.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=78649f&amp;amp;media=public:blog:instruments2.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;*some of my current musical instruments*&quot; alt=&quot;*some of my current musical instruments*&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
So, now, at 60 years old I&amp;#039;m wondering what to do with myself. What hobby to persue. How to find joy and fun again. 
&lt;/p&gt;

&lt;p&gt;
I found myself looking up at my mandolin a few nights ago, thinking *“I wonder if I remember any tunes?”* and I took it down from its hanger. And 2 hours later I forced myself to put it down &amp;amp; go to bed….
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve been a little lost recently, not knowing what to do with my spare time. Perhaps this is the answer. Just enjoy playing music for my own amusement again.
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:music&amp;amp;do=showtag&amp;amp;tag=music&quot; class=&quot;wikilink1&quot; title=&quot;tag:music&quot; rel=&quot;tag&quot;&gt;music&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The future?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_future&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;5895-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 19 Apr 2026 08:45:07 +0000</pubDate>
        </item>
        <item>
            <title>Privacy ?</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:blog:privacy</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;privacy&quot;&gt;Privacy ?&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Private versus Public &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
I recently got totally fed-up with the state of *the internet*. Mobile phones so tightly tied to *Google* or *Apple* that they track your every move and communicate every action you make online with databrokers that use this to profile you and target ads (and worse?) at you….
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Why isn&amp;#039;t it possible just to use a phone to make phone calls, send text messages, and to innocently and privately look at websites?
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Privacy ?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;privacy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-483&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;de-googling_etc&quot;&gt;De-Googling etc.&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I started *de-googling*[^1] as far as I could. And this included my *desktop* interaction with the web too. I&amp;#039;d already been using adblockers for years, but this time I went further.
&lt;/p&gt;

&lt;p&gt;
And I found it&amp;#039;s *impossible to fully de-google*. 
&lt;/p&gt;

&lt;p&gt;
Of course I *knew* this - after all, Android *is* Google. And the web *is* Google.
&lt;/p&gt;

&lt;p&gt;
But I made tiny first steps. Why do I need accounts with Google and other major enshitifiers to do the things I still enjoy online? This feeling also tied in with a desire to cut-back on online shopping (I&amp;#039;ll do a post on my *no-buy* aspirations another time) so I got rid of other accounts too.
&lt;/p&gt;

&lt;p&gt;
I got rid of my accounts with (at least these, probably others that I&amp;#039;ve forgotten about):
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Google&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; My You Tube Channel was deleted too&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Microsoft&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Amazon&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Paypal&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; eBay&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Reddit&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I didn&amp;#039;t have *Facebook* or *Twitter/X* or *Mastodon* or *Instagram* or *Tik-Tok* or any other *social media* accounts, so there was no FOFOMO[^2] to worry about.
&lt;/p&gt;

&lt;p&gt;
#### A quiet online life?
&lt;/p&gt;

&lt;p&gt;
This still means I can use the internet but reduces the level of *integration* which happens - where everything talks to everything else *via Google*.
&lt;/p&gt;

&lt;p&gt;
#### To properly de-Google?
&lt;/p&gt;

&lt;p&gt;
After doing as much as I could with my stock Android phone I ran into the usual problem of how tightly integrated even the simplest of apps is with the Google eco-system and that it didn&amp;#039;t seem possible to use a *normal* Android phone and at the same time to be invisible to Google &amp;amp; to escape its spying.
&lt;/p&gt;

&lt;p&gt;
A fully de-googled-at-source-android was the answer. There are a few options. I won&amp;#039;t go into them in detail, I just took the easiest route.
&lt;/p&gt;

&lt;p&gt;
I bought a Fairphone6 pre-installed with /e/OS.
&lt;/p&gt;

&lt;p&gt;
I tried it first *without* running *micro-G* (which spoofs some of the functionality of *Google Play Services* etc. and which gives access to certain Google services anonymously so that the apps that rely on some Google functionality can still be installed and will run). 
&lt;/p&gt;

&lt;p&gt;
But that limited my options for apps.
&lt;/p&gt;

&lt;p&gt;
So I enabled *micro-G* and installed a *very small number* of non-FOSS Android apps:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2 &lt;strong&gt;Banking&lt;/strong&gt; apps for my personal and business bank accounts&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;BBC Sounds&lt;/strong&gt; - but only because &lt;strong&gt;*I can&amp;#039;t abide adverts&lt;/strong&gt;* even in podcasts - and the BBC is the only source I can trust not to shove commercial adverts at me during podcasts&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Canon Print&lt;/strong&gt; - to access my little Canon Selphy printer (yes, it is possible without the Canon Print app, but it&amp;#039;s fiddly and error-prone)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
And that&amp;#039;s all. 
&lt;/p&gt;

&lt;p&gt;
Everything else is either the pre-installed version from /e/OS or it&amp;#039;s a FOSS version from *f-Droid*
&lt;/p&gt;

&lt;p&gt;
/e/OS has a built in system-level tracking blocker which circumvents the many (many) *phone-home* tracking messages that these non-FOSS apps send to various analytic/tracking providers. It&amp;#039;s quite scary to see just how chatty these apps are, and how many external 3++rd++ party tracking services are fed data - quite separately from the actual application&amp;#039;s useful and necessary network traffic (this still flows and allows the app to function normally).
&lt;/p&gt;

&lt;p&gt;
#### Privacy - hiding from real people on the internet 
&lt;/p&gt;

&lt;p&gt;
I took things a step further - and tried to extract myself from *any online activity* which would involve showing anything of mine to *strangers on the internet*. 
&lt;/p&gt;

&lt;p&gt;
I made my [Commonplace Wiki](&lt;a href=&quot;https://g4slv.info/dokuwiki/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://g4slv.info/dokuwiki/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://g4slv.info/dokuwiki/&lt;/a&gt;) private - nothing was readable by passing strangers.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;d deleted my You Tube stuff already, as a part of *de-googling* so that had already been taken care of.
&lt;/p&gt;

&lt;p&gt;
I started to delete various accounts that I had on web-forums, and thus my old posts disappeared too (I don&amp;#039;t contribute much, and my words are unlikely to be missed by anyone). 
&lt;/p&gt;

&lt;p&gt;
I wanted to *disappear* from the online world. 
&lt;/p&gt;

&lt;p&gt;
I know it&amp;#039;s not possible to remove all traces of your past online life - but I wanted my future involvement with the web to be invisible.
&lt;/p&gt;

&lt;p&gt;
#### The Hypocrisy of this
&lt;/p&gt;

&lt;p&gt;
But I was still reading *other* people&amp;#039;s websites and blogs. Watching other people&amp;#039;s You Tube videos - but *not-logged-in* and via a browser with an *adblocker* (or more often via `NewPipe` or by downloading the video to my laptop 1++st++ by using `yt-dlp`)
&lt;/p&gt;

&lt;p&gt;
I was *consuming* but not *contributing*
&lt;/p&gt;

&lt;p&gt;
This seems selfish and petty.
&lt;/p&gt;

&lt;p&gt;
So I un-hid my dokuwiki site, and it&amp;#039;s now readable by anyone. I don&amp;#039;t know if anyone finds any of it useful, it exists mainly for me to have a place to store *useful-to-me* information.
&lt;/p&gt;

&lt;p&gt;
I figure though that it&amp;#039;s *good* to share stuff online (even when there are probably very few people that&amp;#039;ll ever read it). But, because *I* find other peoples&amp;#039; stuff useful, interesting etc. then should I not let other people make up their own minds about my stuff? By at least making it accessible.
&lt;/p&gt;

&lt;p&gt;
The important thing to me now is that this sharing &lt;strong&gt;*must be done without involving the enshitifying platforms&lt;/strong&gt;* like *Google*, *Meta* etc. etc.
&lt;/p&gt;

&lt;p&gt;
I *can* share my thoughts, experiments, notes etc. with real people on the internet - but only by hosting it myself.
&lt;/p&gt;

&lt;p&gt;
This can be done with a blog (like this one) or a wiki like [this one](&lt;a href=&quot;https://g4slv.info/dokuwiki/doku.php?id=start&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://g4slv.info/dokuwiki/doku.php?id=start&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://g4slv.info/dokuwiki/doku.php?id=start&lt;/a&gt;) and even with an old hand-built plain html website from more than 20 years ago, like [this one](&lt;a href=&quot;https://g4slv.info/website/index.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://g4slv.info/website/index.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://g4slv.info/website/index.html&lt;/a&gt;) which I used to have back in the early 2000&amp;#039;s and which has been languishing in a zip file for many years. 
&lt;/p&gt;

&lt;p&gt;
#### Blogging in 2026
&lt;/p&gt;

&lt;p&gt;
After deciding that I don&amp;#039;t want to hide from *real* people, that the internet is (still) a good thing when used for good reasons. It allows us to share with other *real* people. Enshitification has largely spoiled the *mainstream* web, but there are still lots of personal web sites, blogs, wikis etc. 
&lt;/p&gt;

&lt;p&gt;
Let&amp;#039;s keep them going.
&lt;/p&gt;

&lt;p&gt;
This is why I&amp;#039;m blogging now. It&amp;#039;s been a few years since I last did any blogging, but I think I can enjoy it again (regardless of the number of readers) and create a small corner of the internet out of my own head. It might be self-indulgent twaddle, it might be pointless and meaningless and if *I* get some happiness out of making it, that&amp;#039;s enough. But it *has* to be online and *has* to feel like it&amp;#039;s a small fight against the enshitification that the major platforms have wrought on the once wonderful web.
&lt;/p&gt;

&lt;p&gt;
[^1]: I use this as a generic term for *cutting out as much surveillance and tracking as possible*
[^2]: Is this a new coining? &lt;strong&gt;Fear of FOMO&lt;/strong&gt;  The fear that I&amp;#039;ll suffer *“Fear of Missing Out”*
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;De-Googling etc.&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;de-googling_etc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;484-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 19 Apr 2026 08:45:35 +0000</pubDate>
        </item>
        <item>
            <title>Benchmarking</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:benchmarking:start</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:start&quot; data-wiki-id=&quot;public:calculator:start&quot;&gt;Calculators&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;benchmarking&quot;&gt;Benchmarking&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Various methods to test the speed of calculators &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Benchmarking&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;benchmarking&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;13-96&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;hp_museum_benchmarks&quot;&gt;HP Museum Benchmarks&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
These pseudo-code examples need tweaking for each calculator, some have &lt;code&gt;alpha&lt;/code&gt; register names, some &lt;code&gt;numeric&lt;/code&gt;. 
&lt;/p&gt;

&lt;p&gt;
The handling of the &amp;lt;loop&amp;gt; is different in each calculator,too.
&lt;/p&gt;

&lt;p&gt;
The Programs are run for 1 minute and the result (the number of loops completed) is found in register 2 (or wherever is used in the calculator being tested).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HP Museum Benchmarks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hp_museum_benchmarks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;97-471&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;hp_museum_maths_benchmark&quot;&gt;HP Museum Maths Benchmark&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_1&quot;&gt;psuedo code &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_1&quot;&gt;&lt;pre class=&quot;code&quot;&gt;LBL &amp;lt;whatever&amp;gt;
0
STO 2
1.01234 EEX 6
STO 0
2.345
STO 1
&amp;lt;loop&amp;gt;
RCL 1
RCL 0
*
RCL 1
-
RCL 0
/
RCL 1
*
3.5
/
SQRT
1
STO+ 2
GTO &amp;lt;loop&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HP Museum Maths Benchmark&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hp_museum_maths_benchmark&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;472-684&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;hp_museum_trig_benchmark&quot;&gt;HP Museum Trig Benchmark&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_2&quot;&gt;pseudo code &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_2&quot;&gt;&lt;pre class=&quot;code&quot;&gt;LBL &amp;lt;whatever&amp;gt;
56.26
STO 0
0
STO 2
&amp;lt;loop&amp;gt;
RCL 0
SIN
ASIN
COS
ACOS
TAN
ATAN
LN
e^x
1
STO + 2
GTO &amp;lt;loop&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HP Museum Trig Benchmark&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hp_museum_trig_benchmark&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;685-865&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;overall_results&quot;&gt;Overall Results&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt; sorted by Maths Benchmark&lt;/strong&gt;
&lt;/p&gt;
&lt;div class=&quot;table sectionedit6&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Date&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Calculator&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Serial No&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Firmware&lt;/th&gt;&lt;th class=&quot;col4&quot;&gt;Maths Result&lt;/th&gt;&lt;th class=&quot;col5&quot;&gt; Maths % &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;&lt;th class=&quot;col6&quot;&gt;Trig Result&lt;/th&gt;&lt;th class=&quot;col7&quot;&gt;Trig %&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;&lt;th class=&quot;col8&quot;&gt;Comment&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 12/01/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM15L * &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 21350 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:lf15c_250408.hex&quot; class=&quot;media mediafile mf_hex&quot; title=&quot;public:calculator:info:lf15c_250408.hex (175.8 KB)&quot;&gt;lf15c_250408.hex&lt;/a&gt;&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;99,869 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 14,708% &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 17,306 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 43,265% &lt;/td&gt;&lt;td class=&quot;col8 leftalign&quot;&gt; 3rd Party Firmware  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 21/09/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM15L * &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 21350 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:guides:lf15c_beta240920.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:guides:lf15c_beta240920.zip (66.8 KB)&quot;&gt;lf15c_beta240920.zip&lt;/a&gt;&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 68,791 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 10,131% &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 14,159 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 35,397% &lt;/td&gt;&lt;td class=&quot;col8 leftalign&quot;&gt; 3rd Party Firmware   &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; 20/07/23  &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; DM32  &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 00812 &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; 2.03  &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; 46,265  &lt;/td&gt;&lt;td class=&quot;col5 leftalign&quot;&gt; 6,813%   &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 12,224 &lt;/td&gt;&lt;td class=&quot;col7 leftalign&quot;&gt; 30,560%    &lt;/td&gt;&lt;td class=&quot;col8 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;26/05/22   &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;DM42    &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;06434  &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 3.21&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;24,701 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt;3,637% &lt;/td&gt;&lt;td class=&quot;col6 leftalign&quot;&gt;3,741  &lt;/td&gt;&lt;td class=&quot;col7 leftalign&quot;&gt;9,352.5%  &lt;/td&gt;&lt;td class=&quot;col8 leftalign&quot;&gt;    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;09/05/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;DM42 * &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 06434&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; C47 00.109.01.03a2 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 4,976 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 732.8% &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 210 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 525.0% &lt;/td&gt;&lt;td class=&quot;col8&quot;&gt; 3rd Party Firmware &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 02/08/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41X &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;01266 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;2.2&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;3,273 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 482% &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 627 &lt;/td&gt;&lt;td class=&quot;col7 leftalign&quot;&gt; 1,690%  &lt;/td&gt;&lt;td class=&quot;col8&quot;&gt; FAST/USB power&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 17/09/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM15L * &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 21350 &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:guides:lf15c_beta240916_2.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:guides:lf15c_beta240916_2.zip (67.5 KB)&quot;&gt;lf15c_beta240916_2.zip&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;1,346 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 198% &lt;/td&gt;&lt;td class=&quot;col6 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col8 leftalign&quot;&gt; 3rd Party Firmware  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;26/05/22   &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;DM41X    &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;01266 &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; 2.1  &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;1,117 &lt;/td&gt;&lt;td class=&quot;col5 leftalign&quot;&gt;164%  &lt;/td&gt;&lt;td class=&quot;col6 leftalign&quot;&gt;228  &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt;570% &lt;/td&gt;&lt;td class=&quot;col8 leftalign&quot;&gt;FAST mode   &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 02/08/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41X &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 01266 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 2.2 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;1,038 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 152% &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 206 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 515% &lt;/td&gt;&lt;td class=&quot;col8&quot;&gt; FAST &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 14/01/26 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41X &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 01266 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 2.3 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;900 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 132% &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 177 &lt;/td&gt;&lt;td class=&quot;col7 leftalign&quot;&gt; 442%  &lt;/td&gt;&lt;td class=&quot;col8&quot;&gt; FAST &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;23/01/26 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM15L &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 21350 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; DM15_M1B_34 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;790 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 116% &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 199 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 497% &lt;/td&gt;&lt;td class=&quot;col8&quot;&gt; 48MHz &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row12&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;26/05/22    &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;DM15L &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;21350 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;DM15_M1B_32 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;676 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt;99% &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 185 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 462.5% &lt;/td&gt;&lt;td class=&quot;col8&quot;&gt;48MHz&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row13&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;26/05/22    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;HP35S    &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;PHA9150KFF&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; n/a&lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt;292  &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt;43% &lt;/td&gt;&lt;td class=&quot;col6 leftalign&quot;&gt;113  &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt;282.5% &lt;/td&gt;&lt;td class=&quot;col8&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row14&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;23/12/25 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41L &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 05121 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; DM41_34 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 261 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 38% &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt;140 &lt;/td&gt;&lt;td class=&quot;col7 leftalign&quot;&gt; 350%  &lt;/td&gt;&lt;td class=&quot;col8&quot;&gt; 48MHz &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row15&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;26/08/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41L &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 05121 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;DM41_32 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;154 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 22% &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 108 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 270% &lt;/td&gt;&lt;td class=&quot;col8&quot;&gt; 48MHz &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row16&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;26/05/22    &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;DM15L &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;21350 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;DM15_M1B_32 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;150 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt;22% &lt;/td&gt;&lt;td class=&quot;col6 leftalign&quot;&gt;41  &lt;/td&gt;&lt;td class=&quot;col7 leftalign&quot;&gt;102.5%  &lt;/td&gt;&lt;td class=&quot;col8&quot;&gt;12MHz&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row17&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;26/08/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41L &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 05121&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; DM41_32 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 96 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 14% &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 40 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 100% &lt;/td&gt;&lt;td class=&quot;col8&quot;&gt; 12MHz &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row18&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;26/05/22   &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;DM41X    &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;01266 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;2.1&lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt;93  &lt;/td&gt;&lt;td class=&quot;col5 leftalign&quot;&gt;13%  &lt;/td&gt;&lt;td class=&quot;col6 leftalign&quot;&gt;18  &lt;/td&gt;&lt;td class=&quot;col7 leftalign&quot;&gt;45%  &lt;/td&gt;&lt;td class=&quot;col8 leftalign&quot;&gt;SLOW mode (original HP41 Speed)  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row19&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;02/08/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;DM41X &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 01266 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;2.2&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 93 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 13% &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 18 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 45% &lt;/td&gt;&lt;td class=&quot;col8 leftalign&quot;&gt; SLOW  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row20&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;28/07/22 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;HP11C  &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 2219AO3710 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; n/a&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;37 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt;5.45%&lt;/td&gt;&lt;td class=&quot;col6&quot;&gt;9 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt;22.5%&lt;/td&gt;&lt;td class=&quot;col8 leftalign&quot;&gt;   &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;925-2736&amp;quot;} --&gt;&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Reference is HP9100 : Maths Score = 679, Trig Score = 40&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Overall Results&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;overall_results&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;866-2799&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;code&quot;&gt;Code&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
State Files for DM32 
&lt;/p&gt;

&lt;p&gt;
Maths : hpbmm : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:benchmarking:hpbmm.d32&quot; class=&quot;media mediafile mf_d32&quot; title=&quot;public:calculator:benchmarking:hpbmm.d32 (885 B)&quot;&gt;hpbmm.d32&lt;/a&gt; : Run as &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; : Get result from &lt;kbd class=&quot;__keyboard&quot;&gt;RCL&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
Trig : hpbmt : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:benchmarking:hpbmt.d32&quot; class=&quot;media mediafile mf_d32&quot; title=&quot;public:calculator:benchmarking:hpbmt.d32 (839 B)&quot;&gt;hpbmt.d32&lt;/a&gt; : Run as &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; : Get result from &lt;kbd class=&quot;__keyboard&quot;&gt;RCL&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;C&lt;/kbd&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_3&quot;&gt;Maths Benchmark Listing for DM42 &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_3&quot;&gt;&lt;pre class=&quot;code&quot;&gt;LBL &amp;quot;BM&amp;quot;
0
STO 02
1.01234E6 
STO 00
2.345
STO 01
LBL 02
RCL 01
RCL 00
x
RCL 01
-
RCL 00
÷
RCL 01
x
3.5
÷
SQRT
1
STO+ 02
GTO 02
END&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
Raw File : Maths Benchmark (bm) file for DM41X &amp;amp; DM42 &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:progs:bm.raw&quot; class=&quot;media mediafile mf_raw&quot; title=&quot;public:calculator:progs:bm.raw (48 B)&quot;&gt;bm.raw&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Raw File : Trig Benchmark (bmt) file for DM41X &amp;amp; DM42 &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:progs:bmt.raw&quot; class=&quot;media mediafile mf_raw&quot; title=&quot;public:calculator:progs:bmt.raw (35 B)&quot;&gt;bmt.raw&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_4&quot;&gt;Maths Benchmark Listing for DM41X &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_4&quot;&gt;&lt;pre class=&quot;code&quot;&gt;LBL ¬BM
0
STO 02
1.01234 E6
STO 00
2.345
STO 01
LBL 02
RCL 01
RCL 00
*
RCL 01
-
RCL 00
/
RCL 01
*
3.5
/
SQRT
1
ST+ 02
GTO 02
END
&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_5&quot;&gt;Maths Benchmark Listing for HP35S &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_5&quot;&gt;&lt;pre class=&quot;code&quot;&gt;LBL X
0
STO C
1.01234E6
STO A
2.345
STO B
RCL B  &amp;lt;-- loop in
RCL A
x
RCL B
-
RCL A
÷
RCL B
x
3.5
÷
√x
1
STO+ C
GTO X008  --&amp;gt; loop in
&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_6&quot;&gt;Maths Benchmark Listing for DM15L / HP15C &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_6&quot;&gt;&lt;pre class=&quot;code&quot;&gt;42,21,15
0
42 2
1
48
0
1
2
3
4
26
6
44 0
2
48
3
4
5
44 1
42,21,2
45 1
45 0
20
45 1
30
45 0
10
45 1
20
3
48
5
10
11
1
44,40, 2
22 2
43 32&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;LBL E
0
STO 2
1
.
0
1
2
3
4
EEX
6 
STO 0
2
.
3
4
5
STO 1
LBL 2
RCL 1
RCL 0
x
RCL 1
-
RCL 0
÷
RCL 1
x
3
.
5
÷
√x
1
STO + 2
GTO 2
RTN&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_7&quot;&gt;Maths Benchmark Listing for DM32 &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_7&quot;&gt;&lt;pre class=&quot;code&quot;&gt;LBL A
0
STO C
1.01234 E 6
STO A
2.345
STO B
LBL B
RCL B
RCL A
X
RCL B
-
RCL A
/
RCL B
X
3.5
/
SQRT
1
STO+ C
GTO B
RTN&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_8&quot;&gt;DM15L Memory Dump : Maths Benchmark = LBL A, Trig Benchmark = LBL B &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_8&quot;&gt;&lt;pre class=&quot;code&quot;&gt;DM15_M1B
00  05626000000001  01000000000000  01000000000000  00000000000000
04  04975000fff000  00000000000008  0000000000000c  00999999999eae
08  00000000000000  2a2f87beda1280  00000000bcaf80  00000000000000
10  05626000000001  02345000000000  00000000000000  04000000000001
14  f0000000000402  1b4c4c4c4c4c4c  000000000007f7  000000000007fe
18  00000000000000  0000000000007f  00000000a00000  01990000000002
1c  01387265622000  01579783596001  05000000000000  03000000000000
20  00000000000000  00000000000000  04000000000000  08000000000000
24  02100000000001  00000000000000  00000000000000  00000000000000
f4  00000000000000  00000000000000  00000000000000  b21282dff1cafd
f8  f5c0f3fc31fd30  fb31fc30310241  f5f4f3c0f240f6  c6f4f3f2f1f0c0
fc  f142f00ab21382  dff1cbbbb9c9b8  c8b7c7300342f0  40f6f2c0f6f50b
A: 04975000fff000  B: 04975000fffeae  C: 00999999999eae
S: 00000000000000
M: 04000000000000  N: 04975000000000  G: 06
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Code&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;code&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2800-5493&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;the_savage_benchmark&quot;&gt;The SAVAGE benchmark&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
From &lt;strong&gt;HPCC&lt;/strong&gt; Datafile  V37N1 pp38-42
&lt;/p&gt;

&lt;p&gt;
Raw File : Savage Benchmark (svg) for DM41X &amp;amp; DM42 &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:progs:svg.raw&quot; class=&quot;media mediafile mf_raw&quot; title=&quot;public:calculator:progs:svg.raw (50 B)&quot;&gt;svg.raw&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
State File : savage for DM32 &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:benchmarking:savage.d32&quot; class=&quot;media mediafile mf_d32&quot; title=&quot;public:calculator:benchmarking:savage.d32 (369 B)&quot;&gt;savage.d32&lt;/a&gt; : &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;S&lt;/kbd&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_9&quot;&gt;Listing for self-timed version &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_9&quot;&gt;&lt;pre class=&quot;code&quot;&gt;LBL &amp;quot;SVG&amp;quot;
&amp;quot;SAVAGE&amp;quot;
AVIEW
RAD
2499
STO 00
1
ENTER
ENTER
ENTER
STO 01
TIME
X&amp;lt;&amp;gt; 01
LBL 01
X^2
SQRT
LN
E^X
ATAN
TAN
+
DSE 00 
GTO 01
TIME
RCL 01
HMS-
HR
3600
*
END&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_10&quot;&gt;Listing for the simple (manual timed) version &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_10&quot;&gt;
&lt;p&gt;
No time calculation, it needs a stopwatch to measure the time… for calculators without TIME functions
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;LBL A
RAD
2499
STO A (for HP11C &amp;quot;STO I&amp;quot;, for DM15L &amp;quot;STO 0&amp;quot;)
1
ENTER
ENTER
ENTER
LBL B
X^2
SQRT
LN
E^X
ATAN
TAN
+
DSE A  (for HP11C &amp;quot;DSE&amp;quot;, for DM15L &amp;quot;DSE 0&amp;quot; )
GTO B
RTN&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_11&quot;&gt;DM15L Memory Dump &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_11&quot;&gt;&lt;pre class=&quot;code&quot;&gt;DM15_M1B
00  01000000000000  01000000000000  01000000000000  00000000000000
04  32499970322000  00000000000008  0000000000000c  40997997010eae
08  00000000000000  3ebeefb6e4228f  e79282e8bc2ac0  00000000000000
10  00000000000000  08000000000000  06000000000000  02498970322003
14  f0000000000504  1b2d2d2d2d2d2d  000000000001fc  00000000000000
18  00000000000000  0000000000007f  00000000a00000  06000000000000
1c  04000000000000  07000000000000  05000000000000  03000000000000
20  00000000000000  00000000000000  04000000000000  08000000000000
24  02100000000001  00000000000000  00000000000000  00000000000000
fc  000000000000b2  1b82fac9b9cbbb  caba0bc1c1c1f1  40f9f9f4f2e80a
A: 32499970322000  B: 32499970322eae  C: 40997997010eae
S: 00000000000000
M: 00000000000000  N: 02499970322003  G: 09
&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_12&quot;&gt;LF15C Memory Dump &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_12&quot;&gt;
&lt;p&gt;

43 100 112 30 27 36 36 13 0 26 22 22 22 43 101 84 4 88 8 99 19 37 71 0 7 101 58 86 0

&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The SAVAGE benchmark&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_savage_benchmark&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;5494-7313&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;results&quot;&gt;Results&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
On Battery:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit10&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; Calculator &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Firmware &lt;/th&gt;&lt;th class=&quot;col2&quot;&gt; Seconds &lt;/th&gt;&lt;th class=&quot;col3&quot;&gt; Mins/seconds &lt;/th&gt;&lt;th class=&quot;col4&quot;&gt; Comment &lt;/th&gt;&lt;th class=&quot;col5&quot;&gt; Displayed Result &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DM15L * &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15c_beta250217b &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 3.862 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 0 mins 3.862 sec &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; Timed by internal function “runTime” &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2500.00000000118 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DM15L * &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15c_beta250215 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 3.969 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 0 mins 3.969 sec &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; Timed by internal function “runTime” &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2500.00000000118 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM15l * &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C_250408 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 4.008 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 0 mins 4.008 sec &lt;/td&gt;&lt;td class=&quot;col4 rightalign&quot;&gt;  Timed by internal function “runTime” &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2500.00000000118 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM15L * &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15c_beta241006 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 5.9510 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 0 mins 5.951 sec &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; Timed by internal function “runTime” &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2500.00000000118 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM15L * &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; LF15C_beta240928 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 6.3 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 0 min 6.3 sec &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; manually timed &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2500.00000000118 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; DM32  &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 2.03 &amp;amp; 2.06 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 6.3 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 0 min 6.3 sec &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2500.00000000 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; DM42  &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 3.22 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;14.9 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 0 min 14.9 sec &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2500.00000000 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM41X &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 2.3 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 143.69 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;2 min 26.69 sec &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; FAST mode / USB Power &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2499.970322 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM41X &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 2.1 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 207.03 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;3 min 27.03 sec &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; FAST mode &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2499.970322 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM41X &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 2.2 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 244.2 seconds&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 4 min 4.25 sec &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; FAST mode&lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2499.970322 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM15L &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM15_M1B_34 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 247.3 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 4 min 34.3 sec &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 48MHz &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2499.970322 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row12&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM41X &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 2.3 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 284.15 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 4 min 44.15 sec &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; FAST Mode &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2499.970322 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row13&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM15L &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM15_32 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 288 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 4 min 48 sec&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 48MHz &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2499.970322 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row14&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM41L &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41_34 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 513.73 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 8 min 33 sec &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 48MHZ &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2499.970322 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row15&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM41L &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41_32 &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; 758.67 seconds  &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; 12 min 38.67 sec  &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 48MHz &lt;/td&gt;&lt;td class=&quot;col5 leftalign&quot;&gt; 2499.970322  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row16&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; HP35S &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; n/a &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;877 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 14 min 37 sec &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2499.99939863 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row17&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM41L &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41_34 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 1285.93 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 21 min 25.93 seconds &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 12MHz &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2499.970322 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row18&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM41X &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 2.1 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;2652.37 seconds &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 44 min 12.37 sec &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;SLOW mode &lt;/td&gt;&lt;td class=&quot;col5 leftalign&quot;&gt; 2499.970322  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row19&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; HP11C &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;5160 seconds   &lt;/td&gt;&lt;td class=&quot;col3 centeralign&quot;&gt;  1 hour 26 min 0 sec   &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt;     &lt;/td&gt;&lt;td class=&quot;col5 leftalign&quot;&gt; 2499.970322  &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;7346-9074&amp;quot;} --&gt;
&lt;p&gt;
On USB Power : 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DM41X : 58.1 seconds (FAST mode) (F/W/ Version ?)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DM42  : 5.56 seconds&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Results&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;results&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;7314-9176&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;n-queens&quot;&gt;N-Queens&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.hpmuseum.org/cgi-bin/articles.cgi?read=700&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/cgi-bin/articles.cgi?read=700&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.hpmuseum.org/cgi-bin/articles.cgi?read=700&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Raw File : N-Queens file (nqu) for DM41X &amp;amp; DM42 &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:progs:nqu.raw&quot; class=&quot;media mediafile mf_raw&quot; title=&quot;public:calculator:progs:nqu.raw (81 B)&quot;&gt;nqu.raw&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
State File : nqu for DM32 &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:benchmarking:nqu.d32&quot; class=&quot;media mediafile mf_d32&quot; title=&quot;public:calculator:benchmarking:nqu.d32 (738 B)&quot;&gt;nqu.d32&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_13&quot;&gt;Listing for HP41/DM41X/DM41L/HP42/DM42 &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_13&quot;&gt;&lt;pre class=&quot;code&quot;&gt;
// for HP41 / HP 42  ... DM41X, DM41L, DM42
// shows run-time on completion

LBL &amp;quot;NQU&amp;quot;   
CLRG
TIME
STO 20
8 
STO 11
LBL 00  
RCL 00 
RCL 11
X=Y? 
GTO 04
ISG 00 
DEG
STO IND 00
LBL 01 
ISG 10 
DEG
RCL 00 
STO 09
LBL 02  
DSE 09 
DEG
RCL 09 
X=0? 
GTO 00
RCL IND 00 
RCL IND 09 
-
X=0? 
GTO 03
ABS 
RCL 00 
RCL 09 
-
X&amp;lt;&amp;gt;Y? 
GTO 02
LBL 03  
DSE IND 00 
GTO 01
DSE 00 
GTO 03
LBL 04 
RCL 10
TIME 
RCL 20
HMS-
HR
3600
*
RTN
&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_14&quot;&gt;Listing for DM15L with LF15C firmware &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_14&quot;&gt;&lt;pre class=&quot;code&quot;&gt;LBL 88
CLEAR REG
8
STO 10
LBL 80
RCL 0
RCL 10
X=Y?
GTO 84
1
STO+ 0
RCL 0
STO I
RCL 10
STO (i)
LBL 81
1
STO+ 11
RCL 0
STO 9
LBL 82
1
STO- 9
RCL 9
X=0?
GTO 80
RCL 0
STO I
RCL (i)
RCL 9
STO I
RDN
RCL (i)
-
X=0?
GTO 83
ABS
RCL 0
RCL 9
-
X&amp;lt;&amp;gt;Y?
GTO 82
LBL 83
RCL 0
STO I
1
STO- (i)
RCL (i)
X&amp;lt;&amp;gt;0?
GTO 81
1
STO- 0
RCL 0
X&amp;lt;&amp;gt;0?
GTO 83
LBL 84
RCL 11
runTime
RTN
&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_15&quot;&gt;LF15C Memory Dump &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_15&quot;&gt;
&lt;p&gt;
Runs via &lt;code&gt;f LBL 88&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;

43 88 54 32 13 10 43 80 17 0 17 10 118 6 7 84 26 121 0 17 0 13 254 17 10 13 255 43 81 26 121 11 17 0 13 9 43 82 26 122 9 17 9 118 12 7 80 17 0 13 254 17 255 17 9 13 254 10 17 255 38 118 12 7 83 104 17 0 17 9 38 118 7 7 82 43 83 17 0 13 254 26 122 255 17 255 118 1 7 81 26 122 0 17 0 118 1 7 83 43 84 17 11 58 86 0 

&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_16&quot;&gt;Listing for DM15L / HP15C &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_16&quot;&gt;&lt;pre class=&quot;code&quot;&gt;LBL A
CLR_REG
8
STO .0
LBL 0
RCL 0
RCL .0
TEST 5
GTO 4
1
STO+0
RCL 0
STO I
RCL .0
STO (i)
LBL 1
1
STO+.1
RCL 0
STO 9
LBL 2
1
STO-9
RCL 9
x=0
GTO 0
RCL 0
STO I
RCL (i)
RCL 9
STO I
R_down
RCL (i)
-
x=0
GTO 3
ABS
RCL 0
RCL 9
-
TEST 6
GTO 2
LBL 3
RCL 0
STO I
1
STO-(i)
RCL (i)
TEST 0
GTO 1
1
STO-0
RCL 0
TEST 0
GTO 3
LBL 4
RCL .1
RTN
&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_17&quot;&gt;DM15L Memory Dump &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_17&quot;&gt;&lt;pre class=&quot;code&quot;&gt;DM15_M1B
00  08000000000000  08000000000000  00000000000000  00000000000000
04  065140fffff000  00000000000008  0000000000000c  00000000999eae
08  00000000000000  22af8d9e7e0080  00000000000000  00000000000000
10  08000000000000  08000000000000  01000000000000  01000000000000
14  f0000000000537  1b2d2d2d2d2d2d  000000000007f7  00000000000000
18  00000000000000  0000000000007f  00000000a00000  04000000000000
1c  01000000000000  03000000000000  06000000000000  02000000000000
20  07000000000000  05000000000000  00000000000000  08000000000000
24  08760000000002  00000000000000  00000000000000  00000000000000
f4  00000000000000  00000000000000  00000000000000  b25104137030a0
f8  dff1117086bddf  f19730031276fb  3930b313ecfb86  c4973986973010
fc  ec39a9dff10249  3091dff1019650  973080dff11475  50300060f8a50a
A: 065140fffff000  B: 065140fffffeae  C: 00000000999eae
S: 00000000000000
M: aaaaaaaaaaaaaa  N: 06514000000000  G: 04
&lt;/pre&gt;
&lt;/div&gt;&lt;div class=&quot;table sectionedit12&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Date&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Calculator&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Serial No.&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Firmware&lt;/th&gt;&lt;th class=&quot;col4&quot;&gt;Seconds&lt;/th&gt;&lt;th class=&quot;col5&quot;&gt;Mins : Secs&lt;/th&gt;&lt;th class=&quot;col6&quot;&gt;Comment&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;12/01/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM15L* &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;21350 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; LF15C_250408 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 0.992 seconds &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 0:0.992 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; Self-timed with runTime function &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;14/04/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM32 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 00812 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 2.11 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 3.02 seconds &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 0:03.02 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; Manual Timed. Battery &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;14/04/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM32 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 00812 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 2.11 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 1.3 seconds &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 0:01.30 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; Manual Timed. USB Power &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;28/01/26&lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; DM42  &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 06434 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 3.23 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 7.30 seconds &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 0:07.30 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; Battery &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;14/01/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41X &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 01266 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 2.3 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 49.55 seconds &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 0:49.55 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; FAST mode / USB Power &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;10/01/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41X &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 01266 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 2.3 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 101.29 seconds &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt;1:41.29 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; FAST mode / battery &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;23/01/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM15L &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 21350 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; DM15_M1B_34 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 202.16 seconds &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 3:22.16 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 48MHz, manually timed &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;10/01/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41L &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 05121 &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; DM41_34  &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; 509.19 seconds  &lt;/td&gt;&lt;td class=&quot;col5 leftalign&quot;&gt; 8:29.19   &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt;48MHz &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;11/01/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41L &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 05121 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; DM41_34 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 870.58 seconds &lt;/td&gt;&lt;td class=&quot;col5 leftalign&quot;&gt; 14:30.58  &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 12MHz &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;10/01/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41X &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 01266 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 2.3 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 1008.60 seconds &lt;/td&gt;&lt;td class=&quot;col5 leftalign&quot;&gt; 16:48.60  &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; SLOW mode / battery &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;12085-12977&amp;quot;} --&gt;
&lt;p&gt;
* Running 3rd party firmware &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-20046.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-20046.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.hpmuseum.org/forum/thread-20046.html&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;N-Queens&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;n-queens&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;9177-13065&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;tony_s_benchmark&quot;&gt;Tony&amp;#039;s Benchmark&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
From &lt;a href=&quot;http://www.thimet.de/CalcCollection/CalcPerformance.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.thimet.de/CalcCollection/CalcPerformance.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.thimet.de/CalcCollection/CalcPerformance.html&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Tony&amp;#039;s Benchmark&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tony_s_benchmark&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:16,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;13066-13162&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;code1&quot;&gt;Code&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_2b77356d1ed6b6f8549872b9c4a844bc_18&quot;&gt;Listing for the benchmark &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_2b77356d1ed6b6f8549872b9c4a844bc_18&quot;&gt;&lt;pre class=&quot;code&quot;&gt;LBL A  (For DM41X and DM42 : LBL &amp;quot;AA&amp;quot;)
10
STO A  (For DM41X and DM42 : STO 00 )
LBL B
1
+
4.567E-4
-
70
+
69
-
7
x
11
/
RCL A (RCL 00)
1
-
STO A (STO 00)
X≠0?
GTO B
R↓
LOG
SIN
SQRT
SQRT
RTN


LBL C  (For DM41X and DM42 : LBL &amp;quot;TBM&amp;quot;)
XEQ A  (XEQ &amp;quot;AA&amp;quot;)
RCL C  (RCL 03)
1
-
STO C (STO 03)
X≠0?
GTO C (GTO &amp;quot;TBM&amp;quot;)
RTN&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
For multiple loops store a Loop Count in C (or in Register 03) 
&lt;/p&gt;

&lt;p&gt;
(&lt;code&gt;1000 STO C&lt;/code&gt;) and then &lt;code&gt;XEQ C&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
For single loop (slow calculator) simply &lt;code&gt;XEQ A&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Result is the time to complete the loop(s) and deliver the answer &lt;code&gt;0.264577&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Performance Index is calculated as 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Loops x 34 / Time&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
For 1000 loops in 13 seconds:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; 1000 x 34 / 13 = 2615.38 &lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Code&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;code1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:16,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;13163-13909&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;results1&quot;&gt;Results&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit16&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Date&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Calculator&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Serial No&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Loops&lt;/th&gt;&lt;th class=&quot;col4&quot;&gt;Time&lt;/th&gt;&lt;th class=&quot;col5&quot;&gt;Performance Index&lt;/th&gt;&lt;th class=&quot;col6&quot;&gt;Comments&lt;/th&gt;&lt;th class=&quot;col7&quot;&gt;Result&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;22/11/23&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM42 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 06434 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 1000 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 8 sec &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 4250 &lt;/td&gt;&lt;td class=&quot;col6 leftalign&quot;&gt; USB Power    &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;22/11/23&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM32 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 00812 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 1000 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 13 sec &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2615 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; f/w : 2.06 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt;0.26457749818 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;22/11/23&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM42 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 06434 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 1000 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 21 sec &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 1619 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; Battery Power &lt;/td&gt;&lt;td class=&quot;col7 leftalign&quot;&gt; 0.26457749818  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;21/09/24&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM15L * &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 21350 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 1000 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 42.8 sec &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 794 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 3rd Party Firmware : LF15C_beta240921 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 0.26457749817596 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;21/09/24&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM15L * &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 21350 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 100 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 4.5 sec &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 756 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 3rd Party Firmware : LF15C_beta240921 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 0.26457749817596 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;22/11/23&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41X&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 01266 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 20 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 6 sec &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 113 &lt;/td&gt;&lt;td class=&quot;col6 leftalign&quot;&gt; FAST mode / USB  &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;09/05/24&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM42 * &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 06434 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 30 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 9.6 sec &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 106 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 3rd Party Firmware : C47 00.109.01.03a2 &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;22/11/23&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM15L &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 21350 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 10 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 12 sec &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 28 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 48MHz &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 0.264577498 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;22/11/23&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41X&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 01266 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 10 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 10 sec &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 24 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; FAST mode / Battery &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 0.264577498 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;22/11/23&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; HP35S &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; PHA9150KFF &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 5 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 25 sec &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 6.8 &lt;/td&gt;&lt;td class=&quot;col6 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;22/11/23&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM15L &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 21350 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 10 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 54 sec &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 6.3 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; 12MHz &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 0.264577498&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row12&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;22/11/23&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DM41X&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 01266 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 10 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 118 sec &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 2.8 &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; SLOW mode/ Battery&lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row13&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;22/11/23&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; HP11C &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 2219A03710 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 1 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 21 sec &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; 1.6 &lt;/td&gt;&lt;td class=&quot;col6 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;13929-15002&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Results&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;results1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:17,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;13910-15005&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;fingerprinting&quot;&gt;Fingerprinting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Each calculator handles the calculation of functions (SIN, COS etc) differently - different algorithms, different degrees of precision etc.
&lt;/p&gt;

&lt;p&gt;
One way of spotting similar underlying hard/firmware is to carry out a fixed chained calculation on each calculator and to observe the result.
&lt;/p&gt;

&lt;p&gt;
One common test is a sequence of SIN COS TAN ATAN ACOS ASIN on a relatively low starting number - such as 9
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;9&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;SIN&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;COS&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;TAN&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ATAN&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ACOS&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ASIN&lt;/kbd&gt; gives a number (hopefully) very close to the starting value of &lt;code&gt;9&lt;/code&gt; - and the variance from &lt;code&gt;9&lt;/code&gt; is a fingerprint that can be used to spot similarities between different models.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit18&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Calculator&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Displayed Result &lt;sup&gt;&lt;a href=&quot;#fn__3&quot; id=&quot;fnt__3&quot; class=&quot;fn_top&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt;&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt; Error (Result - 9) &lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Firmware &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; HP11C &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 9.000417403 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 4.17403e-4 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM15L &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 9.000417403 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 4.17403e-4 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; DM15_32 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM41X &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 9.000417403 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 4.17403e-4 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 2.1 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM41L &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 9.000417403 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 4.17403e-4 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; DM41_32 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; HP35S &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 8.99999986001 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; -1.3999e-7 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; DM15L * &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 8.99999999983416 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; -1.65842e-10 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 3rd party LF15C_beta240916 17/09/24 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; DM42  &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 9.00000000000 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; -6.2466e-29 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; DM42 3.22 / Free42 3.0.15 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; DM32  &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 9.00000000000 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; -6.2466e-29 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 2.06 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table4&amp;quot;,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;15713-16221&amp;quot;} --&gt;
&lt;p&gt;
I also found a different version of the same idea at &lt;a href=&quot;https://tangentsoft.com/rpn/wiki?name=Ballpark+Accuracy#results&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://tangentsoft.com/rpn/wiki?name=Ballpark+Accuracy#results&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://tangentsoft.com/rpn/wiki?name=Ballpark+Accuracy#results&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Instead of &lt;strong&gt;subtracting 9&lt;/strong&gt; from the result this test &lt;strong&gt;divides the result by 9&lt;/strong&gt; and then finds the &lt;strong&gt;LOG&lt;sub&gt;10&lt;/sub&gt;&lt;/strong&gt; of this fractional error
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;9&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;SIN&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;COS&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;TAN&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ATAN&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ACOS&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ASIN&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;9&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;/&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;LOG&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
Here are some of these results 
&lt;/p&gt;
&lt;div class=&quot;table sectionedit19&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Calculator&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Displayed Result&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Error=(Result / 9)&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Log&lt;sub&gt;10&lt;/sub&gt;(Error)&lt;/th&gt;&lt;th class=&quot;col4&quot;&gt;Comments&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DM41X&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;9.000417403&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;1.000046378&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;2.0141242e&lt;strong&gt;-05&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; f/w 2.3 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DM41L&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;9.000417403&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;1.000046378&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;2.0141242e&lt;strong&gt;-05&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; f/w DM41_34 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DM15L*&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;8.99999999983416&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;0.999999999981573&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;-8.0027125631e&lt;strong&gt;-12&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;3rd Party F/W LF15C_250408 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DM42&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;9.00000000000&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;1.00000000000&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;3.01430771055e&lt;strong&gt;-30&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;DM42 3.26 / Free42 3.3.10 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DM32&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;9.00000000000&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;1.00000000000&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;3.01430771055e&lt;strong&gt;-30&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;DM32 2.11 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table5&amp;quot;,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;16675-17126&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Fingerprinting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fingerprinting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:17,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;15006-17127&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;page_info&quot;&gt;Page Info&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Page created Thu May 26 07:58:36 2022 by John Pumford-Green
&lt;/p&gt;

&lt;p&gt;
Page last updated: 14/04/26 14:35 BST
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Page Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;page_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:17,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;17128-17245&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit21&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:calculator&amp;amp;do=showtag&amp;amp;tag=calculator&quot; class=&quot;wikilink1&quot; title=&quot;tag:calculator&quot; rel=&quot;tag&quot;&gt;calculator&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:17,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;17246-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;versus HP9100 : 679&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;versus HP9100 : 40&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__3&quot; id=&quot;fn__3&quot; class=&quot;fn_bot&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;at max. display resolution&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 14 Apr 2026 13:35:47 +0000</pubDate>
        </item>
        <item>
            <title>DM41X Info</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:info:dm41x_info</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:info:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:info:start&quot; data-wiki-id=&quot;public:calculator:info:start&quot;&gt;Calculator Hardware&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dm41x_info&quot;&gt;DM41X Info&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acalculator%3Ainfo%3Adm41x_info&amp;amp;media=public:calculator:dm41_2.jpg&quot; class=&quot;media&quot; title=&quot;public:calculator:dm41_2.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=9c74b4&amp;amp;media=public:calculator:dm41_2.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DM41X Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dm41x_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;10-287&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;purchase_information&quot;&gt;Purchase Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Date   : February 2022&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; From   : Swiss Micros (Direct)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Price  : £185&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Serial : 01266&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Battery Swap&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 22/09/22&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 11/02/25&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 19/02/26&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 13/04/26&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Purchase Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;purchase_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;288-502&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;firmware&quot;&gt;Firmware&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;table sectionedit4&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Date&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Serial No.&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;DM41X Version&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;DMCP Version&lt;/th&gt;&lt;th class=&quot;col4&quot;&gt;Firmware Files&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;24/05/22 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;01266&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 2.1 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 3.20 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:dmcp_flash_3.20_dm41x-2.1.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:dmcp_flash_3.20_dm41x-2.1.zip (248.6 KB)&quot;&gt;dmcp_flash_3.20_dm41x-2.1.zip&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;27/07/24&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 01266&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 2.2 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 3.25 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:dmcp_flash_3.25_dm41x-2.2.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:dmcp_flash_3.25_dm41x-2.2.zip (254.9 KB)&quot;&gt;dmcp_flash_3.25_dm41x-2.2.zip&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;21/12/25 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 01266 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 2.3 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 3.28 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:dmcp_flash_3.28_dm41x-2.3.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:dmcp_flash_3.28_dm41x-2.3.zip (262.7 KB)&quot;&gt;dmcp_flash_3.28_dm41x-2.3.zip&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;525-859&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Firmware&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;firmware&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;503-860&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;rtc_correction&quot;&gt;RTC Correction&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; approx. error +3.5s/d = +40.5ppm&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Correction factor C from &lt;code&gt;C = 2^20 P /(10^6 + P)&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Approximations : &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;C = 1.04858 P&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;P = 0.953674 C&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Calculated &lt;code&gt;C = -42.47&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Put a text file &lt;code&gt;/rtccalib.cfg&lt;/code&gt; in root directory of FAT drive with contents:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;-42.47&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RTC Correction&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rtc_correction&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;861-1186&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;update_28_5_22&quot;&gt;Update 28/5/22&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
After a period of observation the rate is now over-corrected. Try reducing correction to &lt;code&gt;-37.5&lt;/code&gt; which corresponds to a ppm error of &lt;code&gt;35.76ppm&lt;/code&gt;, or &lt;code&gt;3.26 s/d&lt;/code&gt;.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit7&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Date Start&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Date Check&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Accumulated Error (s)&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Rate Error (s/d)&lt;/th&gt;&lt;th class=&quot;col4&quot;&gt;Comments&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;28/3/22 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;24/5/22 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;-0.1 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;correction applied (C=40). Uncorrected error +3.5&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;24/5/22&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;new correction C=-42.47 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;24/5/22&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;25/5/22&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;-0.3 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;new correction in wrong direction? &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;28/5/22&lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;-0.3&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;still over-corrected. New factor: -37.5. DM41X reports this is a correction of -35.3ppm &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;28/5/22&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;31/5/22 &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;+0.2 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; Now under-corrected? Difference across 3 days is only 0.5 seconds, so perhaps needs longer to reduce reaction-time-error&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;28/5/22 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;28/6/22 &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; +0.1 &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt;Almost 1 month later. Delta 31/5/22 = -15.7s, Delta 28/6/22 = -11.6s. +4.1s in 28 days  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;28/5/22&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 8/7/22&lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; +0.1 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;Delta -10.1s &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;28/5/22 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 21/9/22 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; + 0.2 &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; Delta +1.2s. Still slightly under-corrected but good enough  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;28/5/22 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 15/4/23&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; -7.6 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; +0.0 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; Delta -7.6s in 322 days = 0.02 s/d &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15/04/23 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 22/11/23 &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; +33.3   &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; +0.2   &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 33.3s in 221 days = 0.15 s/d &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1381-2292&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Update 28\/5\/22&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;update_28_5_22&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1187-2293&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;update_january_2026&quot;&gt;Update January 2026&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Using my &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:watches:watchcheck&quot; class=&quot;wikilink1&quot; title=&quot;public:miscellany:watches:watchcheck&quot; data-wiki-id=&quot;public:miscellany:watches:watchcheck&quot;&gt;python Watchcheck&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&quot;table sectionedit9&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Date Start&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Date Check&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Delta&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Latest Rate Error&lt;/th&gt;&lt;th class=&quot;col4&quot;&gt;Average Rate Error&lt;/th&gt;&lt;th class=&quot;col5&quot;&gt;Comments&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;23/01/26 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; +2.7 &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; New Period: correction-35.3ppm &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;23/01/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 24/01/26 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; +2.6 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; -0.1 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; -0.1 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; After 24 hours &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;23/01/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 26/01/26 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; +3.0 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; +0.2 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; +0.1 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; After 3 days &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;23/01/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 27/01/26 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; +3.2 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; +0.3 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; +0.1 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; After 4 days &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;23/01/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 04/02/26 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; +5.0 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; +0.2 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; +0.2 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; After 12 days &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;23/01/26&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 11/02/26 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; +6.1 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; +0.1 &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; +0.2 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; After 19 days &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;2393-2822&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Update January 2026&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;update_january_2026&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2294-2824&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;notes&quot;&gt;Notes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Notes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;notes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;2825-2843&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;complex_numbers&quot;&gt;Complex Numbers&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
For more about the &lt;code&gt;41Z&lt;/code&gt; see the separate page &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:41z_module&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:41z_module&quot; data-wiki-id=&quot;public:calculator:guides:41z_module&quot;&gt;DM41X 41z Module&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;m using the &lt;code&gt;41Z complex number&lt;/code&gt; module by Angel Martin to add a 4-level complex number stack. It&amp;#039;s a bit confusing at first to get to grips with, but adds a lot of functionality to the the DM41x.
&lt;/p&gt;

&lt;p&gt;
After a bit of trial and error (this is my first play with a “plug-in module” after all) I discovered the simplest way to make the keyboard function normally, and get easy access when needed to the complex functions, was to assign a USER key (usually the statistics summation key &lt;code&gt;∑+&lt;/code&gt; to the 41Z module function &lt;code&gt;∑ZL&lt;/code&gt;. 
&lt;/p&gt;

&lt;p&gt;
Each press of &lt;code&gt;∑+&lt;/code&gt; now temporarily modifies all the keys to access specific 41Z functions. The functions available are extensive, through the use of the &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; key and by multiple presses of the &lt;code&gt;∑+&lt;/code&gt; (henceforth referred to as  &lt;code&gt;Z&lt;/code&gt;) key. 
&lt;/p&gt;

&lt;p&gt;
I drew out a diagram to show the various functions available. 
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acalculator%3Ainfo%3Adm41x_info&amp;amp;media=public:calculator:2022-02-18_23.03.17.jpg&quot; class=&quot;media&quot; title=&quot;public:calculator:2022-02-18_23.03.17.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=edcd4e&amp;amp;media=public:calculator:2022-02-18_23.03.17.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Once a selection is made the keyboard switches back to its normal behaviour, so all the usual functionality is available.
&lt;/p&gt;

&lt;p&gt;
Most of these are unlikely to be used often - and it&amp;#039;s also possible to make a much narrow selection of 41Z functions and make your own &lt;code&gt;USER&lt;/code&gt; assignments, rather than use the &lt;code&gt;∑ZL&lt;/code&gt; keyboard - although this might mean you block access to inbuilt functions you might want - which would mean switching out of USER keyboard mode at times. At the moment the &lt;code&gt;∑ZL&lt;/code&gt; option seems the most versatile.
&lt;/p&gt;

&lt;p&gt;
Many of the 41Z functions available are beyond my pay grade and unlikely to ever find a use, but the Complex Keyboard still makes things much easier to deal with.
&lt;/p&gt;

&lt;p&gt;
For example the two keypresses:
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;Z&lt;/kbd&gt;  &lt;kbd class=&quot;__keyboard&quot;&gt;1\x&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
is much easier than the 7 it would otherwise need to invert a complex number 
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Z&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;I&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;N&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;V&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;
I need to practice finding the right function (the main ones printed on the keyboard as well as the new ones provided by 41Z&amp;#039;s &lt;code&gt;∑ZL&lt;/code&gt; keyboard, but my fingers are slowly starting to move in the right direction.
&lt;/p&gt;

&lt;p&gt;
One thing I do notice, though, as that due to the need to press various keys (&lt;code&gt;XEQ, ALPHA, SHIFT&lt;/code&gt; etc) it&amp;#039;s sometimes possible to make a real mess if you miss a vital key in the middle of entering lots of data &amp;amp; instructions and find your stack totally screwed up, or several lines of program code full of nonsense….  
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;m sure it&amp;#039;ll all become second nature soon enough.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acalculator%3Ainfo%3Adm41x_info&amp;amp;media=public:calculator:2022-02-18_23.42.07.jpg&quot; class=&quot;media&quot; title=&quot;public:calculator:2022-02-18_23.42.07.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=300&amp;amp;tok=cf5ef2&amp;amp;media=public:calculator:2022-02-18_23.42.07.jpg&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acalculator%3Ainfo%3Adm41x_info&amp;amp;media=public:calculator:2022-02-18_23.41.20.jpg&quot; class=&quot;media&quot; title=&quot;public:calculator:2022-02-18_23.41.20.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=300&amp;amp;tok=aafcc6&amp;amp;media=public:calculator:2022-02-18_23.41.20.jpg&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Complex Numbers&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;complex_numbers&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;2844-5684&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;hp16c_emulator_module&quot;&gt;HP16C Emulator module&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
This is another interesting module to add the functionality of the HP16C - the &lt;strong&gt;Programmer&amp;#039;s Calculator&lt;/strong&gt; designed to handle calculations in various mathematical bases as used in computer programming and networking : Binary, Octal, Hexadecimal and Decimal. I adds much more value than the rather basic functions in the &lt;em&gt;Advantage Pac&lt;/em&gt; module.
&lt;/p&gt;

&lt;p&gt;
After much trial and error I found a combination of HP16C module and &lt;em&gt;Library 4&lt;/em&gt; library that worked correctly. The &lt;code&gt;HP16C&lt;/code&gt; module &lt;em&gt;needs&lt;/em&gt; the &lt;code&gt;Library 4&lt;/code&gt; module, but I found some problems with different versions. Using the versions contained in the &lt;em&gt;Swiss Micros&lt;/em&gt; package had a weird bug - the &lt;strong&gt;16* &lt;/strong&gt; (multiplication) function simply didn&amp;#039;t work. I found a post by Angel Martin on the HP Calculator Forum with a ZIP file containing the 2 modules that &lt;em&gt;&lt;strong&gt;worked&lt;/strong&gt;&lt;/em&gt; correctly.
&lt;/p&gt;

&lt;p&gt;
Here is the zip file : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:hp-16c_rev.1a.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:hp-16c_rev.1a.zip (19.5 KB)&quot;&gt;hp-16c_rev.1a.zip&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ll make a separate guide to using the main features here &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:hp16c_emulator&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:hp16c_emulator&quot; data-wiki-id=&quot;public:calculator:guides:hp16c_emulator&quot;&gt;DM41X HP16C Module&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HP16C Emulator module&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hp16c_emulator_module&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;5685-6728&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;guides&quot;&gt;Guides&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:start&quot; data-wiki-id=&quot;public:calculator:guides:start&quot;&gt;Hints &amp;amp; Tips&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Guides&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;guides&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;6729-6787&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;swiss_micros_info&quot;&gt;Swiss Micros Info&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Firmware      : &lt;a href=&quot;https://technical.swissmicros.com/dm41x/firmware/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://technical.swissmicros.com/dm41x/firmware/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://technical.swissmicros.com/dm41x/firmware/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Documentation : &lt;a href=&quot;https://technical.swissmicros.com/dm41x/doc/dm41x_user_manual.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://technical.swissmicros.com/dm41x/doc/dm41x_user_manual.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Online User Manual&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Documentation : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:dm41x_user_manual.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:calculator:info:dm41x_user_manual.pdf (1.2 MB)&quot;&gt; PDF Manual&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Product Page  : &lt;a href=&quot;https://www.swissmicros.com/product/dm41x&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.swissmicros.com/product/dm41x&quot; rel=&quot;ugc nofollow noopener&quot;&gt;DM41X&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Swiss Micros Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;swiss_micros_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;6788-7160&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;issues&quot;&gt;Issues&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Arrived new with a speck of dirt behind the glass in front of the LCD. &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Able to remove by carefully prising the glass from its bezel (it&amp;#039;s held in with double-sided tape)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Issues&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;issues&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;7161-7362&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;z_deluxe_module&quot;&gt;41Z Deluxe Module&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_895bd392576554e817cf2ced8edce012_1&quot;&gt;Weird behaviour with its &amp;quot;common factor&amp;quot; display &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_895bd392576554e817cf2ced8edce012_1&quot;&gt;&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A number such as &lt;code&gt;10 + j 1&lt;/code&gt; &lt;em&gt;displays&lt;/em&gt; as &lt;code&gt;10(1 + j)&lt;/code&gt; which is &lt;strong&gt;wrong&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; example:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;( 5 + j 10 ) + ( 45 - j 5 ) &lt;/code&gt; is really &lt;code&gt;( 50 + j 5)&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; calculator displays &lt;code&gt;50(1 + j)&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; the actual numbers in the registers are correct (50 for Real in X and 5 for imaginary in Y) but the answer displayed as &lt;code&gt;50( 1 + j )&lt;/code&gt; is badly misleading.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; doing further calculations with the number on the stack is correct, as long as the answer doesn&amp;#039;t have the same display-factorisation bug to mislead you. The only way to be sure is to look at the underlying X and Y stack registers. This spoils the nice &lt;code&gt;ALPHA&lt;/code&gt; display of complex numbers, though.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; it appears whenever the real and imaginary numbers are related by factors of 10 (e.g. 5 and 50, 2 and 20, 3 and 3000, 25 and 250)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em class=&quot;u&quot;&gt;My&lt;/em&gt; Solution is to abandon the &lt;code&gt;deluxe&lt;/code&gt; module and revert to a previous version, &lt;em class=&quot;u&quot;&gt;not deluxe&lt;/em&gt; : &lt;code&gt;HP41Z Complex Number Module&lt;/code&gt; version &lt;code&gt;4L&lt;/code&gt; and the appropriate &lt;code&gt;library4&lt;/code&gt; module.&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; This module seems to handle the &lt;code&gt;common factor&lt;/code&gt; display correctly. &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; it &lt;strong&gt;does not&lt;/strong&gt; show &lt;code&gt;50 + j 5&lt;/code&gt; as &lt;code&gt;50( 1 + j )&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; it &lt;strong&gt;does&lt;/strong&gt; show &lt;code&gt;50 + j 50 &lt;/code&gt; as &lt;code&gt;50( 1 + j )&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; It requires a different &lt;code&gt;USER KEY&lt;/code&gt; assignment:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
 &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ASN&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Z&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;K&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;B&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Σ+&lt;/kbd&gt;
&lt;/p&gt;

&lt;h4&gt;Module files that work (for me)&lt;/h4&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:41z.mod&quot; class=&quot;media mediafile mf_mod&quot; title=&quot;public:calculator:info:41z.mod (10.8 KB)&quot;&gt;41z.mod&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:library4.mod&quot; class=&quot;media mediafile mf_mod&quot; title=&quot;public:calculator:info:library4.mod (5.8 KB)&quot;&gt;library4.mod&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; See &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:41z_module&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:41z_module&quot; data-wiki-id=&quot;public:calculator:guides:41z_module&quot;&gt;DM41X 41z Module&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h4 id=&quot;update_september_2024&quot;&gt;Update September 2024&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
The factorization error in the &lt;code&gt;deluxe&lt;/code&gt; version has been fixed by Angel…. 
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://forum.swissmicros.com/viewtopic.php?f=26&amp;amp;t=4029&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://forum.swissmicros.com/viewtopic.php?f=26&amp;amp;t=4029&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Swiss Micros forum discussion about the issue &lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; the fixed version &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:info:41z_bs_2x2_2_.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:calculator:info:41z_bs_2x2_2_.zip (16 KB)&quot;&gt;41z_bs_2x2_2_.zip&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; My page &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:41z_module&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:41z_module&quot; data-wiki-id=&quot;public:calculator:guides:41z_module&quot;&gt;DM41X 41z Module&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;41Z Deluxe Module&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;z_deluxe_module&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;7363-9380&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;dm41x_program_listings&quot;&gt;DM41X Program Listings&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; See &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:progs:dm41x_progs&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:progs:dm41x_progs&quot; data-wiki-id=&quot;public:calculator:progs:dm41x_progs&quot;&gt;DM41X Progs&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DM41X Program Listings&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dm41x_program_listings&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;9381-9467&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;hp-41cx_owner_s_manuals&quot;&gt;HP-41CX Owner&amp;#039;s Manuals&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Download from &lt;a href=&quot;https://literature.hpcalc.org&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://literature.hpcalc.org&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://literature.hpcalc.org&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; HP-41CX Owner&amp;#039;s Manual Vol. 1 : &lt;a href=&quot;https://literature.hpcalc.org/community/hp41cx-om-vol1-en.pdf&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://literature.hpcalc.org/community/hp41cx-om-vol1-en.pdf&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://literature.hpcalc.org/community/hp41cx-om-vol1-en.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; HP-41CX Owner&amp;#039;s Manual Vol. 2 : &lt;a href=&quot;https://literature.hpcalc.org/community/hp41cx-om-vol2-en.pdf&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://literature.hpcalc.org/community/hp41cx-om-vol2-en.pdf&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://literature.hpcalc.org/community/hp41cx-om-vol2-en.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; HP-41CX Quick Reference Guide : &lt;a href=&quot;https://literature.hpcalc.org/community/hp41cx-qrg-en.pdf&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://literature.hpcalc.org/community/hp41cx-qrg-en.pdf&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://literature.hpcalc.org/community/hp41cx-qrg-en.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Page Updated : 13/04/26 19:35 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:calculator&amp;amp;do=showtag&amp;amp;tag=calculator&quot; class=&quot;wikilink1&quot; title=&quot;tag:calculator&quot; rel=&quot;tag&quot;&gt;calculator&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dm41x&amp;amp;do=showtag&amp;amp;tag=dm41x&quot; class=&quot;wikilink1&quot; title=&quot;tag:dm41x&quot; rel=&quot;tag&quot;&gt;dm41x&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HP-41CX Owner&amp;#039;s Manuals&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hp-41cx_owner_s_manuals&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;9468-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 13 Apr 2026 18:35:30 +0000</pubDate>
        </item>
        <item>
            <title>Sandbox Server</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:sandbox_server</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:start&quot; data-wiki-id=&quot;public:computers:archive:start&quot;&gt;Archive&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;sandbox_server&quot;&gt;Sandbox Server&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; UPDATE — &lt;em&gt;John Pumford-Green 04/03/25 08:02 GMT&lt;/em&gt; &lt;/strong&gt;
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteclassic&quot;&gt;The hardware running this little machine has recently become unreliable, the SSD is dying, so I&amp;#039;ve turned it off. I&amp;#039;ll leave any old information about this box for future reference

&lt;/div&gt;
&lt;p&gt;
&lt;strong&gt; UPDATE — &lt;em&gt;John Pumford-Green 27/04/23 06:16&lt;/em&gt; &lt;/strong&gt;
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteclassic&quot;&gt;I have removed the self-signed SSL configuration on the shack &lt;em&gt;sandbox&lt;/em&gt; server and reverted it to plain HTTP.
I may re-instate it at some point in the future, but I decided I didn&amp;#039;t want the hassle of persuading Chrome to accept the self-signed &lt;em&gt;unsafe&lt;/em&gt; certificate all the time.
&lt;p&gt;
The details below show how it was originally set up, and can be used in future should I decide to repeat the process.
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sandbox Server&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sandbox_server&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-779&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;encryption&quot;&gt;Encryption&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The shack webserver has a mirror of my &lt;em&gt;real&lt;/em&gt; dokuwiki, to use as a test-bed and after setting it up I discovered that the encryption plugin I was using on the &lt;em&gt;real&lt;/em&gt; wiki &lt;a href=&quot;https://www.dokuwiki.org/plugin:encryptedpasswords&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:encryptedpasswords&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Encrypted Passwords Plugin&lt;/a&gt; didn&amp;#039;t work.
&lt;/p&gt;

&lt;p&gt;
After some head scratching, and after trying out another plugin (dokucrypt2 plugin), I figured out the difference between the 2 web servers….
&lt;/p&gt;

&lt;p&gt;
The &lt;em&gt;real&lt;/em&gt; server is configured to do proper HTTPS, with a real, signed SSL certificate. The shack server only does plain old HTTP, no encryption.
&lt;/p&gt;

&lt;p&gt;
To test out my theory that this is what was &lt;em&gt;breaking&lt;/em&gt; Encrypted Password Plugin I setup self-signed SSL on the shack webserver. It&amp;#039;s just for local testing so there&amp;#039;s no need for traceable certification, just the ability to handle HTTPS traffic.
&lt;/p&gt;

&lt;p&gt;
It turned out to be quite simple….
&lt;/p&gt;

&lt;p&gt;
I found the information here : &lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-16-04&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-16-04&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-16-04&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;shack:~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ssl_setup$ &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; openssl req &lt;span class=&quot;re5&quot;&gt;-x509&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-nodes&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-days&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;365&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-newkey&lt;/span&gt; rsa:&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-keyout&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ssl&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;private&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;apache-selfsigned.key &lt;span class=&quot;re5&quot;&gt;-out&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ssl&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;certs&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;apache-selfsigned.crt
Generating a RSA private key
.......................+++++
...........+++++
writing new private key to &lt;span class=&quot;st_h&quot;&gt;&#039;/etc/ssl/private/apache-selfsigned.key&#039;&lt;/span&gt;
&lt;span class=&quot;re5&quot;&gt;-----&lt;/span&gt;
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter &lt;span class=&quot;st_h&quot;&gt;&#039;.&#039;&lt;/span&gt;, the field will be left blank.
&lt;span class=&quot;re5&quot;&gt;-----&lt;/span&gt;
Country Name &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; letter code&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;AU&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;:GB
State or Province Name &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;full name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Some-State&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;:Shetland
Locality Name &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;eg, city&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;:Clousta
Organization Name &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;eg, company&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Internet Widgits Pty Ltd&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;:GM4SLV
Organizational Unit Name &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;eg, section&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;:GM4SLV
Common Name &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;e.g. server FQDN or YOUR name&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;:shack
Email Address &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;:&lt;/pre&gt;

&lt;p&gt;
The certificates are put in the directories already pointed to in the default SSL site config file so all I had to do was tell apache to enable ssl 
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; a2enmod ssl&lt;/pre&gt;

&lt;p&gt;
and enable the default SSL site
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;shack:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;apache2&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sites-enabled$ &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; a2ensite default-ssl.conf
Enabling site default-ssl.
To activate the new configuration, you need to run:
  systemctl reload apache2
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;shack:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;apache2&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sites-enabled$ &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; service apache2 restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Encryption&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;encryption&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;780-3302&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;ssl_enabled&quot;&gt;SSL enabled&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Browse to &lt;a href=&quot;https://shack/dokuwiki&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://shack/dokuwiki&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://shack/dokuwiki&lt;/a&gt; and I got the usual dire Chrome warning
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:screenshot_2022-05-30_19.19.16.png&quot; class=&quot;media&quot; title=&quot;public:computers:screenshot_2022-05-30_19.19.16.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=aa13cc&amp;amp;media=public:computers:screenshot_2022-05-30_19.19.16.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
…. but chose to continue anyway…
&lt;/p&gt;

&lt;p&gt;
and it works!
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:screenshot_2022-05-30_19.15.26.png&quot; class=&quot;media&quot; title=&quot;public:computers:screenshot_2022-05-30_19.15.26.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=863cab&amp;amp;media=public:computers:screenshot_2022-05-30_19.15.26.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSL enabled&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssl_enabled&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;3303-3600&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;encrypted_password_plugin&quot;&gt;Encrypted Password Plugin&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Then I tested the Encrypted Passwords Plugin and &lt;strong&gt; it also works &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
UPDATE— &lt;em&gt;John Pumford-Green 31/05/22 21:13&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
The &lt;a href=&quot;https://www.dokuwiki.org/plugin:encryptedpasswords&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:encryptedpasswords&quot; rel=&quot;ugc nofollow noopener&quot;&gt;plugin page&lt;/a&gt; does say that HTTPS is needed:
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Please note that the modern encryption mechanisms used within this Plugin require a modern Browser, JavaScript enabled and a wiki served via HTTPS!&lt;/div&gt;&lt;/blockquote&gt;

&lt;/div&gt;

&lt;h4 id=&quot;result&quot;&gt;Result!&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
I can now use the &lt;em&gt;sandbox&lt;/em&gt; wiki to test everything that&amp;#039;s running on the &lt;em&gt;real&lt;/em&gt; wiki server.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;redirect_to_https&quot;&gt;Redirect to https&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
(&lt;strong&gt;UPDATE&lt;/strong&gt; — &lt;em&gt;John Pumford-Green 31/05/22 10:08&lt;/em&gt;)
&lt;/p&gt;

&lt;p&gt;
edit 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;/etc/apache2/sites-enabled/000-default.conf&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
to add 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ServerName gm4slv.plus.com
Redirect permanent / https://gm4slv.plus.com/&lt;/pre&gt;

&lt;p&gt;
Open &amp;amp; forward router&amp;#039;s port TCP/443 to the shack webserver
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;sudo service apache2 restart&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Hey presto - external access to HTTPS 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Encrypted Password Plugin&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;encrypted_password_plugin&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3601-4503&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;page_info&quot;&gt;Page Info&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 30/05/22 19:05&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Page last updated: 30/12/25 09:55 GMT
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:ssl&amp;amp;do=showtag&amp;amp;tag=ssl&quot; class=&quot;wikilink1&quot; title=&quot;tag:ssl&quot; rel=&quot;tag&quot;&gt;ssl&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:apache&amp;amp;do=showtag&amp;amp;tag=apache&quot; class=&quot;wikilink1&quot; title=&quot;tag:apache&quot; rel=&quot;tag&quot;&gt;apache&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dokuwiki&amp;amp;do=showtag&amp;amp;tag=dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;tag:dokuwiki&quot; rel=&quot;tag&quot;&gt;dokuwiki&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Page Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;page_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4504-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>Diversion into the Linux Serial Console...</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:serial_terminal</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;diversion_into_the_linux_serial_console&quot;&gt;Diversion into the Linux Serial Console...&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 01/10/22 22:26&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
In preparation to my plan of adding a pair of RS232 serial ports to the next iteration of the 6502 computer I dug out an old Wyse serial terminal to use. I thought I&amp;#039;d check it still worked after many idle years gathering dust. It was last used when I first started playing with Linux on an old 486/DX2 machine (Red Hat 6 I think) and used it to access the headless 486 machine through a serial console.
&lt;/p&gt;

&lt;p&gt;
To re-live the experience I hooked it up to my little “pico-ITX” Linux server, which has a real serial port with a 9-pin D connector (!) and set about configuring Debian 11 with systemd (urgh!) to provide a console and login on /dev/ttyS0.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:linux_serial_console&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:linux_serial_console&quot; data-wiki-id=&quot;public:computers:archive:linux_serial_console&quot;&gt;Linux Serial Console&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:img_20220930_120917_052_1.jpg&quot; class=&quot;media&quot; title=&quot;public:computers:img_20220930_120917_052_1.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=1eb796&amp;amp;media=public:computers:img_20220930_120917_052_1.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:img_20220930_120938_557_1.jpg&quot; class=&quot;media&quot; title=&quot;public:computers:img_20220930_120938_557_1.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=ce7150&amp;amp;media=public:computers:img_20220930_120938_557_1.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Then I remembered using Pine as an email client via a terminal session (and in xterm windows, and a non-X linux virtual terminal) so I thought I&amp;#039;d install it and re-live those days. Pine is no longer (easily) available but a new version is still being maintained - &lt;a href=&quot;https://alpineapp.email/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://alpineapp.email/&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Alpine &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Installed it and spent a happy evening getting it to work with 2 different IMAP accounts (and the correct SMTP servers) &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:alpine&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:alpine&quot; data-wiki-id=&quot;public:computers:archive:alpine&quot;&gt;Old stuff but good&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
And then, telnet and telnetd….. and ftp and ftpd….. oh, those were the days..!
&lt;/p&gt;

&lt;p&gt;
I wanted to install and run &lt;code&gt;slrn&lt;/code&gt; for USENET NNTP news, like the old days, but I discovered there was no point even trying, as there seems to be no freely available NNTP servers around any more. Back in the day most ISPs seemed to provide a server even if it was limited in the newsgroups it carried. That doesn&amp;#039;t seem to be the case any more.
&lt;/p&gt;

&lt;p&gt;
On the subject of Wyse terminals and Linux I stumbled on a You Tube video &lt;a href=&quot;https://www.youtube.com/watch?v=xQTr9ZOJkC0&amp;amp;feature=share&amp;amp;si=ELPmzJkDCLju2KnD5oyZMQ&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.youtube.com/watch?v=xQTr9ZOJkC0&amp;amp;feature=share&amp;amp;si=ELPmzJkDCLju2KnD5oyZMQ&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.youtube.com/watch?v=xQTr9ZOJkC0&amp;amp;feature=share&amp;amp;si=ELPmzJkDCLju2KnD5oyZMQ&lt;/a&gt; and this led to another interesting video &lt;a href=&quot;https://www.youtube.com/watch?v=NUmTaRu6o8g&amp;amp;feature=share&amp;amp;si=ELPmzJkDCLju2KnD5oyZMQ&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.youtube.com/watch?v=NUmTaRu6o8g&amp;amp;feature=share&amp;amp;si=ELPmzJkDCLju2KnD5oyZMQ&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.youtube.com/watch?v=NUmTaRu6o8g&amp;amp;feature=share&amp;amp;si=ELPmzJkDCLju2KnD5oyZMQ&lt;/a&gt; describing a console-mode RSS reader &lt;a href=&quot;https://newsboat.org/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://newsboat.org/&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Newsboat&lt;/a&gt; so I had to try it….
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve enabled the RSS feed from this dokuwiki WiKi/Blog, just to play…. point your RSS software at &lt;a href=&quot;https://www.gm4slv.org.uk/dokuwiki/feed.php&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.gm4slv.org.uk/dokuwiki/feed.php&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.gm4slv.org.uk/dokuwiki/feed.php&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Well, now I&amp;#039;ve got Alpine, Lynx and Newsboat running in a Tmux session, accessed from a nice amber glowing CRT with the Wyse-185.
&lt;/p&gt;

&lt;p&gt;
Now I need to build Mk2 of the 6502 - which is going to be wire-wrapped and much more compact than the rat&amp;#039;s nest of Mk1
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:computer&amp;amp;do=showtag&amp;amp;tag=computer&quot; class=&quot;wikilink1&quot; title=&quot;tag:computer&quot; rel=&quot;tag&quot;&gt;computer&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:linux&amp;amp;do=showtag&amp;amp;tag=linux&quot; class=&quot;wikilink1&quot; title=&quot;tag:linux&quot; rel=&quot;tag&quot;&gt;linux&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 07:16:30 +0000</pubDate>
        </item>
        <item>
            <title>SSL Install on VPS</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:ssl_install_vps</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:start&quot; data-wiki-id=&quot;public:computers:archive:start&quot;&gt;Archive&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ssl_install_on_vps&quot;&gt;SSL Install on VPS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
I decided to bite the bullet and obtain an SSL certificate and install it on this VPS, and configure Apache2 to use HTTPS instead of plain HTTP.
&lt;/p&gt;

&lt;p&gt;
I used Fasthost again to obtain the SSL certificate, and some of their instructions were a little dodgy regarding the steps to install it and get Apache to work with SSL. I managed in the end though.
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;gm4slv.org.uk&lt;/code&gt; now has a SSL certificate and connections to port 80 HTTP will be automatically redirected to port 443 HTTPS.
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
The steps with Apache (ignoring the process of obtaining the certificates):
&lt;/p&gt;

&lt;p&gt;
There are 3 certificate files:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;*.key&lt;/code&gt; is generated on the VPS itself with &lt;pre class=&quot;code bash&quot;&gt;openssl req &lt;span class=&quot;re5&quot;&gt;-new&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-newkey&lt;/span&gt; rsa:&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-nodes&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-keyout&lt;/span&gt; gm4slv.org.uk.key &lt;span class=&quot;re5&quot;&gt;-out&lt;/span&gt; gm4slv.org.uk.csr &lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; the signed &lt;code&gt;*.crt file&lt;/code&gt; obtained from the signing authority via FastHost (it&amp;#039;s the gm4slv.org.uk.csr key signed by the authority&amp;#039;s key)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; the “intermediate” file obtained from the signing authority via FastHost (this is the “chain of authority” file?)&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Once the keys are to hand:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; copy the 3 certificate files to a directory on the VPS. I used &lt;code&gt;/usr/local/ssl/&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; tell Apache where to find the keys:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; add to &lt;code&gt;default-ssl.conf&lt;/code&gt; virtual host site file&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;SSLCertificateFile /usr/local/ssl/signed.crt&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;SSLCertificateKeyFile /usr/local/ssl/gm4slv.org.uk.key&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;SSLCertificateChainFile /usr/local/ssl/ca.pem&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; add ssl mod to Apache: &lt;pre class=&quot;code&quot;&gt; a2enmod ssl &lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; make symbolic link in &lt;code&gt;sites-enabled&lt;/code&gt; pointing to &lt;code&gt;sites-available/default-ssl.conf&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; restart apache&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; open VPS firewall port 443 in FastHost control panel&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; browse to &lt;a href=&quot;https://gm4slv.org.uk&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://gm4slv.org.uk&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://gm4slv.org.uk&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; set up redirect of plain HTTP to SSL HTTPS by adding to &lt;code&gt;000-default.conf&lt;/code&gt; &lt;pre class=&quot;code apache&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;ServerName&lt;/span&gt; gm4slv.org.uk
    &lt;span class=&quot;kw1&quot;&gt;ServerAlias&lt;/span&gt; www.gm4slv.org.uk
    &lt;span class=&quot;kw1&quot;&gt;Redirect&lt;/span&gt; permanent / https://gm4slv.org.uk/&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; restart apache&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Job Done
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=server:screenshot_2022-05-04_22.00.14.png&quot; class=&quot;media wikilink2&quot; title=&quot;server:screenshot_2022-05-04_22.00.14.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=668a8c&amp;amp;media=server:screenshot_2022-05-04_22.00.14.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:ssl&amp;amp;do=showtag&amp;amp;tag=ssl&quot; class=&quot;wikilink1&quot; title=&quot;tag:ssl&quot; rel=&quot;tag&quot;&gt;ssl&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:apache&amp;amp;do=showtag&amp;amp;tag=apache&quot; class=&quot;wikilink1&quot; title=&quot;tag:apache&quot; rel=&quot;tag&quot;&gt;apache&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:vps&amp;amp;do=showtag&amp;amp;tag=vps&quot; class=&quot;wikilink1&quot; title=&quot;tag:vps&quot; rel=&quot;tag&quot;&gt;vps&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSL Install on VPS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssl_install_on_vps&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>Unison</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:unison</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:start&quot; data-wiki-id=&quot;public:computers:archive:start&quot;&gt;Archive&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;unison&quot;&gt;Unison&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
I used &lt;code&gt;unison&lt;/code&gt; previously to maintain sync/backup of files between machines on my own LAN.
&lt;/p&gt;

&lt;p&gt;
This has been used to keep files on a PC synchronized to the Dropbox folders on another PC, and 
thereby with the Dropbox cloud.
&lt;/p&gt;

&lt;p&gt;
Now that I have access to a remote Debian Linux VPS machine I thought I&amp;#039;d revisit the use of 
&lt;code&gt;Unison&lt;/code&gt; to keep folders synchronised - perhaps to keep a remote backup of certain files. 
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;You can never have too many backups&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
I installed the Debian package of &lt;code&gt;unison&lt;/code&gt; on the new VPS machine and made a matching pair of
configurations - one on the VPS and one on the Shack Laptop (which already has &lt;code&gt;unison&lt;/code&gt; installed).
&lt;/p&gt;

&lt;p&gt;
The configurations:
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Unison&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;unison&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-712&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;laptop&quot;&gt;Laptop&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re1&quot;&gt;root&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; /home/gm4slv/test_dir&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;root&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; ssh://gm4slv.org.uk/test_dir&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;sshargs&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; -C&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Laptop&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;laptop&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;713-829&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;vps&quot;&gt;VPS&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re1&quot;&gt;root&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; /home/gm4slv/test_dir&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;root&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; ssh://gm4slv.plus.com:27659/test_dir&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;sshargs&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; -C&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;VPS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vps&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;830-951&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;unison_version&quot;&gt;Unison version&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I put some files in one “test_dir” and ran 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;unison vps&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
from the Shack Laptop and got this:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Unison 2.51.3 (ocaml 4.11.1): Contacting server...
Fatal error: Received unexpected header from the server:
 expected &amp;quot;Unison 2.51 with OCaml &amp;gt;= 4.01.2\n&amp;quot; but received &amp;quot;Unison 2.48\n\000\000\000\000\017&amp;quot;,
which differs at &amp;quot;Unison 2.4&amp;quot;.
This can happen because you have different versions of Unison
installed on the client and server machines, or because
your connection is failing and somebody is printing an error
message, or because your remote login shell is printing
something itself before starting Unison.&lt;/pre&gt;

&lt;p&gt;
Incompatible versions. Laptop is running Debian 11 “Bullseye” and the packaged version of Unison
is 2.51.3, whereas the VPS machine is running Debian 10 “Buster” and that has Unison version 2.48.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve had this happen before, Unison is &lt;strong&gt;very&lt;/strong&gt; touchy about having the same version at both sides.
&lt;/p&gt;

&lt;p&gt;
I removed the older 2.48 from the VPS and downloaded a matching V2.51.3(ocaml 4.11.1) from github:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/bcpierce00/unison/releases/tag/v2.51.3&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/bcpierce00/unison/releases/tag/v2.51.3&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/bcpierce00/unison/releases/tag/v2.51.3&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Unpacked and moved &lt;code&gt;unison&lt;/code&gt; to &lt;code&gt;/usr/local/bin&lt;/code&gt; on the VPS.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Unison version&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;unison_version&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;952-2131&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;success&quot;&gt;Success&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Now I was able to sync between the machines. 
&lt;/p&gt;

&lt;p&gt;
Adding the SSH public keys from both machines to the &amp;#039;~/.ssh/authorized_keys2&amp;#039;&amp;#039; of its peer meant it all
went ahead without password prompting.
&lt;/p&gt;

&lt;p&gt;
Now I have two “mirrored” directories on two separate machines I can use the &lt;strong&gt;VPS&lt;/strong&gt; as a low-key remote file store.
&lt;/p&gt;

&lt;p&gt;
Page Updated : 30/12/25 09:55 GMT
&lt;/p&gt;

&lt;p&gt;
 &lt;em&gt;&lt;a href=&quot;mailto:&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#64;&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#46;&amp;#112;&amp;#108;&amp;#117;&amp;#115;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#64;&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#46;&amp;#112;&amp;#108;&amp;#117;&amp;#115;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;John Pumford-Green&lt;/a&gt; Tue May  3 22:29:31 2022&lt;/em&gt;
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:unison&amp;amp;do=showtag&amp;amp;tag=unison&quot; class=&quot;wikilink1&quot; title=&quot;tag:unison&quot; rel=&quot;tag&quot;&gt;unison&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:vps&amp;amp;do=showtag&amp;amp;tag=vps&quot; class=&quot;wikilink1&quot; title=&quot;tag:vps&quot; rel=&quot;tag&quot;&gt;vps&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:linux&amp;amp;do=showtag&amp;amp;tag=linux&quot; class=&quot;wikilink1&quot; title=&quot;tag:linux&quot; rel=&quot;tag&quot;&gt;linux&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Success&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;success&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2132-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>Dokuwiki &amp; Encryption</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:dokuwiki:dokuwiki_encryption</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dokuwiki_encryption&quot;&gt;Dokuwiki &amp;amp; Encryption&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
I&amp;#039;m now using the &lt;code&gt;encrypted passwords plugin&lt;/code&gt; to encrypt sensitive information on dokuwiki pages. This plugin has the advantage that the encryption used can be decrypted outside of Dokuwiki (e.g. if I can only get hold of the raw text file from a backup) via &lt;code&gt;openssl&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
An example of off-line decryption - I copied the encrypted text from a dokuwiki page and pasted it into the &lt;code&gt;echo&lt;/code&gt; command below. At the &lt;code&gt;openssl&lt;/code&gt; password prompt I entered the password used to encrypt and out popped the clear text &lt;code&gt;this is an encryption test&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co4&quot;&gt;gm4slv@gm4slv:~$ &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;U2FsdGVkX1/oih+ShQJ/EcEaeOk4JVl4IU2FI1d35A/jAsfy/2nwGbcLEEgABjQf&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; openssl base64 &lt;span class=&quot;re5&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;openssl aes-&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;-cbc &lt;span class=&quot;re5&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-pbkdf2&lt;/span&gt;
enter aes-&lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;-cbc decryption password:
this is an encryption &lt;span class=&quot;kw3&quot;&gt;test&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
The plugin is documented here:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/plugin:encryptedpasswords&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:encryptedpasswords&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.dokuwiki.org/plugin:encryptedpasswords&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
(UPDATE — &lt;em&gt;John Pumford-Green 30/05/22 16:48&lt;/em&gt; )
&lt;/p&gt;

&lt;p&gt;
I found the &lt;code&gt;encrypted passwords&lt;/code&gt; plugin didn&amp;#039;t work on the &lt;em&gt;sandbox&lt;/em&gt; wiki installation. The only difference I can see is that the &lt;em&gt;sandbox&lt;/em&gt; uses PHP7.4 rather than PHP7.3 on the &lt;em&gt;production&lt;/em&gt; webserver.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve installed the &lt;code&gt;dokucrypt2&lt;/code&gt; plugin &lt;a href=&quot;https://www.dokuwiki.org/plugin:dokucrypt2&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dokuwiki.org/plugin:dokucrypt2&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.dokuwiki.org/plugin:dokucrypt2&lt;/a&gt; on &lt;strong&gt;both&lt;/strong&gt; machines and it &lt;strong&gt;&lt;em&gt;works&lt;/em&gt;&lt;/strong&gt; on &lt;strong&gt;both&lt;/strong&gt;. 
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ll have to de-crypt the original encrypted pages and re-encrypt them using the &lt;code&gt;dokucrypt2&lt;/code&gt; plugin if I want to access them on the &lt;em&gt;sandbox&lt;/em&gt; machine, but that&amp;#039;s not too difficult to do, there&amp;#039;s not much encrypted information (yet).
&lt;/p&gt;

&lt;p&gt;
(&lt;strong&gt;UPDATE&lt;/strong&gt; — &lt;em&gt;John Pumford-Green 30/05/22 19:43&lt;/em&gt; )
&lt;/p&gt;

&lt;p&gt;
I solved the issue with the &lt;em&gt;sandbox&lt;/em&gt; server - it &lt;strong&gt;&lt;em&gt;needs to be enabled for HTTPS (SSL) for this plugin to work&lt;/em&gt;&lt;/strong&gt;. 
&lt;/p&gt;

&lt;p&gt;
I installed a self-signed certificate and set up SSL for the shack&amp;#039;s webserver as detailed here: &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:sandbox_server&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:sandbox_server&quot; data-wiki-id=&quot;public:computers:archive:sandbox_server&quot;&gt;Sandbox Server&lt;/a&gt; and the original plugin works. Which is good, because I preferred it to the dokucrypt2 plugin.
&lt;/p&gt;

&lt;p&gt;
Page Updated: 04/06/26 08:18 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dokuwiki&amp;amp;do=showtag&amp;amp;tag=dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;tag:dokuwiki&quot; rel=&quot;tag&quot;&gt;dokuwiki&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:ssl&amp;amp;do=showtag&amp;amp;tag=ssl&quot; class=&quot;wikilink1&quot; title=&quot;tag:ssl&quot; rel=&quot;tag&quot;&gt;ssl&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 07:18:42 +0000</pubDate>
        </item>
        <item>
            <title>AOR AR7030</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:ar_7030</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:start&quot; data-wiki-id=&quot;public:radio:radio_database:start&quot;&gt;Rig and Key List&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;aor_ar7030&quot;&gt;AOR AR7030&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;AOR AR7030&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;aor_ar7030&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-42&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;faults_repairs_mods&quot;&gt;1. Faults/repairs/mods&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; July 2022 - Volume encoder u/s&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Bourns ECW1J-B24-AC0024L available at Farnell at £3.80&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ordered 4 off 16/7/22&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Replaced vol encoder : July 2022&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; July 2022 - VFO Tuning encoder u/s&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Only changed freq. over a small portion of a revolution&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Using remote control via LAN to operate until a new encoder is sourced&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1. Faults\/repairs\/mods&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;faults_repairs_mods&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;43-420&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;filters&quot;&gt;2. Filters&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2. Filters&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;filters&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;421-443&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;currently_fitted&quot;&gt;Currently fitted:&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Before change (below)
&lt;/p&gt;
&lt;div class=&quot;table sectionedit5&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;PCB ref&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Description&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Model&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Bandwidth&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X3 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; AM Narrow    &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CKK455J    &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 3.9 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X4 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; AM Normal #  &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CFW455IT   &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 5.6 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X5 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; SSB #        &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CFJ455K14  &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 2.1 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X6 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; FM #         &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CFU455G2   &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 9.5 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X7 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; AM Wide #    &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CFW455HT   &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 6.4 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X8 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; CW Collins   &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; MF300      &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 0.5 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;494-777&amp;quot;} --&gt;
&lt;p&gt;
# = factory supplied
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Currently fitted:&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;currently_fitted&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;444-800&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;standard_fitting&quot;&gt;Standard Fitting&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit7&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;PCB ref&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Description&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Model&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Bandwidth&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X3 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; AM Wide     &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CFW455HT   &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 6.4 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X4 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; AM Normal   &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CFW455IT   &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 5.6 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X5 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; SSB         &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CFJ455K14  &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 2.1 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X6 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; FM          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CFU455G2   &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 9.5 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X7 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Option 1 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X8 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Option 2 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;827-1068&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Standard Fitting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;standard_fitting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;801-1070&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;available_to_fit&quot;&gt;Available to fit:&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;CW / Data / SSB narrow : CFJ455K8 : 1.4&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;july_2022&quot;&gt;July 2022&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Removed un-needed AM-Wide 6.4kHz from X7 and installed 1.4kHz “CW/Data/SSB Narrow”?
&lt;/p&gt;

&lt;p&gt;
This gives :
&lt;/p&gt;
&lt;div class=&quot;table sectionedit9&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;PCB ref&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Description&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Model&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Bandwidth&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X3 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; AM Narrow    &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CKK455J    &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 3.9 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X4 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; AM Normal #  &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CFW455IT   &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 5.6 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X5 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; SSB #        &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CFJ455K14  &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 2.1 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X6 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; FM #         &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; CFU455G2   &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 9.5 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X7 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Data         &lt;/td&gt;&lt;td class=&quot;col2 centeralign&quot;&gt;  CFJ455K8  &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 1.4 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; X8 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; CW Collins   &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; MF300      &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; 0.5 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;1263-1546&amp;quot;} --&gt;
&lt;p&gt;
# = factory supplied
&lt;/p&gt;

&lt;p&gt;
In order of Bandwidth
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;1 : 0.5 CW
2 : 1.4 CW/Data
3 : 2.1 SSB
4 : 3.9 AM-Narrow
5 : 5.5 AM-Normal
6 : 9.5 FM&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Available to fit:&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;available_to_fit&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;1071-1691&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;remote_control&quot;&gt;3. Remote Control&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The Python module used in  &lt;a href=&quot;https://github.com/gm4slv/netradio&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/gm4slv/netradio&quot; rel=&quot;ugc nofollow noopener&quot;&gt;netradio&lt;/a&gt; for accessing AR7030. 
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_23435a1905691f3ea794e5079af58e0d_21&quot;&gt;Generic aor.py &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_23435a1905691f3ea794e5079af58e0d_21&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:radio_database:ar_7030&amp;amp;codeblock=0&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_py&quot;&gt;aor.py&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; serial
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#sport = &amp;quot;/dev/ttyS0&amp;quot;&lt;/span&gt;
sport &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/dev/ttyUSB1&amp;quot;&lt;/span&gt;
sbaud &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1200&lt;/span&gt;
&amp;nbsp;
lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
fract &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; ** &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;44545&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; Ar7030&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; model&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; serial.&lt;span class=&quot;me1&quot;&gt;Serial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sport&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sbaud&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; timeout&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;model&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; model
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; check_bit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bit&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        mask &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; bit
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &amp;amp; mask&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_bit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bit&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        mask &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; bit
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; | mask
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; clear_bit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bit&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        mask &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; bit&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &amp;amp; mask&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_ident&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;5f&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;40&#039;&lt;/span&gt;
        ident &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; ident
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_pre&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        p &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;check_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; p:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pre_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#get current 8-bit rxcon byte :&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit0 = filter FS3&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit1 = filter FS2&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit2 = filter FS1&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit3 = filter FS4&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit4 = preamp enabled&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit5 = atten 0 = 20dB / 1 = 40dB&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit6 = input filter 0 = HF / 1 = LF&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit7 = attenuator enabled&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
&amp;nbsp;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# set bit 4 ON = preamp ON and get the new 8-bit rxcon byte&lt;/span&gt;
        pon &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# split new rxcon byte into two 4-bit nibbles, add 48/96 (\x30 and \x60)&lt;/span&gt;
        high &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        low &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &amp;amp; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;29&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Command sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pre_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#get current 8-bit rxcon byte&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# set bit 4 OFF = preamp OFF and get the new 8-bit rxcon byte&lt;/span&gt;
        pon &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;clear_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# split new rxcon byte into two 4-bit nibbles, add 48/96 (\x30 and \x60)&lt;/span&gt;
        high &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        low &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &amp;amp; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;29&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Command sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_att&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
&amp;nbsp;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        a &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;check_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; a:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#get current 8-bit rxcon byte&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# set bit 7 ON = ATT ON and get the new 8-bit rxcon byte&lt;/span&gt;
        pon &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# split new rxcon byte into two 4-bit nibbles, add 48/96 (\x30 and \x60)&lt;/span&gt;
        high &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        low &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &amp;amp; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;29&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Command sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#get current 8-bit rxcon byte&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# set bit 7 OFF = att OFF and get the new 8-bit rxcon byte&lt;/span&gt;
        pon &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;clear_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# split new rxcon byte into two 4-bit nibbles, add 48/96 (\x30 and \x60)&lt;/span&gt;
        high &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        low &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &amp;amp; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;29&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Command sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; freq * fract
        &lt;span class=&quot;co1&quot;&gt;#print fval&lt;/span&gt;
        b1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;1048576&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fval % &lt;span class=&quot;nu0&quot;&gt;1048576&lt;/span&gt;
        b2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;65536&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fval % &lt;span class=&quot;nu0&quot;&gt;65536&lt;/span&gt;
        b3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;4096&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fval % &lt;span class=&quot;nu0&quot;&gt;4096&lt;/span&gt;
        b4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fval % &lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;
        b5 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        b6 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        f_tuple &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b2&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b3&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b4&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b5&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b6 &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        freqStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; byte &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; f_tuple:
            freqStr +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;31&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;4a&#039;&lt;/span&gt; + freqStr + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;24&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Freq Set&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;31&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;4a&#039;&lt;/span&gt;
&amp;nbsp;
        freqStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        f_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; k &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; freqStr:
            f_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; f_val * &lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;k&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%.3f&amp;quot;&lt;/span&gt; % &lt;span class=&quot;kw2&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f_val / fract&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lsb&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;66&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;usb&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;67&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;am&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;61&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;65&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;64&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;fm&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;63&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;s-am&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;62&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Mode not recognized&amp;quot;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;31&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;4d&#039;&lt;/span&gt; + set_mode_val + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;22&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Mode sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;31&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;4d&amp;quot;&lt;/span&gt;
        m &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;01&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;am&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;02&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;s-am&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;03&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;fm&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;04&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;05&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;06&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lsb&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;07&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;usb&amp;quot;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; mode.&lt;span class=&quot;me1&quot;&gt;upper&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_s&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;2e&#039;&lt;/span&gt;
        sraw &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sraw&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_cal&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;52&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;3f&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;44&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;11&#039;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;sending getcal&amp;quot;&lt;/span&gt;
        cbytes &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        cal &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; c &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; cbytes:
            cal.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; cal
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_smeter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_s&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        cal &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_cal&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        s1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s1 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s2 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s3 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s5 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s4 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s6 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s5 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s7 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s6 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; s1 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s2 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;113&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s1 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s3 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;103&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s2 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s4 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;93&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s3 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s5 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;83&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s4 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s6 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;73&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s5 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s7 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s6 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;43&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s7 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; reply&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;# apply thread lock&lt;/span&gt;
        lock.&lt;span class=&quot;me1&quot;&gt;acquire&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; reply:  &lt;span class=&quot;co1&quot;&gt;# for reading S-meter&lt;/span&gt;
            result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
                result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
&amp;nbsp;
            result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
            byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; n &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;71&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;#byte = &amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; byte:
                    byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
                result +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; byte
&amp;nbsp;
                byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
                n -&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
            lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h4 id=&quot;update_july_2022&quot;&gt;Update July 2022&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
I&amp;#039;ve modified the server/client code to create a single-radio AR7030 control program that gives access to IF filter, and reads s-meter etc.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:screenshot_2022-08-05_07.24.46.png&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:screenshot_2022-08-05_07.24.46.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=ed4b47&amp;amp;media=public:radio:radio_database:screenshot_2022-08-05_07.24.46.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_23435a1905691f3ea794e5079af58e0d_22&quot;&gt;New (July 2022) version of Tkinter GUI with S-Meter graph and IF filter Selection &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_23435a1905691f3ea794e5079af58e0d_22&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:radio_database:ar_7030&amp;amp;codeblock=1&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_py&quot;&gt;gui_smeter.py&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;&lt;span class=&quot;co1&quot;&gt;# # new class-based gui&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Tkinter&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; Network&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;make_con&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; make_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;AF_INET&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;SOCK_STREAM&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;192.168.21.107&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9999&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            lock.&lt;span class=&quot;me1&quot;&gt;acquire&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sendall&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;received&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;recv&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;finally&lt;/span&gt;:
            lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;received&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; Dash&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; master&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;master&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; master
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;s&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n1.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;getsockname&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n1.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;getpeername&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
        dash_frame &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Toplevel&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;master&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; borderwidth &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; relief &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; GROOVE&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Server&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;protocol&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;WM_DELETE_WINDOW&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;handler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;resizable&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;geometry&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;300x150+10-10&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;utc_time&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;utc_time&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;green&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;s&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;lt; --- &amp;gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;yellow&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; columnspan &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        q_button &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Quit&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        q_button.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; handler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; up_dash&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ident&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;utc_time&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d/%m/%Y %H:%M&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;gmtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; nRadio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; master&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;master&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; master
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; radio
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        radio_frame &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Frame&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;master&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; borderwidth&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; relief&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;GROOVE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        radio_frame.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
        filter_frame &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Frame&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        filter_frame.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; columnspan&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        mode_frame &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Frame&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        mode_frame.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; columnspan&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rowspan&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        control_frame &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Frame&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        control_frame.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; columnspan&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        q_button &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Checkbutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;control_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Quit&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        q_button.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Freq/kHz&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Mode&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Signal/dBm&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Max/dBm&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;red&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Ave/dBm&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;green&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Min/dBm&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;blue&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_name&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_name&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;red&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_mode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_mode&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filt_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; IntVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;r_filt_1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filter_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filt_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;0.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_filt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;r_filt_1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;r_filt_2&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filter_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filt_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;1.4&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_filt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;r_filt_2&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;r_filt_3&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filter_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filt_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;2.1&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_filt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;r_filt_3&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;r_filt_4&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filter_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filt_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;3.9&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_filt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;r_filt_4&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;r_filt_5&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filter_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filt_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_filt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;r_filt_5&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;r_filt_6&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filter_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filt_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;9.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_filt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;r_filt_6&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#Label(filter_frame, text=&amp;quot;Filter&amp;quot;, width=10).grid(row=4, column=2, columnspan=3, sticky=NSEW)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#self.l_filt = Label(radio_frame, textvariable=self.filt_l, width=10)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.l_filt.grid(row=5, column=0, sticky=E)&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#self.e_filt = Entry(radio_frame, width=10, bg = &#039;white&#039;, fg = &#039;black&#039;, insertbackground = &#039;blue&#039;)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.e_filt.grid(row=6, column=0)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.e_filt.bind(&#039;&amp;lt;Return&amp;gt;&#039;, (lambda event: self.set_filt(self.num)))&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#self.e_mode = StringVar()&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_usb&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;usb&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_usb&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_lsb&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;LSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;LSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;lsb&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_lsb&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_cw&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;CW&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;CW&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;cw&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_cw&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_am&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AM&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;value &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AM&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;am&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_am&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_am&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;S-AM&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;value &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;S-AM&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;s-am&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_am&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_data&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Data&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;DATA&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_data&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_fm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Radiobutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;FM&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;FM&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;fm&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_fm&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_qsy_up&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;+1kHz&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;qsy_up&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_qsy_up&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_qsy_down&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;-1kHz&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;qsy_down&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_qsy_down&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_update&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Get&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;:&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.b_update.grid(row = 0, column = 3)&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_smeter&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_smeter&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;max_var&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_max&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;max_var&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_max&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ave_var&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_average&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ave_var&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_average&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;min_var&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_min&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;min_var&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_min&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Entry&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; insertbackground &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;blue&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;focus&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;bind&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;Return&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt; event: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pre&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; IntVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_pre&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Checkbutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;control_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Preamp&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pre&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp_onoff&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_pre&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_pre&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;control_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Preamp&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.l_pre.grid(row=0, column=0, sticky=E)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;att&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; IntVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_att&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Checkbutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;control_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Att&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;att&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;att_onoff&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_att&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_att&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;control_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Att&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.l_att.grid(row=1, column=0, sticky=E)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_log&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; IntVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_log&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Checkbutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;control_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Log to file...&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_log&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_log&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_log&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;control_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Log to file...&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.l_log.grid(row = 2, column = 0, sticky = E)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Canvas&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;260&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; columnspan&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rowspan&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_all&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_smeter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_preamp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_atten&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;graph_points&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;       
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;avg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_filt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_log&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;10.0&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write_file&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_filt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filt&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfil&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filt_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_filt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filt&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filt_l&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;newfilt&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfil&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filt&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.e_filt.delete(0,END)&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;newfreq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;delete&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; END&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; qsy_up&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        oldf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        newf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;oldf&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + newf + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; qsy_down&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        oldf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        newf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;oldf&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + newf + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#self.mode = str(self.e_mode.get())&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;newmode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + mode + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.e_mode.delete(0, END)&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_smeter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getsmeter&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;129&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; avg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;
        total &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; s:
            total +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; i
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;total / &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ave_var&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;310&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;green&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; s:
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; i
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;min_var&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;310&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;blue&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; s:
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; i
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;max_var&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;310&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;red&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_preamp&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getpreamp&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;1&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_pre&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_pre&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;deselect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; preamp_onoff&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;prestate&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pre&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;prestate&lt;/span&gt;:
            n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;preampon&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;preampoff&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_onoff&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;attstate&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;att&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;attstate&lt;/span&gt;:
            n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;atton&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;attoff&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_atten&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;atten&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getatt&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;atten&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;1&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_att&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;atten&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_att&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;deselect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_name&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; radio
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;all_names&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;listradios&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radios&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;all_names&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radios&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radios&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; graph_points&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        seq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;
        y_stretch &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        y_gap &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;
        x_stretch &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        x_width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
        x_gap &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
        height &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;delete&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ALL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;73&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;310&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;73&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; x&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; y &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;enumerate&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;seq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
            yd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; y + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt;
            x0 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; x * x_stretch + x * x_width + x_gap
            y0 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; height - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;yd * y_stretch + y_gap&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            x1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; x * x_stretch + x * x_width + x_width + x_gap
            y1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; height - y_gap
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_rectangle&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x0&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; y0&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; x1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; y1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;yellow&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filename&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name&lt;/span&gt;+&lt;span class=&quot;st0&quot;&gt;&amp;quot;.txt&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;f&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        timenow &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d/%m/%Y %H:%M:%S&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;gmtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;timenow&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;atten&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;f&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;f&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; update&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;co1&quot;&gt;#loops = 0&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
        nRadio1.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
        nRadio2.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
        nRadio3.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
        nRadio4.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#d1.up_dash()&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;co1&quot;&gt;#loops = 0&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            nRadio1.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            nRadio2.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            nRadio3.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            nRadio4.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#d1.up_dash()&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#loops += 1&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print threading.currentThread().name, loops&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    root.&lt;span class=&quot;me1&quot;&gt;destroy&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; __name__ &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;__main__&amp;quot;&lt;/span&gt;:
    version &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;v0.1&amp;quot;&lt;/span&gt;
    lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    root &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Tk&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#w, h = root.winfo_screenwidth(), root.winfo_screenheight()&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#root.geometry(&amp;quot;%dx%d+0+0&amp;quot; % (w, h))&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#root.geometry(&amp;quot;300x520+0+0&amp;quot;)&lt;/span&gt;
&amp;nbsp;
    root.&lt;span class=&quot;me1&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;AR7030 &amp;quot;&lt;/span&gt; + version&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;#root.withdraw()&lt;/span&gt;
    n1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Network&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#radio_count = (n1.connect(&amp;quot;count&amp;quot;))&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#radio_count = 3&lt;/span&gt;
&amp;nbsp;
    radio_count &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;count&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#if radio_count &amp;gt; 0:&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#    nRadio1 = nRadio(root, &amp;quot;1&amp;quot;)&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#if radio_count &amp;gt; 1:&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#    nRadio2 = nRadio(root, &amp;quot;2&amp;quot;)&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#if radio_count &amp;gt; 2:&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#    nRadio3 = nRadio(root, &amp;quot;3&amp;quot;)&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#if radio_count &amp;gt; 3:&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#    nRadio4 = nRadio(root, &amp;quot;4&amp;quot;)&lt;/span&gt;
&amp;nbsp;
    nRadio1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; nRadio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;    
    &lt;span class=&quot;co1&quot;&gt;#d1 = Dash(root)&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;#print threading.currentThread().name&lt;/span&gt;
    m1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;target &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    m1.&lt;span class=&quot;me1&quot;&gt;setDaemon&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    m1.&lt;span class=&quot;me1&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    update&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    root.&lt;span class=&quot;me1&quot;&gt;mainloop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_23435a1905691f3ea794e5079af58e0d_23&quot;&gt;New (July 2022) version of aor module, with access to IF filter selection &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_23435a1905691f3ea794e5079af58e0d_23&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:radio_database:ar_7030&amp;amp;codeblock=2&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_py&quot;&gt;aor_filter.py&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; serial
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#sport = &amp;quot;/dev/ttyS0&amp;quot;&lt;/span&gt;
sport &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/dev/ttyS0&amp;quot;&lt;/span&gt;
sbaud &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1200&lt;/span&gt;
&amp;nbsp;
lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
fract &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; ** &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;44545&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; Ar7030&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; model&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; serial.&lt;span class=&quot;me1&quot;&gt;Serial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sport&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sbaud&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; timeout&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;model&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; model
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;filter&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_filter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; check_bit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bit&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        mask &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; bit
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &amp;amp; mask&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_bit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bit&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        mask &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; bit
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; | mask
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; clear_bit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bit&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        mask &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; bit&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &amp;amp; mask&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_ident&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;5f&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;40&#039;&lt;/span&gt;
        ident &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; ident
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_pre&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        p &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;check_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; p:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_filter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;33&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;44&#039;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print ord(byte)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_filter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;filt_no&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;In set_filter with &amp;quot;, filt_no&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            filt_no &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filt_no&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ValueError&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Not a number&amp;quot;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; filt_no &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Out of range&amp;quot;&lt;/span&gt;
&amp;nbsp;
        high &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filt_no &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        low &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filt_no &amp;amp; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;33&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;44&#039;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;23&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#self.get_filter()&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Command Sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pre_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#get current 8-bit rxcon byte :&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit0 = filter FS3&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit1 = filter FS2&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit2 = filter FS1&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit3 = filter FS4&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit4 = preamp enabled&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit5 = atten 0 = 20dB / 1 = 40dB&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit6 = input filter 0 = HF / 1 = LF&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit7 = attenuator enabled&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
&amp;nbsp;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# set bit 4 ON = preamp ON and get the new 8-bit rxcon byte&lt;/span&gt;
        pon &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# split new rxcon byte into two 4-bit nibbles, add 48/96 (\x30 and \x60)&lt;/span&gt;
        high &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        low &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &amp;amp; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;29&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Command sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pre_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#get current 8-bit rxcon byte&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# set bit 4 OFF = preamp OFF and get the new 8-bit rxcon byte&lt;/span&gt;
        pon &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;clear_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# split new rxcon byte into two 4-bit nibbles, add 48/96 (\x30 and \x60)&lt;/span&gt;
        high &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        low &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &amp;amp; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;29&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Command sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_att&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
&amp;nbsp;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        a &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;check_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; a:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#get current 8-bit rxcon byte&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# set bit 7 ON = ATT ON and get the new 8-bit rxcon byte&lt;/span&gt;
        pon &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# split new rxcon byte into two 4-bit nibbles, add 48/96 (\x30 and \x60)&lt;/span&gt;
        high &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        low &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &amp;amp; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;29&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Command sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#get current 8-bit rxcon byte&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# set bit 7 OFF = att OFF and get the new 8-bit rxcon byte&lt;/span&gt;
        pon &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;clear_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# split new rxcon byte into two 4-bit nibbles, add 48/96 (\x30 and \x60)&lt;/span&gt;
        high &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        low &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &amp;amp; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;29&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Command sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; freq * fract
        &lt;span class=&quot;co1&quot;&gt;#print fval&lt;/span&gt;
        b1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;1048576&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fval % &lt;span class=&quot;nu0&quot;&gt;1048576&lt;/span&gt;
        b2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;65536&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fval % &lt;span class=&quot;nu0&quot;&gt;65536&lt;/span&gt;
        b3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;4096&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fval % &lt;span class=&quot;nu0&quot;&gt;4096&lt;/span&gt;
        b4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fval % &lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;
        b5 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        b6 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        f_tuple &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b2&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b3&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b4&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b5&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b6 &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        freqStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; byte &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; f_tuple:
            freqStr +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;31&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;4a&#039;&lt;/span&gt; + freqStr + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;24&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Freq Set&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;31&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;4a&#039;&lt;/span&gt;
&amp;nbsp;
        freqStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        f_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; k &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; freqStr:
            f_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; f_val * &lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;k&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%.3f&amp;quot;&lt;/span&gt; % &lt;span class=&quot;kw2&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f_val / fract&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lsb&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;66&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;usb&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;67&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;am&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;61&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;65&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;64&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;fm&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;63&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;s-am&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;62&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Mode not recognized&amp;quot;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;31&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;4d&#039;&lt;/span&gt; + set_mode_val + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;22&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;filter&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_filter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Mode sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;31&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;4d&amp;quot;&lt;/span&gt;
        m &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;01&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;am&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;02&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;s-am&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;03&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;fm&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;04&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;05&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;06&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lsb&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;07&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;usb&amp;quot;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; mode.&lt;span class=&quot;me1&quot;&gt;upper&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_s&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;2e&#039;&lt;/span&gt;
        sraw &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sraw&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_cal&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;52&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;3f&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;44&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;11&#039;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;sending getcal&amp;quot;&lt;/span&gt;
        cbytes &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        cal &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; c &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; cbytes:
            cal.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print cal&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; cal
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_smeter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_s&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        cal &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_cal&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        s1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s1 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s2 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s3 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s5 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s4 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s6 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s5 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s7 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s6 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; s1 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s2 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;113&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s1 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s3 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;103&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s2 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s4 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;93&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s3 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s5 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;83&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s4 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s6 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;73&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s5 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s7 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s6 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;43&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s7 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; reply&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;# apply thread lock&lt;/span&gt;
        lock.&lt;span class=&quot;me1&quot;&gt;acquire&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; reply:  &lt;span class=&quot;co1&quot;&gt;# for reading S-meter&lt;/span&gt;
            result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
                result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
&amp;nbsp;
            result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
            byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; n &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;71&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;#byte = &amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; byte:
                    byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
                result +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; byte
&amp;nbsp;
                byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
                n -&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
            lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_23435a1905691f3ea794e5079af58e0d_24&quot;&gt;New (July 2022) server with AR7030 filter selection &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_23435a1905691f3ea794e5079af58e0d_24&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:radio_database:ar_7030&amp;amp;codeblock=3&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_py&quot;&gt;ar_server_filter.py&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;&lt;span class=&quot;co1&quot;&gt;#from aor import *&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; aor_filter &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;co1&quot;&gt;#from icom import *&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; conf &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;co1&quot;&gt;#from m710 import *&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;readline&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
radios &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#r1 = Icom(n1, a1, cal1)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#radios.append(n1)&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#r2 = m710(n4)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#radios.append(n4)&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#r2 = Icom(n2, a2, cal2)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#radios.append(n2)&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#r3 = Ar7030(n3)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#radios.append(n3)&lt;/span&gt;
&amp;nbsp;
r1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Ar7030&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
radios.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; radios
&lt;span class=&quot;co1&quot;&gt;#print r1.digi_off()&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#print r2.remote_on()&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; count_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    count &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radios&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; count
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    radiolist &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; n &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radios&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        r &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; radios&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        radiolist +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;r + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; radiolist
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    filename &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;commandlog.txt&#039;&lt;/span&gt;
    f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filename&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# a+ is &amp;quot;append to file, create it if it doesn&#039;t exist&amp;quot;&lt;/span&gt;
    timenow &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d/%m/%Y %H:%M:%S&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;gmtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;timenow&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# make an entry for the log by joining the timestamp with the text passed in&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; write_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    filename &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;conlog.txt&#039;&lt;/span&gt;
    f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filename&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# a+ is &amp;quot;append to file, create it if it doesn&#039;t exist&amp;quot;&lt;/span&gt;
    timenow &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d/%m/%Y %H:%M:%S&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;gmtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;timenow&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# make an entry for the log by joining the timestamp with the text passed in&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# The Server&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; ThreadedRequestHandler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;StreamRequestHandler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; handle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;# we find the current thread for the client connection just set up, to&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# use in the log file&lt;/span&gt;
        cur_thread &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;currentThread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# log the new connection details&lt;/span&gt;
        write_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Connect from %s using %s &lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;client_address&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cur_thread.&lt;span class=&quot;me1&quot;&gt;getName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# print to the server&#039;s console the new connection IP address/port&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;client_address&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# loop to handle client requests....&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;:
            &lt;span class=&quot;co1&quot;&gt;# using StreamRequestHandler means our input from the client&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# is  &amp;quot;file-like&amp;quot; and can be read with &amp;quot;file-like&amp;quot; commands&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we read a line at a time, using readline()&lt;/span&gt;
            &lt;span class=&quot;kw3&quot;&gt;cmd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;rfile&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;readline&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;lower&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# to keep things clean, we remove any characters that aren&#039;t&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# &amp;quot;printable&amp;quot; simple ASCII&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# these are between 32 and 127 in the ASCII table&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we look at each character, and then make a new word by&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# .join()ing each accepted character with no space in between&lt;/span&gt;
            asccmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; x &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;cmd&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we make a list called &amp;quot;words&amp;quot; holding the received words which&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# will be inspected by various functions&lt;/span&gt;
            words &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; asccmd.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# If a client uses sock.close() itself, to disconnect, it appears that&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we read a continuous stream of &amp;quot;&amp;quot; on the dead&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# socket, which puts CPU to 100%.&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# The &amp;quot;While&amp;quot; loop is probably responsible, but I can&#039;t see another&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# way to keep the connection up for multiple commands.&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# Further connection are accepted due to the Threaded nature of the server.&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# The CPU load is unacceptable though&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# HACK ?&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# Looking for &amp;quot;&amp;quot; and then breaking&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# the connection from the server end (even though the client has&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# gone) cures this.&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;cmd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;:
                &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
                &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# if the words list is empty, go back and get more input&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; words:
                &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we have input....&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# filter based on the first word - these are the&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# pre-set commands the server will accept&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# the client wants to know the currently available&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# radio names - held in the variable &amp;quot;rnames&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getnames&amp;quot;&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rnames&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# words[-1] (the last word in the list) will always be the&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# radio name. We give the variable &amp;quot;my_radio&amp;quot; this value, for&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# identifying which radio object to apply the method to&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;count&amp;quot;&lt;/span&gt;:
                count &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; count_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;count&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ident&amp;quot;&lt;/span&gt;:
                ident_text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;GM4SLV Radio Server&amp;quot;&lt;/span&gt;
                radio_list &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ident_text + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;Available : &lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; + radio_list + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;setfil&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                filt_no &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
                newfilt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;set_filter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filt_no&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;newfilt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getfil&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                filt &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_filter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filt&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
                freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;setmode&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
                newmode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;newmode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
                    freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    newfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;newfreq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ValueError&lt;/span&gt;:
                    &lt;span class=&quot;co1&quot;&gt;#freq = float(my_radio.get_freq())&lt;/span&gt;
                    &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Error in freq. %s No change&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; % words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getsmeter&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                smeter &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;my_radio.&lt;span class=&quot;me1&quot;&gt;get_smeter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smeter&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gets&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_s&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;listradios&amp;quot;&lt;/span&gt;:
                radios &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radios&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getpreamp&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_pre&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;preampon&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;pre_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;preamp2on&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;pre_2_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;preampoff&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;pre_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getatt&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_att&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atton&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;att_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;attoff&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;att_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;tune&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                tune &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;tune&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tune&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getpwr&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                pwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;setpwr&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                spwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
                pwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;set_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;spwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;:
                write_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Got quit from {}&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;client_address&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# log it&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Goodbye! &lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# say Goodbye&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:  &lt;span class=&quot;co1&quot;&gt;# nothing in words[0] matches a pre-set command....&lt;/span&gt;
                write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Received %s&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; % words&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# log it, it&#039;s unusual&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Command not recognized&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# inform the client&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; ThreadedIcomServer&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ThreadingMixIn&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;TCPServer&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; __name__ &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;__main__&#039;&lt;/span&gt;:
    &lt;span class=&quot;co1&quot;&gt;# define the lock to be used on the serial port access&lt;/span&gt;
    lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# address (&#039;&#039; = all available interfaces) to listen on, and port number&lt;/span&gt;
    address &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9999&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    server &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; ThreadedIcomServer&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;address&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ThreadedRequestHandler&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    server.&lt;span class=&quot;me1&quot;&gt;allow_reuse_address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# define that the server will be threaded, and will serve &amp;quot;forever&amp;quot; ie. not quit after the client disconnects&lt;/span&gt;
    t &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;target&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;server.&lt;span class=&quot;me1&quot;&gt;serve_forever&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# start the server thread&lt;/span&gt;
    t.&lt;span class=&quot;me1&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    write_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;Server loop running in thread: %s&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; % &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;t.&lt;span class=&quot;me1&quot;&gt;getName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;3. Remote Control&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;remote_control&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;1692-45918&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;documentation&quot;&gt;Documentation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:7030_-_corruption_agc_table_-_preset_test.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:7030_-_corruption_agc_table_-_preset_test.pdf (15.1 KB)&quot;&gt;7030_-_corruption_agc_table_-_preset_test.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:7030serv.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:7030serv.pdf (191.9 KB)&quot;&gt;7030serv.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Documentation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;documentation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;45919-46086&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;page_info&quot;&gt;Page Info&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Page created Wed May 25 00:04:50 2022 by John Pumford-Green
&lt;/p&gt;

&lt;p&gt;
Page last updated: 04/06/26 07:39 BST
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Page Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;page_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;46087-46200&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;tags&quot;&gt;tags&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:ar7030&amp;amp;do=showtag&amp;amp;tag=ar7030&quot; class=&quot;wikilink1&quot; title=&quot;tag:ar7030&quot; rel=&quot;tag&quot;&gt;ar7030&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tags&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tags&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;46201-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>Icom IC-706</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:ic706</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:start&quot; data-wiki-id=&quot;public:radio:radio_database:start&quot;&gt;Rig and Key List&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;icom_ic-706&quot;&gt;Icom IC-706&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Mark 1 - the original “Shack-in-a-box” &lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; HF 100W&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 6m 100W&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2m 10W&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Icom IC-706&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;icom_ic-706&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-127&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;background&quot;&gt;Background&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; From the Silent Key equipment of Peter GM0CXQ&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Background&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;background&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;128-204&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;first_impressions&quot;&gt;First impressions&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; In poor condition cosmetically, internally and externally&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Intermittent RX performance on several bands, most severely 6m, due to LPF switching relays&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; No Power cable&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; ordered via eBay 24/5/23&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; No microphone&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; ordered via eBay 25/5/23&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Not “MARS” modified → no TX on 60m &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;First impressions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;first_impressions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;205-545&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;initial_tests&quot;&gt;Initial tests&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Sensitivity ok on all HF bands&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 6m shows intermittent “deafness” after changing bands - LPF relays?&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Initially some higher HF bands also showed slow decrease in sensitivity after a few minutes. After transmitting a few times on each band this tendency stopped - have the LPF relay contacts “wiped” themselves clean by carrying more significant signal current on TX?&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 6m &lt;em&gt;still&lt;/em&gt; suffers random RF signal loss on RX&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; TX power ok on all HF bands, and 6m, with 100W FM carrier at setting “H”&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; All controls work correctly&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Fitted FL-223 “Narrow SSB” filter option appears to work (TBC)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Frequency calibration not checked but appears to be acceptable.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Initial tests&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;initial_tests&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;546-1248&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;repairs_and_modifications&quot;&gt;Repairs and Modifications&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Repairs and Modifications&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;repairs_and_modifications&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1249-1287&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;cleaning&quot;&gt;Cleaning&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; All knobs removed and washed in warm soapy water and all grooves in knobs scraped clean with toothpicks.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Front Panel cleaned, all recesses around buttons/controls cleaned with toothpicks and warm water (being careful….)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Covers from main unit removed and washed to remove build up of dirt from inside and outside.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Inside of main unit vacuumed and blown to attempt to remove as much loose powdery dirt deposits as possible without damaging any connectors or components. Some cleaning of surfaces done where possible.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Re-assembled&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cleaning&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cleaning&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1288-1857&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;m_lpf_relays&quot;&gt;6m LPF relays&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Aic706&amp;amp;media=public:radio:radio_database:img_20230525_191452_339.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:img_20230525_191452_339.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=53eb50&amp;amp;media=public:radio:radio_database:img_20230525_191452_339.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; To cure signal loss on RX I removed the LPF board and was able to pop the clear plastic tops from the 2 relays, used on either side of the 6m LPF section. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Contacts in RL2 and RL3 were cleaned with Contact Cleaner spray, and wiped with paper soaked in cleaner, to remove any dirt/contamination build-up.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Aic706&amp;amp;media=public:radio:radio_database:img_20230525_191942_134.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:img_20230525_191942_134.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=7915ee&amp;amp;media=public:radio:radio_database:img_20230525_191942_134.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tops replaced on relays and LPF board replaced into radio.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Receive sensitivity now good and does not vary with time, or following band changing.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The relays used on the other HF bands are of a different (more easily sourced) type and can&amp;#039;t be opened in this manner. Fortunately they all seem to be healthy at the moment.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;6m LPF relays&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;m_lpf_relays&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1858-2665&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;mars_tx_mod&quot;&gt;MARS TX Mod&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; To allow use on the 60m band I carried out the simple modification to remove “D59” from the Main PCB, which removes the “TX only in Ham Bands” restriction.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Radio now transmits across the whole HF band, including 60m&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;MARS TX Mod&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mars_tx_mod&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2666-2913&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;signalink_usb&quot;&gt;Signalink USB&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
For Digimodes using &lt;strong&gt;fldigi&lt;/strong&gt; and a Signalink USB soundcard requires a simple Cat5 ethernet cable to connect the IC-706 Mic socket to the Signalink USB soundcard. The Jumper information is here : &lt;a href=&quot;https://tigertronics.com/sl_wirebm.htm&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://tigertronics.com/sl_wirebm.htm&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://tigertronics.com/sl_wirebm.htm&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Aic706&amp;amp;media=public:radio:radio_database:sl706.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:sl706.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=a40b33&amp;amp;media=public:radio:radio_database:sl706.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Signalink USB&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;signalink_usb&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;2914-3228&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;rigctl_hamlib&quot;&gt;Rigctl / Hamlib&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Connect serial RS232 from laptop to &lt;strong&gt;IC-R75&lt;/strong&gt; and then C-IV cable between IC-R75 and IC-706. The IC-R75 will convert between RS232 and C-IV. Separate C-IV hex addresses means each radio can be addressed individually through one serial connection (/dev/ttyUSB0)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;rigctl -m 3009 -s 9600 -r /dev/ttyUSB0&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~ $ rigctl &lt;span class=&quot;re5&quot;&gt;-m&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3009&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-s&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9600&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-r&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ttyUSB0
&amp;nbsp;
Rig command: f
Frequency: &lt;span class=&quot;nu0&quot;&gt;10147600&lt;/span&gt;
&amp;nbsp;
Rig command: m
Mode: USB
Passband: &lt;span class=&quot;nu0&quot;&gt;2400&lt;/span&gt;
&amp;nbsp;
Rig command: q
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~ $&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Rigctl \/ Hamlib&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rigctl_hamlib&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;3229-3755&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;documentation&quot;&gt;Documentation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:ic706.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:ic706.pdf (5.2 MB)&quot;&gt; User Manual&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Documentation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;documentation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;3756-3845&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://groups.io/g/IC706&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://groups.io/g/IC706&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://groups.io/g/IC706&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.hampedia.net/icom/ic-706-enables-out-of-band-transmit.php&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.hampedia.net/icom/ic-706-enables-out-of-band-transmit.php&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.hampedia.net/icom/ic-706-enables-out-of-band-transmit.php&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Possible alternative Microphone HM-152 &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:hm152schematic.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:hm152schematic.pdf (56 KB)&quot;&gt;hm152schematic.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:ic706&amp;amp;do=showtag&amp;amp;tag=ic706&quot; class=&quot;wikilink1&quot; title=&quot;tag:ic706&quot; rel=&quot;tag&quot;&gt;ic706&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;3846-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>Cadet Radio Info</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:swl:cadets</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:swl:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:swl:start&quot; data-wiki-id=&quot;public:radio:swl:start&quot;&gt;SWL Pages&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;cadet_radio_info&quot;&gt;Cadet Radio Info&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cadet Radio Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cadet_radio_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-47&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;cadet_radio_in_general&quot;&gt;Cadet Radio in general&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
ACP44 has channels listed, but the public version has the frequencies blank.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:2024:acp44.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:2024:acp44.pdf (306.2 KB)&quot;&gt;acp44.pdf&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Internet source &lt;a href=&quot;https://www.wirelesswaffle.com/index.php?m=09&amp;amp;y=09&amp;amp;entry=entry090924-071250&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.wirelesswaffle.com/index.php?m=09&amp;amp;y=09&amp;amp;entry=entry090924-071250&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.wirelesswaffle.com/index.php?m=09&amp;amp;y=09&amp;amp;entry=entry090924-071250&lt;/a&gt; has these frequencies listed
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;air_cadet_frequencies&quot;&gt;Air Cadet Frequencies&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;div class=&quot;table sectionedit3&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Channel&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Frequency&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Power&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Comment&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Lima 1 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 2368 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Lima 2 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 2490 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Lima 3 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 2848.5 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Lima 4 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 3236 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 350W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Lima 5 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 3306 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Lima 6 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 3343 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Lima 7 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 3678 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 350W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Lima 8 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 3715 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 350W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Lima 9 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 3752 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 350W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;355-634&amp;quot;} --&gt;
&lt;p&gt;
2368, 2490, 2848.5, 3236*, 3306, 3343, 3678, 3715 and 3752 kHz
(Channel designations Lima 1 through Lima 9 respectively)
&lt;/p&gt;
&lt;div class=&quot;table sectionedit4&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Channel&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Frequency&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Power&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Comment&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;strong&gt;November 1&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5245 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 350W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; National Network Channel &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;strong&gt;November 2&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 4925 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 350W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; National Network Channel &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;strong&gt;November 3&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5088 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 350W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; National Network Channel &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;759-971&amp;quot;} --&gt;
&lt;p&gt;
5245, 4925 and 5088 kHz
(Channel designations November 1 through November 3)
&lt;/p&gt;
&lt;div class=&quot;table sectionedit5&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Channel&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Frequency&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Power&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Comment&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;strong&gt;Hotel 1&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5770 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 350W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Hotel 2 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5795 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 350W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Hotel 3 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;      &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Hotel 4 &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;      &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Hotel 5 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 7740 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 350W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Hotel 6 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 6775 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Hotel 7 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 7721 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1051-1284&amp;quot;} --&gt;
&lt;p&gt;
5770*, 5795, 7740, 6775 and 7721 kHz
(Channel designations Hotel 1 and 2, and 5 through 7)
&lt;/p&gt;
&lt;div class=&quot;table sectionedit6&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Channel&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Frequency&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Power&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Comment&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Oscar 1 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 8120 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 350W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Oscar 2 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 13545 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Oscar 3 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 10843.5 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Oscar 4 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 14500 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Oscar 5 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 134445 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Oscar 6 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 13965 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1378-1587&amp;quot;} --&gt;
&lt;p&gt;
8120, 13545, 10843.5, 14500, 13445 and 13965 kHz
(Channel designations Oscar 1 through 6)
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;sea_cadet_frequencies&quot;&gt;Sea Cadet Frequencies&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
2122.5, 2695, 3660, 6805, 6875, 6992.5* and 8187.5 kHz
(Channel designations SCO01, 02 and 11 to 15)
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;army_cadet_frequencies&quot;&gt;Army Cadet Frequencies&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
2275*, 2415*, 2770*, 3850*, 3865*, 4920, 4922.5*, 4955, 5330, 5345, 6915, 7710 and 7753 kHz
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 01/04/24 17:22&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cadet Radio in general&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cadet_radio_in_general&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;48-1984&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; You Tube Channel with lots of NRN clips (mostly audio only) going back several years &lt;a href=&quot;https://www.youtube.com/@mashu97/playlists&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.youtube.com/@mashu97/playlists&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.youtube.com/@mashu97/playlists&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; There used to be a blog too &lt;a href=&quot;http://mashoo.org.uk/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://mashoo.org.uk/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://mashoo.org.uk/&lt;/a&gt;, but it seems to have disappeared, sadly. I used to follow/read it from time to time a few years ago. don&amp;#039;t know when it vanished from the interwebs. G(W)0VBC&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.radio-workshop.co.uk/g4nsj-ccf-pirate-radio-memories-ws-19-set/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.radio-workshop.co.uk/g4nsj-ccf-pirate-radio-memories-ws-19-set/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.radio-workshop.co.uk/g4nsj-ccf-pirate-radio-memories-ws-19-set/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.radio-workshop.co.uk/g4nsj-pirate-and-ccf-radio-recollections/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.radio-workshop.co.uk/g4nsj-pirate-and-ccf-radio-recollections/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.radio-workshop.co.uk/g4nsj-pirate-and-ccf-radio-recollections/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.oocities.org/capecanaveral/hall/8701/ham/ccf11.htm&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.oocities.org/capecanaveral/hall/8701/ham/ccf11.htm&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.oocities.org/capecanaveral/hall/8701/ham/ccf11.htm&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:cadet&amp;amp;do=showtag&amp;amp;tag=cadet&quot; class=&quot;wikilink1&quot; title=&quot;tag:cadet&quot; rel=&quot;tag&quot;&gt;cadet&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:nrn&amp;amp;do=showtag&amp;amp;tag=nrn&quot; class=&quot;wikilink1&quot; title=&quot;tag:nrn&quot; rel=&quot;tag&quot;&gt;nrn&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1985-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>CCIR493 Selcall - 2026</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:ccir493_-_2026</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:start&quot; data-wiki-id=&quot;public:radio:topics:start&quot;&gt;Radio Topics&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ccir493_selcall_-_2026&quot;&gt;CCIR493 Selcall - 2026&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
I am tempted to revisit my previous experiments with CCIR493 selcall. There&amp;#039;s a page giving details and info of what I&amp;#039;ve already done with HF Selcall &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:ccir493_selcall&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:ccir493_selcall&quot; data-wiki-id=&quot;public:radio:topics:ccir493_selcall&quot;&gt; here &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Today (June 6&lt;sup&gt;th&lt;/sup&gt; 2026) I saw a Mastodon post from Peter OE1LFB  &lt;a href=&quot;https://mastodon.radio/@oe1lfb&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://mastodon.radio/@oe1lfb&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://mastodon.radio/@oe1lfb&lt;/a&gt; showing a new Codan Envoy, and an idea sparked that perhaps there were other
active Selcall users around. I sent a Mastodon post offering to try CCIR493 selcall but Peter informed me that the Codan was “..being used with the Austrian Red Cross, for emcom.”
&lt;/p&gt;

&lt;p&gt;
But the idea took root anyway and I dug out both my &lt;a href=&quot;https://www.jenal.com/page20.htm&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.jenal.com/page20.htm&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Jenal SC2 &lt;/a&gt; microphones.
&lt;/p&gt;

&lt;p&gt;
I initially connected one to my Xeigu G90, via its rear panel “data” connector and this seemed to work well. To properly test I wired the second SC2 to a mic plug for my Icom IC-7200.
&lt;/p&gt;

&lt;p&gt;
I now have two separate HF Selcall transceivers. I put them both into dummy loads and tried various selcalls, beacon and beacon-99 calls between them. All working correctly.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:topics:img_20260606_122506.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:topics:img_20260606_122506.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=2f151d&amp;amp;media=public:radio:topics:img_20260606_122506.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
In the past I&amp;#039;ve done selcall tests with a couple of stations - GM4WMM and F6EMT. I need to think about what to do this year as a mini-project.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CCIR493 Selcall - 2026&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ccir493_selcall_-_2026&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-1285&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;peer_tube_video&quot;&gt;Peer Tube Video&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I&amp;#039;ve put a rambling video on Peer Tube : &lt;a href=&quot;https://makertube.net/w/kPHwY1jNVMrH4fxvzHKhuN&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://makertube.net/w/kPHwY1jNVMrH4fxvzHKhuN&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://makertube.net/w/kPHwY1jNVMrH4fxvzHKhuN&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Peer Tube Video&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;peer_tube_video&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1286-1405&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;next&quot;&gt;Next&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
When not otherwise being used I&amp;#039;ll try to leave the IC-7200 monitoring &lt;em class=&quot;u&quot;&gt;one&lt;/em&gt; of these frequencies (all USB) with Selcall ID &lt;strong&gt;3657&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 60m : 5371.5kHz&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 40m : &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 30m : &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 20m : 14343.0kHz&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 17m : 18163.0kHz&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 15m : 21427.0kHz&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 12m : 24977.0kHz&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 10m : 28305.0kHz&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I plan to take the G90 and its selcall mic to various portable locations and test the path back to my home station using selcall beacons. 
&lt;/p&gt;

&lt;p&gt;
If anybody has the ability to use Barrett/Codan/CCIR493 selcall on HF and would like to try some tests and perhaps set up a net or sked please let me know! My email address is on the home page of this wiki, and is on my &lt;a href=&quot;https://www.qrz.com/db/G4SLV&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.qrz.com/db/G4SLV&quot; rel=&quot;ugc nofollow noopener&quot;&gt; G4SLV @ QRZ.com&lt;/a&gt; page.
&lt;/p&gt;

&lt;p&gt;
I have also been thinking about an “Engineer Order Wire” back-channel using Allstar for co-ordination and discussion of HF tests. I&amp;#039;ll write a new Allstar wiki page about my new Allstar setup
but in the meantime - I&amp;#039;m at Allstar node &lt;strong&gt;481483&lt;/strong&gt;. I don&amp;#039;t monitor 24/7, but try to keep an ear on it while I&amp;#039;m near the shack.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Next&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;next&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1406-2453&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Page created  : 06/06/26 21:40 BST
&lt;/p&gt;

&lt;p&gt;
Page updated : 01/01/70 01:00 BST
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2454-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 08 Jun 2026 17:46:06 +0000</pubDate>
        </item>
        <item>
            <title>OFCOM</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:ofcom</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:start&quot; data-wiki-id=&quot;public:radio:topics:start&quot;&gt;Radio Topics&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ofcom&quot;&gt;OFCOM&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;OFCOM&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ofcom&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-37&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;login_to_ofcom_online&quot;&gt;Login to OFCOM online&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://ofcom.force.com/licensingcomlogin&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://ofcom.force.com/licensingcomlogin&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://ofcom.force.com/licensingcomlogin&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Login to OFCOM online&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;login_to_ofcom_online&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;38-120&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;licence_details&quot;&gt;Licence Details&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Licence Details&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;licence_details&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;121-149&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;gm4slv_amateur_radio&quot;&gt;GM4SLV Amateur Radio&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Issued as G4SLV : March 1983&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;ofcom_validation_details&quot;&gt;OFCOM Validation Details&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;div class=&quot;table sectionedit5&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Date&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Licence Number&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Validation Document&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Next Due&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 01/07/2023 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 1-8513-93392/3 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:licence_document_amateur_mr_john_pumford-green_2020-11-15_01_27_47z_1_.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:licence_document_amateur_mr_john_pumford-green_2020-11-15_01_27_47z_1_.pdf (64.9 KB)&quot;&gt;GM4SLV&lt;/a&gt;&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; July 2028 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;252-449&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;GM4SLV Amateur Radio&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;gm4slv_amateur_radio&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;150-450&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;business_radio_simple&quot;&gt;Business Radio Simple&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;ofcom_licence_details&quot;&gt;OFCOM Licence Details&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;/div&gt;

&lt;h5 id=&quot;surrendered_1_july_2023_renewal_was_due_and_i_couldn_t_justify_the_cost_as_the_licence_has_not_been_used_often_enough_in_the_5_years_since_issue&quot;&gt;Surrendered 1 July 2023. Renewal was due and I couldn&amp;#039;t justify the cost as the licence has not been used often enough in the 5 years since issue.&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;frequencies&quot;&gt;Frequencies&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;div class=&quot;table sectionedit7&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Low Band &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Mid Band &lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;High Band&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;UHF 1&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;77.6875 MHz &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;164.0500 MHz &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;169.0875 MHz &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;449.3125 MHz&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;86.3375 MHz &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;164.0625 MHz &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;169.3125 MHz &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;449.4000 MHz&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;86.3500 MHz &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;173.0500 MHz &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;449.4750 MHz&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;86.3625 MHz &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;173.0625 MHz &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;458.7875 MHz&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;86.3750 MHz &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;173.0875 MHz &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;458.8000 MHz&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;   &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;   &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;   &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;458.8125 MHz&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;   &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt;   &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;   &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;458.8250 MHz&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1020-1358&amp;quot;} --&gt;
&lt;p&gt;
— &lt;em&gt;John Pumford-Green 01/06/22 13:13&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Page last updated: 01/01/70 01:00 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Business Radio Simple&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;business_radio_simple&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;451-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 06 Jul 2026 17:16:25 +0000</pubDate>
        </item>
        <item>
            <title>6502 Setup</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:6502:setup</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:6502:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:6502:start&quot; data-wiki-id=&quot;public:computers:archive:6502:start&quot;&gt;6502 Project&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;setup&quot;&gt;6502 Setup&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Various pre-requisites &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;6502 Setup&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;setup&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-72&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;vim_syntax_highlighting&quot;&gt;Vim Syntax Highlighting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To get better syntax highlighting for 6502 assembler I found a vim syntax file &lt;code&gt;asmM6502.vim&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/jestin/asmM6502.vim&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/jestin/asmM6502.vim&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/jestin/asmM6502.vim&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
This was saved as &lt;code&gt;~/.vim/syntax/asmM6502.vim&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
To make sure assembler source code used the 6502 syntax add:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;autocmd BufRead,BufNewFile *.s,*.asm,*.inc set filetype=asmM6502&lt;/pre&gt;

&lt;p&gt;
to &lt;code&gt;~/.vimrc&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Vim Syntax Highlighting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vim_syntax_highlighting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;73-449&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;vim_in_action&quot;&gt;Vim in action&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:linux:6502:screenshot_2022-08-10_14.30.06.png&quot; class=&quot;media wikilink2&quot; title=&quot;public:linux:6502:screenshot_2022-08-10_14.30.06.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=8ccc6a&amp;amp;media=public:linux:6502:screenshot_2022-08-10_14.30.06.png&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Vim in action&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vim_in_action&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;450-546&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;assembler_compiler_vasm&quot;&gt;Assembler compiler VASM&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To compile source to machine-code suitable for blowing onto EEPROM use the &lt;code&gt;vasm&lt;/code&gt; compiler
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s possible to self-compile &lt;code&gt;VASM&lt;/code&gt; by downloading the source-code from:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://sun.hasenbraten.de/vasm/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://sun.hasenbraten.de/vasm/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://sun.hasenbraten.de/vasm/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
but there are ready made binaries here, specifically for the 6502 &lt;em&gt;old-style&lt;/em&gt; binaries:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.compilers.de/vasm.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.compilers.de/vasm.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.compilers.de/vasm.html&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Use the link at the foot of the page:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://www.ibaug.de/vasm/vasm6502.zip&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.ibaug.de/vasm/vasm6502.zip&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.ibaug.de/vasm/vasm6502.zip&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Download, unzip (extracts the files needed into &lt;code&gt;../vasm6502_oldstyle/linux/&lt;/code&gt;)
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo cp ./vasm6502_oldstyle/linux/* /usr/local/bin&lt;/pre&gt;

&lt;p&gt;
Add an alias to &lt;code&gt;~/.bashrc&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;alias vasm=&amp;#039;vasm6502_oldstyle -Fbin -dotdir&amp;#039;&lt;/pre&gt;

&lt;p&gt;
for the most used options
&lt;/p&gt;

&lt;p&gt;
To compile a source file to a binary &lt;code&gt;a.out&lt;/code&gt; file:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;vasm hello_world.s&lt;/pre&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_476164d1efa7f52f846efd942523a309_1&quot;&gt;hello_world.s &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_476164d1efa7f52f846efd942523a309_1&quot;&gt;&lt;pre class=&quot;code asm&quot;&gt;PORTB = &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6000&lt;/span&gt;
PORTA = &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6001&lt;/span&gt;
DDRB = &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6002&lt;/span&gt;
DDRA = &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6003&lt;/span&gt;
&amp;nbsp;
E  = &lt;span class=&quot;nu0&quot;&gt;%10000000&lt;/span&gt;
RW = &lt;span class=&quot;nu0&quot;&gt;%01000000&lt;/span&gt;
RS = &lt;span class=&quot;nu0&quot;&gt;%00100000&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;org &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8000&lt;/span&gt;
&amp;nbsp;
reset&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  ldx #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;ff
  txs
&amp;nbsp;
  lda #&lt;span class=&quot;nu0&quot;&gt;%11111111&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Set all pins on port B to output&lt;/span&gt;
  sta DDRB
  lda #&lt;span class=&quot;nu0&quot;&gt;%11100000&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Set top 3 pins on port A to output&lt;/span&gt;
  sta DDRA
&amp;nbsp;
  lda #&lt;span class=&quot;nu0&quot;&gt;%00111000&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Set 8-bit mode; 2-line display; 5x8 font&lt;/span&gt;
  jsr lcd_instruction
  lda #&lt;span class=&quot;nu0&quot;&gt;%00001110&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Display on; cursor on; blink off&lt;/span&gt;
  jsr lcd_instruction
  lda #&lt;span class=&quot;nu0&quot;&gt;%00000110&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Increment and shift cursor; don&#039;t shift display&lt;/span&gt;
  jsr lcd_instruction
  lda #&lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;00000001&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;; Clear display&lt;/span&gt;
  jsr lcd_instruction
&amp;nbsp;
  ldx #&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
print&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda message&lt;span class=&quot;sy1&quot;&gt;,&lt;/span&gt;x
  beq &lt;span class=&quot;kw1&quot;&gt;loop&lt;/span&gt;
  jsr print_char
  inx
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; print
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;loop&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;jmp&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;loop&lt;/span&gt;
&amp;nbsp;
message&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;asciiz &lt;span class=&quot;st0&quot;&gt;&amp;quot;Hello, world!&amp;quot;&lt;/span&gt;
&amp;nbsp;
lcd_wait&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  pha
  lda #&lt;span class=&quot;nu0&quot;&gt;%00000000&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;; Port B is input&lt;/span&gt;
  sta DDRB
lcdbusy&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  lda #RW
  sta PORTA
  lda #&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;RW | E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  sta PORTA
  lda PORTB
  &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; #&lt;span class=&quot;nu0&quot;&gt;%10000000&lt;/span&gt;
  bne lcdbusy
&amp;nbsp;
  lda #RW
  sta PORTA
  lda #&lt;span class=&quot;nu0&quot;&gt;%11111111&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;; Port B is output&lt;/span&gt;
  sta DDRB
  pla
  rts
&amp;nbsp;
lcd_instruction&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  jsr lcd_wait
  sta PORTB
  lda #&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;         &lt;span class=&quot;co1&quot;&gt;; Clear RS/RW/E bits&lt;/span&gt;
  sta PORTA
  lda #E         &lt;span class=&quot;co1&quot;&gt;; Set E bit to send instruction&lt;/span&gt;
  sta PORTA
  lda #&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;         &lt;span class=&quot;co1&quot;&gt;; Clear RS/RW/E bits&lt;/span&gt;
  sta PORTA
  rts
&amp;nbsp;
print_char&lt;span class=&quot;sy1&quot;&gt;:&lt;/span&gt;
  jsr lcd_wait
  sta PORTB
  lda #RS         &lt;span class=&quot;co1&quot;&gt;; Set RS; Clear RW/E bits&lt;/span&gt;
  sta PORTA
  lda #&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;RS | E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;   &lt;span class=&quot;co1&quot;&gt;; Set E bit to send instruction&lt;/span&gt;
  sta PORTA
  lda #RS         &lt;span class=&quot;co1&quot;&gt;; Clear E bits&lt;/span&gt;
  sta PORTA
  rts
&amp;nbsp;
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;org &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;fffc
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;word&lt;/span&gt; reset
  &lt;span class=&quot;sy1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw6&quot;&gt;word&lt;/span&gt; &lt;span class=&quot;sy2&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0000&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6502&lt;/span&gt; $ vasm hello_world.s
vasm 1.8h &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2002&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;2019&lt;/span&gt; Volker Barthelmann
vasm &lt;span class=&quot;nu0&quot;&gt;6502&lt;/span&gt; cpu backend &lt;span class=&quot;nu0&quot;&gt;0.8&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2002&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2006&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2008&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;2012&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2014&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;2018&lt;/span&gt; Frank Wille
vasm oldstyle syntax module 0.13f &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2002&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;2018&lt;/span&gt; Frank Wille
vasm binary output module 1.8a &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2002&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;2009&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2013&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2015&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2017&lt;/span&gt; Volker Barthelmann
&amp;nbsp;
seg8000&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;acrwx1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:                 &lt;span class=&quot;nu0&quot;&gt;143&lt;/span&gt; bytes
segfffc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;acrwx1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:                   &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; bytes&lt;/pre&gt;

&lt;p&gt;
Inspect the hexcode in the binary file &lt;code&gt;hexdump&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6502&lt;/span&gt; $ &lt;span class=&quot;kw2&quot;&gt;hexdump&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-C&lt;/span&gt; a.out
00000000  a2 ff 9a a9 ff 8d 02 &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;  a9 e0 8d 03 &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; a9 &lt;span class=&quot;nu0&quot;&gt;38&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;.......&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;....&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;.8 &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;
00000010  &lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; a9 0e &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; a9  06 &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; a9 01 &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;c... c... c... c&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;
00000020  &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; a2 00 bd &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; f0 07  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;79&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; e8 4c &lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; 4c  &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;....&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;... y..L&lt;span class=&quot;co0&quot;&gt;#.L|&lt;/span&gt;
00000030  2f &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;65&lt;/span&gt; 6c 6c 6f 2c  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;77&lt;/span&gt; 6f &lt;span class=&quot;nu0&quot;&gt;72&lt;/span&gt; 6c &lt;span class=&quot;nu0&quot;&gt;64&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt; 00  &lt;span class=&quot;sy0&quot;&gt;|/&lt;/span&gt;.Hello, world&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;.&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;
00000040  &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; a9 00 8d 02 &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; a9 &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;  8d 01 &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; a9 c0 8d 01 &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;H....&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;.&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;..&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;....&lt;span class=&quot;sy0&quot;&gt;`|&lt;/span&gt;
00000050  ad 00 &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;29&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; d0 ef a9  &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt; 8d 01 &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; a9 ff 8d 02  &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;..&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;....&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;..&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;....&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;
00000060  &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;68&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; 8d 00  &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; a9 00 8d 01 &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; a9 &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;|`&lt;/span&gt;h&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;...&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;....&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;..&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;
00000070  8d 01 &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; a9 00 8d 01 &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;  &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; 8d 00 &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; a9  &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;..&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;....&lt;span class=&quot;sy0&quot;&gt;``&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;...&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;.&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;
00000080  &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt; 8d 01 &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; a9 a0 8d 01  &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; a9 &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt; 8d 01 &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; 00  &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; ..&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;....&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;. ..&lt;span class=&quot;sy0&quot;&gt;``&lt;/span&gt;.&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;
00000090  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;................&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;
00007ff0  00 00 00 00 00 00 00 00  00 00 00 00 00 &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt; 00 00  &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;................&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;
00008000&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Assembler compiler VASM&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;assembler_compiler_vasm&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;547-4187&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;minipro_eeprom_programmer&quot;&gt;minipro EEPROM programmer&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
An open source project &lt;code&gt;minipro&lt;/code&gt; to use the TI866 USB EEPROM programmer under Linux
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;git clone https://gitlab.com/DavidGriffith/minipro.git
cd minipro
make
sudo make install&lt;/pre&gt;

&lt;p&gt;
to burn an EEPROM
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;minipro -p AT28C256 -w a.out&lt;/pre&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 10/08/22 13:50&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;minipro EEPROM programmer&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;minipro_eeprom_programmer&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4188-4511&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Sept&amp;#039; 2022 : Moved to CA65 assembler. &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:6502:ca65_setup&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:6502:ca65_setup&quot; data-wiki-id=&quot;public:computers:archive:6502:ca65_setup&quot;&gt;CA65 Setup&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:6502&amp;amp;do=showtag&amp;amp;tag=6502&quot; class=&quot;wikilink1&quot; title=&quot;tag:6502&quot; rel=&quot;tag&quot;&gt;6502&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;4512-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>MB7AZE AllStar Config</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:mb7azeconf</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:start&quot; data-wiki-id=&quot;public:radio:topics:allstar:start&quot;&gt;AllStar Linking&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;mb7aze_allstar_config&quot;&gt;MB7AZE AllStar Config&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;MB7AZE AllStar Config&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mb7aze_allstar_config&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-55&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;main_config_files&quot;&gt;Main Config files&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Main Config files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;main_config_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;56-86&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;echolinkconf&quot;&gt;echolink.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_15d1cf04a4bd433b3e955d90ef9c862b_1&quot;&gt;/etc/asterisk/echolink.conf &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_15d1cf04a4bd433b3e955d90ef9c862b_1&quot;&gt;&lt;pre class=&quot;code&quot;&gt;[el0]
call = MB7AZE-L                          ; Change this!
pwd = xxxxxxxx                           ; Change this!
name = John                        ; Change this!
qth = allstar 481481                           ; Change this!
email = gm4slv@gm4slv.plus.com                         ; Change this!
node = 879598                           ; Change this!
; Data for EchoLink Status Page
lat = 60.2883                               ; Latitude in decimal degrees
lon = -001.42533                               ; Longitude in decimal degrees
freq = 430.050                              ; not mandatory Frequency in MHz
tone = 0.0                              ; not mandatory CTCSS Tone (0 for none)
power = 1                               ; 0=0W, 1=1W, 2=4W, 3=9W, 4=16W, 5=25W, 6=36W, 7=49W, 8=64W, 9=81W (Power in Watts)
height = 0                              ; 0=10 1=20 2=40 3=80 4=160 5=320 6=640 7=1280 8=2560 9=5120 (AMSL in Feet)
gain = 0                                ; Gain in db (0-9)
dir = 0                                 ; 0=omni 1=45deg 2=90deg 3=135deg 4=180deg 5=225deg 6=270deg 7=315deg 8=360deg (Direction)
maxstns = 5                            ; Max Stations

rtcptimeout = 10
recfile = /tmp/echolink_recorded.gsm    ;
astnode = 481481             ; Change this!
context = radio-secure                  ; Default in code is echolink-in

; Max 3 servers
server1 = nasouth.echolink.org
server2 = naeast.echolink.org
server3 = server3.echolink.org

; To deny w6xxx you would add the statement: deny = w6xxx
; To prohibit computer-based connections you would write: permit = *-*
; To allow access to only a select group of callsigns: permit = w6abc,w6def,...
; permit                                ; comma delimited list of callsign, type (-r)
; deny


; Remote text commands thru netcat:
; o.conip &amp;lt;IPaddress&amp;gt;    (request a connect)
; o.dconip &amp;lt;IPaddress&amp;gt;   (request a disconnect)
; o.rec                  (turn on/off recording)

; ipaddr
; port
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;echolink.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;echolinkconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;87-2134&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;managerconf&quot;&gt;manager.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_15d1cf04a4bd433b3e955d90ef9c862b_2&quot;&gt;/etc/asterisk/manager.conf &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_15d1cf04a4bd433b3e955d90ef9c862b_2&quot;&gt;&lt;pre class=&quot;code&quot;&gt;;
; Asterisk Call Management support
;

; By default asterisk will listen on localhost only. 
[general]
enabled = yes
port = 5038
bindaddr = 127.0.0.1

[gm4slv]
secret = llcgi
read = all,system,call,log,verbose,command,agent,user,config
write = all,system,call,log,verbose,command,agent,user,config&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;manager.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;managerconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2135-2513&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;rptconf&quot;&gt;rpt.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_15d1cf04a4bd433b3e955d90ef9c862b_3&quot;&gt;/etc/asterisk/rpt.conf &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_15d1cf04a4bd433b3e955d90ef9c862b_3&quot;&gt;&lt;pre class=&quot;code&quot;&gt;; Radio Repeater configuration file (for use with app_rpt)
; Your Repeater
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; This is where you define your nodes which can be connected to.
;

[nodes]
; Note, if you are using automatic update for allstar link nodes,
; no allstar link nodes should be defined here. Only place a definition
; for your local nodes, and private (off of allstar link) nodes here.

;481480 = radio@127.0.0.1:4569/481480,NONE	; This must be changed to your node number
481481 = radio@127.0.0.1:4569/481481,NONE	; This must be changed to your node number
                                        ; and iax port number if not the default

;[481480]					; Change this to your assigned node number
[481481]					; Change this to your assigned node number

                                        ; Must also be enabled in modules.conf
					; Rx audio/signalling channel. Choose ONLY 1 per node stanza

					; Enable the selected channel driver in modules.conf !!!
;rxchannel = dahdi/pseudo	        ; No radio (hub)
 rxchannel = SimpleUSB/usb_48148	; SimpleUSB
; rxchannel = Pi/1                      ; Raspberry Pi PiTA
; rxchannel = Radio/usb_48148		; USBRadio (DSP)
; rxchannel = Dahdi/1			; PCI Quad card
; rxchannel = Beagle/1			; BeagleBoard
; rxchannel = USRP/127.0.0.1:34001:32001; GNU Radio interface USRP
; rxchannel = Voter/48148                ; RTCM device


duplex = 1                              ; 0 = Half duplex with no telemetry tones or hang time.
                                        ;     Special Case: Full duplex if linktolink is set to yes.
                                        ;     This mode is preferred when interfacing with an external multiport repeater controller.
					;     Comment out idrecording and idtalkover to suppress IDs also
                                        ; 1 = Half duplex with telemetry tones and hang time. Does not repeat audio.
                                        ;     This mode is preferred when interfacing a simplex node.
                                        ; 2 = Full Duplex with telemetry tones and hang time.
                                        ;     This mode is preferred when interfacing a repeater.
                                        ; 3 = Full Duplex with telemetry tones and hang time, but no repeated audio.
                                        ; 4 = Full Duplex with telemetry tones and hang time. Repeated audio only when the autopatch is down.

linktolink = no				; disables forcing physical half-duplex operation of main repeater while
					; still keeping half-duplex semantics (optional)

linkmongain = 0				; Link Monitor Gain adjusts the audio level of monitored nodes when a signal from another node or the local receiver is received.
					; If linkmongain is set to a negative number the monitored audio will decrease by the set amount in db.
					; If linkmongain set to a positive number monitored audio will increase by the set amount in db.
					; The value of linkmongain is in db. The default value is 0 db.

erxgain = -3				; Echolink receive gain adjustment
					; Note: Gain is in db-volts (20logVI/VO)
etxgain = 3				; Echolink transmit gain adjustment
					; Note: Gain is in db-volts (20logVI/VO)
eannmode = 2                           ; 1 = Say only node number on echolink connects (default = 1)
                                        ; 2 = say phonetic call sign only on echolink connects
                                        ; 3 = say phonetic call sign and node number on echolink connects

;controlstates = controlstates		; system control state stanza

scheduler = schedule			; scheduler stanza
functions = functions			; Repeater Function stanza
phone_functions = functions		; Phone Function stanza
link_functions = functions		; Link Function stanza

telemetry = telemetry			; Telemetry stanza
morse = morse				; Morse stanza
wait_times = wait-times			; Wait times stanza

context = radio				; dialing context for phone
callerid = &amp;quot;Repeater&amp;quot; &amp;lt;0000000000&amp;gt;	; callerid for phone calls
accountcode = RADIO                     ; account code (optional)

hangtime = 200				; squelch tail hang time (in ms) (optional, default 5 seconds, 5000 ms)
althangtime = 300			; longer squelch tail
totime = 300000				; 5 mins (12/4/22) transmit time-out time (in ms) (optional, default 3 minutes 180000 ms)

telemnomdb = -3				;
telemduckdb = -10			;

;idrecording = /home/gm4slv/gm4slv_id
;idrecording = /home/gm4slv/mb7aze_id
idrecording = |iDE MB7AZE			; Main ID message

;idtalkover = |iMB7AZE			; Talkover ID message
idtalkover = |iMB7AZE			; Talkover ID message
					; See Telemetry section Example: idrecording = rpt/nodenames/48148
idtime = 900000				; 15 mins (12/4/22) id interval time (in ms) (optional) Default 5 minutes (300000 ms)
politeid = 30000			; time in milliseconds before ID timer expires to try and ID in the tail. (optional, default 30000)

unlinkedct = ct12			; Send a this courtesy tone when the user unkeys if the node is not connected to any other nodes. (optional, default is none)
remotect = ct3				; remote linked courtesy tone (indicates a remote is in the list of links)
linkunkeyct = ct4			; sent when a transmission received over the link unkeys
;nolocallinkct = 0			; Send unlinkedct instead if another local node is connected to this node (hosted on the same PC).

; Supermon smlogger
connpgm=/usr/local/sbin/supermon/smlogger 1
discpgm=/usr/local/sbin/supermon/smlogger 0

;connpgm = yourconnectprogram		; Disabled. Execute a program you specify on connect. (default)
					; passes 2 command line arguments to your program:
					; 1. node number in this stanza (us)
					; 2. node number being connected to us (them)
;discpgm = yourdisconnectprogram	; Disabled. Execute a program you specify on disconnect. (default)
					; passes 2 command line arguments to your program:
					; 1. node number in this stanza (us)
					; 2. node number being disconnected from us (them)

lnkactenable = 0			; Set to 1 to enable the link activity timer. Applicable to standard nodes only.

lnkacttime = 3600			; Link activity timer time in seconds.
lnkactmacro = *73			; Function to execute when link activity timer expires.
lnkacttimerwarn = custom/timeout		; Message to play when the link activity timer has 30 seconds left.

;remote_inact_timeout =	60		; Specifies the amount of time without keying from the link. Set to 0 to disable timeout. (15 * 60)
;remote_timeout =			; Session time out for remote base. Set to 0 to disable. (60 * 60)
;remote_timeout_warning_freq =		; 30
;remote_timeout_warning =		; (3 * 60)

;nounkeyct = 0				; Set to a 1 to eliminate courtesy tones and associated delays.

holdofftelem = 0			; Hold off all telemetry when signal is present on receiver or from connected nodes
					; except when an ID needs to be done and there is a signal coming from a connected node.

telemdefault = 1                        ; 0 = telemetry output off
                                        ; 1 = telemetry output on (default = 1)
                                        ; 2 = timed telemetry output on command execution and for a short time thereafter.

telemdynamic = 1                        ; 0 = disallow users to change the local telemetry setting with a COP command,
                                        ; 1 = Allow users to change the setting with a COP command. (default = 1)

beaconing = 1				; Send ID regardless of repeater activity (Required in the UK, but probably illegal in the US)

parrotmode = 1				; 0 = Parrot Off (default = 0)
					; 1 = Parrot On Command
					; 2 = Parrot Always
					; 3 = Parrot Once by Command

parrottime = 1000			; Set the amount of time in milliseconds
					; to wait before parroting what was received

;rxnotch=1065,40                        ; (Optional) Notch a particular frequency for a specified
                                        ; b/w. app_rpt must have been compiled with
                                        ; the notch option

startup_macro = *80*81*70

; nodenames = /var/lib/asterisk/sounds/rpt/nodenames.callsign	; Point to alternate nodename sound directory

; Stream your node audio to Broadcastify or similar. See https://wiki.allstarlink.org/wiki/Stream_Node_Audio_to_Broadcastify
; outstreamcmd = /bin/sh,-c,/usr/bin/lame --preset cbr 16 -r -m m -s 8 --bitwidth 16 - - | /usr/bin/ezstream -qvc /etc/ezstream.xml

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Need more information on these

;extnodes = extnodes-different	; section in extnodefile containing dynamic node information (optional)
;extnodefile = /home/gm4slv/rpt_extnodes	; Points to nodelist file containing dynamic node info default = /var/lib/asterisk/rpt_extnodes (optional)
;extnodefile2 =			; Is this a list of node files? Possible a list of private nodes or a list of static IPs for known nodes????
;nodenames = /foo/names         ; locaton of node sound files default = /var/lib/asterisk/sounds/rpt/nodenames
;archivedir = /tmp              ; defines and enables activity recording into specified directory (optional)
;monminblocks = 2048            ; Min 1K blocks to be left on partition (will not save monitor output if disk too full)

;                               ; The tailmessagetime,tailsquashedtime, and tailmessagelist need to be set
;                               ; to support tail messages. They can be omitted otherwise.
;tailmessagetime = 300000       ; Play a tail message every 5 mins
;tailsquashedtime = 30000       ; If squashed by another user,
;                               ; try again after 30 seconds
;tailmessagelist = msg1,msg2    ; list of messages to be played for tail message

; alt_functions
; ctgroup
; dphone_functions
; idtime
; iobase
; iospeed
; locallist
; mars		Remote Base
; memory
; nobusyout
; nodes
; nolocallinkct
; notelemtx
; outxlat
; parrot
; propagate_phonedtmf
; rptnode
; rptinactmacro  Macro to execute when inactivity timer expires
; rptinacttime   Inactivity timer time in seconds  (0 seconds disables feature)
; rxnotch	Optional Audio notch
; simplexphonedelay
; tonemacro
; tonezone
; txlimits


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


; *** Status Reporting ***

; Comment the following statpost line stop to reporting of the status of your node to stats.allstarlink.org
statpost_url = http://stats.allstarlink.org/uhandler ; Status updates

[functions]

; Prefix	Functions
; *1		Disconnect Link
; *2		Monitor Link
; *3		Connect Link
; *4		Command Mode
; *5		Macros
; *6		User Functions
; *7		Connection Status/Functions
; *8		User Functions
; *9		User Functions
; *0		User Functions

; *A		User Functions
; *B		User Functions
; *C		User Functions
; *D		User Functions


; Mandatory Command Codes
1 = ilink,1		; Disconnect specified link
2 = ilink,2		; Connect specified link -- monitor only
3 = ilink,3		; Connect specified link -- tranceive
4 = ilink,4		; Enter command mode on specified link

70 = ilink,5		; System status

;99 = cop,6              ; PTT (phone mode only)

; End Mandatory Command Codes

73 = ilink,6		; Disconnect All Links
74 = ilink,16		; Reconnect links disconnected with &amp;quot;disconnect all links&amp;quot;

80 = status,11         ; Force ID (local only)
81 = status,12         ; Give Time of Day (local only)

91 = cop,21		; Enable Parrot Mode
92 = cop,22		; Disable Parrot Mode
93 = cop,55		; Parrot Once if parrot mode is disabled

98 = cop,2		; System enable
99 = cop,3		; System disable

901 = cop,1				; System warm boot

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Macro Commands
5 = macro

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Autopatch Commands
; Note, This may be a good place for other 2 digit frequently used commands

;61 = autopatchup,noct = 1,farenddisconnect = 1,dialtime = 20000  ; Autopatch up
;62 = autopatchdn                                                 ; Autopatch down

; autopatchup can optionally take comma delimited setting=value pairs:

; context = string		; Override default context with &amp;quot;string&amp;quot;
; dialtime = ms			; Specify the max number of milliseconds between phone number digits (1000 milliseconds = 1 second)
; farenddisconnect = 1		; Automatically disconnect when called party hangs up
; noct = 1			; Don&amp;#039;t send repeater courtesy tone during autopatch calls
; quiet = 1			; Don&amp;#039;t send dial tone, or connect messages. Do not send patch down message when called party hangs up
				; Example: 123=autopatchup,dialtime=20000,noct=1,farenddisconnect=1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Status Commands

; 1 - Force ID (global)
; 2 - Give Time of Day (global)
; 3 - Give software Version (global)
; 4 - Give GPS location info
; 5 - Last (dtmf) user
; 11 - Force ID (local only)
; 12 - Give Time of Day (local only)

;721 = status,1          ; Force ID (global)
;722 = status,2          ; Give Time of Day (global)
;723 = status,3          ; Give software Version (global)
;724 = status,4          ; Give GPS location info
;725 = status,5          ; Last (dtmf) user



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Link Commands

; 1 - Disconnect specified link
; 2 - Connect specified link -- monitor only
; 3 - Connect specified link -- tranceive
; 4 - Enter command mode on specified link
; 5 - System status
; 6 - Disconnect all links
; 7 - Last Node to Key Up
; 8 - Connect specified link -- local monitor only
; 9 - Send Text Message (9,&amp;lt;destnodeno or 0 (for all)&amp;gt;,Message Text, etc.
; 10 - Disconnect all RANGER links (except permalinks)
; 11 - Disconnect a previously permanently connected link
; 12 - Permanently connect specified link -- monitor only
; 13 - Permanently connect specified link -- tranceive
; 15 - Full system status (all nodes)
; 16 - Reconnect links disconnected with &amp;quot;disconnect all links&amp;quot;
; 17 - MDC test (for diag purposes)
; 18 - Permanently Connect specified link -- local monitor only

; ilink commands 1 through 5 are defined in the Mandatory Command section

;806 = ilink,6			; Disconnect all links
;827 = ilink,7			; Last Node to Key Up
;808 = ilink,8			; Connect specified link -- local monitor only
;809 = ilink,9,48148,&amp;quot;Testing&amp;quot;	; would send a text message to node 48148 replace 48148 with 0 for all connected nodes
;810 = ilink,10			; Disconnect all RANGER links (except permalinks)
;811 = ilink,11			; Disconnect a previously permanently connected link
;812 = ilink,12			; Permanently connect specified link -- monitor only
;823 = ilink,13			; Permanently connect specified link -- tranceive
;815 = ilink,15			; Full system status (all nodes)
;817 = ilink,17			; MDC test (for diag purposes)
;818 = ilink,18			; Permanently Connect specified link -- local monitor only

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Control operator (cop) functions.
; Change these to something other than these codes listed below!
; Uncomment as needed.

;901 = cop,1				; System warm boot

; 904 = cop,4				; Test tone on/off (toggle)
; 905 = cop,5				; Dump system variables on console (debug use only)

; 907 = cop,7				; Time out timer enable
; 908 = cop,8				; Time out timer disable

; 909 = cop,9				; Autopatch enable
; 910 = cop,10				; Autopatch disable

; 911 = cop,11				; User linking functions enable
; 912 = cop,12				; User linking functions disable

; 913 = cop,13				; Query system control state
; 914 = cop,14				; Set system control state

; 915 = cop,15				; Scheduler enable
; 916 = cop,16				; Scheduler disable

; 917 = cop,17				; User functions enable (time, id, etc)
; 918 = cop,18				; User functions disable

; 919 = cop,19				; Select alternate hang time (althangtime)
; 920 = cop,20				; Select standard hangtime (hangtime)


; 924 = cop,24				; Flush all telemetry
; 925 = cop,25				; Query last node un-keyed
; 926 = cop,26				; Query all nodes keyed/unkeyed
; 927 = cop,27				; Reset DAQ minimum on a pin
; 928 = cop,28				; Reset DAQ maximum on a pin

; 930 = cop,30				; Recall Memory Setting in Attached Xcvr

; 931 = cop,31				; Channel Selector for Parallel Programmed Xcvr

; 932 = cop,32				; Touchtone pad test: command + Digit string + # to playback all digits pressed

; 933 = cop,33				; Local Telemetry Output Enable
; 934 = cop,34				; Local Telemetry Output Disable
; 935 = cop,35				; Local Telemetry Output on Demand

; 936 = cop,36				; Foreign Link Local Output Path Enable
; 937 = cop,37				; Foreign Link Local Output Path Disable
; 938 = cop,38				; Foreign Link Local Output Path Follows Local Telemetry
; 939 = cop,39				; Foreign Link Local Output Path on Demand

; 942 = cop,42				; Echolink announce node # only
; 943 = cop,43				; Echolink announce node Callsign only
; 944 = cop,44				; Echolink announce node # &amp;amp; Callsign

; 945 = cop,45				; Link Activity timer enable
; 945 = cop,46				; Link Activity timer disable
; 947 = cop,47				; Reset &amp;quot;Link Config Changed&amp;quot; Flag

; 948 = cop,48				; Send Page Tone (Tone specs separated by parenthesis)

; 949 = cop,49				; Disable incoming connections (control state noice)
; 950 = cop,50				; Enable incoming connections (control state noicd)

; 951 = cop,51				; Enable sleep mode
; 952 = cop,52				; Disable sleep mode
; 953 = cop,53				; Wake up from sleep
; 954 = cop,54				; Go to sleep

; 956 = cop,56                            ; Rx CTCSS Enable
; 957 = cop,57                            ; Rx CTCSS Disable

; 958 = cop.58                            ; Tx CTCSS On Input only Enable
; 959 = cop,59                            ; Tx CTCSS On Input only Disable

; 960 = cop,60                            ; Send MDC-1200 Burst (cop,60,type,UnitID[,DestID,SubCode])
;                                         ; Type is &amp;#039;I&amp;#039; for PttID, &amp;#039;E&amp;#039; for Emergency, and &amp;#039;C&amp;#039; for Call
;                                         ; (SelCall or Alert), or &amp;#039;SX&amp;#039; for STS (ststus), where X is 0-F.
;                                         ; DestID and subcode are only specified for  the &amp;#039;C&amp;#039; type message.
;                                         ; UnitID is the local systems UnitID. DestID is the MDC1200 ID of
;                                         ; the radio being called, and the subcodes are as follows:
;                                         ; Subcode &amp;#039;8205&amp;#039; is Voice Selective Call for Spectra (&amp;#039;Call&amp;#039;)
;                                         ; Subcode &amp;#039;8015&amp;#039; is Voice Selective Call for Maxtrac (&amp;#039;SC&amp;#039;) or
;                                         ; Astro-Saber(&amp;#039;Call&amp;#039;)
;                                         ; Subcode &amp;#039;810D&amp;#039; is Call Alert (like Maxtrac &amp;#039;CA&amp;#039;)

; 961 = cop,61                            ; Send Message to USB to control GPIO pins (cop,61,GPIO1=0[,GPIO4=1].....)
; 962 = cop,62                            ; Send Message to USB to control GPIO pins, quietly (cop,62,GPIO1=0[,GPIO4=1].....)

; 963 = cop,63                            ; Send pre-configred APRSTT notification (cop,63,CALL[,OVERLAYCHR])
; 964 = cop,64                            ; Send pre-configred APRSTT notification, quietly (cop,64,CALL[,OVERLAYCHR])
; 965 = cop,65                            ; Send POCSAG page (equipped channel types only)

[functions-remote]

0 = remote,1                            ; Retrieve Memory
1 = remote,2                            ; Set freq.
2 = remote,3                            ; Set tx PL tone
3 = remote,4                            ; Set rx PL tone
40 = remote,100                         ; Rx PL off
41 = remote,101                         ; Rx PL on
42 = remote,102                         ; Tx PL off
43 = remote,103                         ; Tx PL on
44 = remote,104                         ; Low Power
45 = remote,105                         ; Medium Power
46 = remote,106                         ; High Power
711 = remote,107                        ; Bump -20
714 = remote,108                        ; Bump -100
717 = remote,109                        ; Bump -500
713 = remote,110                        ; Bump +20
716 = remote,111                        ; Bump +100
719 = remote,112                        ; Bump +500
721 = remote,113                        ; Scan - slow
724 = remote,114                        ; Scan - quick
727 = remote,115                        ; Scan - fast
723 = remote,116                        ; Scan + slow
726 = remote,117                        ; Scan + quick
729 = remote,118                        ; Scan + fast
79 = remote,119                         ; Tune
51 = remote,5                           ; Long status query
52 = remote,140				; Short status query
67 = remote,210				; Send a *
69 = remote,211				; Send a #
;91 = remote,99,CALLSIGN,LICENSETAG     ; Remote base login.
                                        ; Define a different dtmf sequence for each user which is
                                        ; authorized to use the remote base to control access to it.
                                        ; For examble 9139583=remote,99,WB6NIL,G would grant access to
                                        ; the remote base and announce WB6NIL as being logged in.
                                        ; Another entry, 9148351=remote,99,WA6ZFT,E would grant access to
                                        ; the remote base and announce WA6ZFT as being logged in.
                                        ; When the remote base is disconnected from the originating node, the
                                        ; user will be logged out. The LICENSETAG argument is used to enforce
					; tx frequency limits. See [txlimits] below.
85 = cop,6                              ; Remote base telephone key


[telemetry]

; Telemetry entries can be shared across all repeaters, or defined for each repeater.
; Can be a tone sequence, morse string, or a file
;
; |t - Tone escape sequence
;
; Tone sequences consist of 1 or more 4-tuple entries (freq1, freq2, duration, amplitude)
; Single frequencies are created by setting freq1 or freq2 to zero.
;
; |m - Morse escape sequence
;
; Sends Morse code at the telemetry amplitude and telemetry frequency as defined in the
; [morse] section.
;
; Follow with an alphanumeric string
;
; |i - Morse ID escape sequence
;
; Sends Morse code at the ID amplitude and ID frequency as defined in the
; [morse] section.
;
; path/to/sound/file/without/extension
;
; Send the sound if in place of a constructed tone. Do not include the file extension
; Example: ct8 = rpt/bloop
; Example: idrecording = rpt/nodenames/48148

ct1 = |t(350,0,100,2048)(500,0,100,2048)(660,0,100,2048)
ct2 = |t(660,880,150,2048)
ct3 = |t(440,0,150,4096)
ct4 = |t(550,0,150,2048)
ct5 = |t(660,0,150,2048)
ct6 = |t(880,0,150,2048)
ct7 = |t(660,440,150,2048)
ct8 = |t(700,1100,150,2048)
ranger = |t(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,50,0)(1800,0,60,3072)(0,0,150,0)
remotemon = |mR
;remotemon = |t(1209,0,50,2048)                                  ; local courtesy tone when receive only
remotetx = |mK
;remotetx = |t(1633,0,50,3000)(0,0,80,0)(1209,0,50,3000)		; local courtesy tone when linked Trancieve mode
cmdmode = |t(900,903,200,2048)
;functcomplete = |mW
functcomplete = |t(1000,0,100,2048)(0,0,100,0)(1000,0,100,2048)
remcomplete = |t(650,0,100,2048)(0,0,100,0)(650,0,100,2048)(0,0,100,0)(650,0,100,2048)
pfxtone = |t(350,440,30000,3072)
patchup = rpt/callproceeding
patchdown = rpt/callterminated

ct12 = |mI
ct13 = |mR

; As far as what the numbers mean,
; (000,000,010,000)
;   |   |   |   |-------amplitude
;   |   |   |-------------duration
;   |   |-------------------Tone 2
;   |-------------------------Tone 1

; So, with 0,0,10,0 That says No Tone1, No Tone2, 10ms duration, 0 Amplitude.
; Use it for a delay.  Fine tuning for how long before telemetry is sent, in conjunction with the telemdelay parameter)
; The numbers, like 350,440,10,2048 are 350Hz, 440Hz, 10ms delay, amplitude of 2048.

; Morse code parameters, these are common to all repeaters.

[morse]
speed = 18				; Approximate speed in WPM
frequency = 800				; Morse Telemetry Frequency
amplitude = 4096			; Morse Telemetry Amplitude
idfrequency = 1065			; Morse ID Frequency
idamplitude = 1024			; Morse ID Amplitude

;
; This section allows wait times for telemetry events to be adjusted
; A section for wait times can be defined for every repeater
;

[wait-times]
telemwait = 400                        ; Time to wait before sending most telemetry
idwait = 500                            ; Time to wait before starting ID
unkeywait = 200                        ; Time to wait after unkey before sending CT&amp;#039;s and link telemetry
calltermwait = 2000                     ; Time to wait before announcing &amp;quot;call terminated&amp;quot;

; Memories for remote bases

[memory]
;00 = 146.580,100.0,m
;01 = 147.030,103.5,m+t
;02 = 147.240,103.5,m+t
;03 = 147.765,79.7,m-t
;04 = 146.460,100.0,m
;05 = 146.550,100.0,m

; Place command macros here

[macro]
11 = *141223# ; disc. hubnet
21 = *241223# ; monitor hubnet
31 = *341223# ; transceive hubnet

12 = *12197# ; disc Freestar
22 = *22197# ; monitor Freestar
32 = *32197# ; transceive Freestar

13 = *129332# ; disc Alaska
23 = *229332# ; monitor Alaska
33 = *329332# ; transceive Alaska

14 = *154383# ; disc CQ North
24 = *254383# ; monitor CQ North
34 = *354383# ; transceive CQ North

191 = *140894# ; disconnect hubnet Echo
391 = *340894# ; connect hubnet echo

192 = *13009999#	; dis echolink echotest
392 = *33009999#	; con echolink echotest



; Data Acquisition configuration

;[daq-list]
;device = device_name1
;device = device_name2

;Where: device_name1 and device_name2 are stanzas you define in this file

;device = daq-cham-1

; Device name

;[daq-cham-1]				; Defined in [daq-list]
;hwtype = uchameleon			; DAQ hardware type
;devnode = /dev/ttyUSB0			; DAQ device node (if required)
;1 = inadc				; Pin definition for an ADC channel
;2 = inadc
;3 = inadc
;4 = inadc
;5 = inadc
;6 = inadc
;7 = inadc
;8 = inadc
;9 = inp				; Pin definition for an input with a weak pullup resistor
;10 = inp
;11 = inp
;12 = inp
;13 = in				; Pin definition for an input without a weak pullup resistor
;14 = out				; Pin definition for an output
;15 = out
;16 = out
;17 = out
;18 = out

;[meter-faces]

;face = scale(scalepre,scalediv,scalepost),word/?,...
;
; scalepre = offset to add before dividing with scalediv
; scalediv = full scale/number of whole units (e.g. 256/20 or 12.8 for 20 volts).
; scalepost = offset to add after dividing with scalediv
;
;face = range(X-Y:word,X2-Y2:word,...),word/?,...
;face = bit(low-word,high-word),word/?,...
;
; word/? is either a word in /var/lib/asterisk/sounds or one of its subdirectories,
; or a question mark which is  a placeholder for the measured value.
;
;
; Battery voltage 0-20 volts
;batvolts = scale(0,12.8,0),rpt/thevoltageis,?,ha/volts
; 4 quadrant wind direction
;winddir = range(0-33:north,34-96:west,97-160:south,161-224:east,225-255:north),rpt/thewindis,?
; LM34 temperature sensor with 130 deg. F full scale
;lm34f = scale(0,1.969,0),rpt/thetemperatureis,?,degrees,fahrenheit
; Status poll (non alarmed)
;light = bit(ha/off,ha/on),ha/light,?

;[alarms]
;
;tag = device,pin,node,ignorefirst,func-low,func-hi
;
;tag = a unique name for the alarm
;device = daq device to poll
;pin = the device pin to be monitored
;ignorefirstalarm = set to 1 to throwaway first alarm event, or 0 to report it
;node = the node number to execute the function on
;func-low = the DTMF function to execute on a high to low transition
;func-high = the DTMF function to execute on a low to high transition
;
; a  &amp;#039;-&amp;#039; as a function name is shorthand for no-operation
;
;door = daq-cham-1,9,1,2017,*7,-
;pwrfail = daq-cham-1,10,0,2017,*911111,-
;
; Control states
; Allow several control operator functions to be changed at once using one command (good for scheduling)
;
;[controlstates]
;statenum = copcmd,[copcmd]...
;0 = rptena,lnkena,apena,totena,ufena,noicd  ; Normal operation
;1 = rptena,lnkena,apdis,totdis,ufena,noice  ; Net and news operation
;2 = rptena,lnkdis,apdis,totena,ufdis,noice  ; Repeater only operation

; Scheduler - execute a macro at a given time

[schedule]
;dtmf_function =  m h dom mon dow  ; ala cron, star is implied
;8 = 55 12 * * *   ; at midnight, execute macro 2.

; See https://wiki.allstarlink.org/wiki/Event_Management
[events]

#includeifexists custom/rpt.conf

&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;rpt.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rptconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2514-30933&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;simpleusbconf&quot;&gt;simpleusb.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_15d1cf04a4bd433b3e955d90ef9c862b_4&quot;&gt;/etc/asterisk/simpleusb.conf &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_15d1cf04a4bd433b3e955d90ef9c862b_4&quot;&gt;&lt;pre class=&quot;code&quot;&gt;; If you are going to use this channel driver, you MUST enable it in modules.conf
; change:
; noload =&amp;gt; chan_simpleusb.so ;                   CM1xx USB Cards with Radio Interface Channel Driver (No DSP)
; to:
; load =&amp;gt; chan_simpleusb.so ;                   CM1xx USB Cards with Radio Interface Channel Driver (No DSP)

; SimpleUSB configuration

[general]

[usb_48148]

eeprom = 0              ; EEPROM installed: 0,1
                        ; 0 = no (default)
                        ; 1 = yes

hdwtype = 0		; Leave this set to 0 for USB sound fobs modified using
			; the instructions from usbfob.pdf. Use a setting of 
			; 1 is for Dingotel/Sph interfaces.

; Receiver parameters

rxboost = 0             ; 0 = 20db attenuator inserted, 1= 20db attenuator removed
                        ; Set to 1 for additonal gain if using a low-level receiver output

carrierfrom = usb ; no,usb,usbinvert
                        ; no - no carrier detection at all
                        ; usb - from the COR line on the USB sound fob (Active high)
                        ; usbinvert - from the inverted COR line on the USB sound fob (Active low)

ctcssfrom = no		; no,usb,usbinvert
                        ; no - CTCSS decoding, system will be carrier squelch
                        ; usb - CTCSS decoding using input from USB sound fob (Active high)
                        ; usbinvert - from the inverted CTCSS line on the USB sound fob (Active low)

deemphasis = yes         ; enable de-emphasis (input from discriminator)

plfilter = no           ; enable PL filter

;rxondelay = 0		; number of 20ms intervals to hold off receiver turn-on indication


; Transmitter parameters

txmixa = voice          ; Left channel output (A): no,voice
                        ; no - Do not output anything
                        ; voice - output voice only

txmixb = no		; Right channel output (B): no,voice
                        ; no - Do not output anything
                        ; voice - output voice only

txboost = 0

invertptt = 0           ; Invert PTT: 0,1
                        ; 0 - ground to transmit
                        ; 1 - open to transmit

preemphasis = yes	; Perform standard 6db/octave pre-emphasis

; pager = no            ; no,a,b (e.g. pager = b means &amp;quot;put the normal repeat audio on channel A, and the pager audio on channel B&amp;quot;)

; duplex3 = 0           ; duplex 3 gain setting (0 to disable)

duplex = 0              ; Duplex 0,1
                        ; 0 - half duplex
                        ; 1 - full duplex

#includeifexists custom/simpleusb.conf
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;simpleusb.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;simpleusbconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;30934-33593&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;simpleusb_tune_usb_48148conf&quot;&gt;simpleusb_tune_usb_48148.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_15d1cf04a4bd433b3e955d90ef9c862b_5&quot;&gt;/etc/asterisk/simpleusb_tune_usb_48148.conf &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_15d1cf04a4bd433b3e955d90ef9c862b_5&quot;&gt;&lt;pre class=&quot;code&quot;&gt;[usb_48148]
; name=usb_48148
; devicenum=1
devstr=1-1.2:1.0
rxmixerset=330
txmixaset=70
txmixbset=50
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;simpleusb_tune_usb_48148.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;simpleusb_tune_usb_48148conf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;33594-33811&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;crontab&quot;&gt;crontab&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;code&gt;00 * * * * sudo /usr/sbin/asterisk -rx “rpt localplay 481481 /home/gm4slv/mb7aze_id ” &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;00 * * * * sleep 4 &amp;amp;&amp;amp; sudo /usr/sbin/asterisk -rx “rpt fun 481481 *81” &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Page created Sun May 29 15:48:50 2022 by John Pumford-Green
&lt;/p&gt;

&lt;p&gt;
Page last updated: 04/06/26 21:19 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:pi&amp;amp;do=showtag&amp;amp;tag=pi&quot; class=&quot;wikilink1&quot; title=&quot;tag:pi&quot; rel=&quot;tag&quot;&gt;pi&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:allstar&amp;amp;do=showtag&amp;amp;tag=allstar&quot; class=&quot;wikilink1&quot; title=&quot;tag:allstar&quot; rel=&quot;tag&quot;&gt;allstar&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:mb7aze&amp;amp;do=showtag&amp;amp;tag=mb7aze&quot; class=&quot;wikilink1&quot; title=&quot;tag:mb7aze&quot; rel=&quot;tag&quot;&gt;mb7aze&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;crontab&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;crontab&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;33812-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 20:19:57 +0000</pubDate>
        </item>
        <item>
            <title>60m Transceiver</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:arduino:60m_transceiver</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:arduino:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:arduino:start&quot; data-wiki-id=&quot;public:radio:topics:arduino:start&quot;&gt;Arduino Projects&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;m_transceiver&quot;&gt;60m Transceiver&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
The 60m transceiver has the following features, which vary according to the loaded firmware
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Channelized operation&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; LCD display&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Frequency&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Mode (SSB / CW)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Modulation Source (Mic/Key/Data)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; RX / TX status&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 9MHz IF with Xtal filter&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SSB &amp;amp; CW set via mode switch&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Approx 3W PEP&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Digital mode input/output and PTT via 9-pin D&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SSB Mic input via 8-pin round “Icom” connector&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Modulation Source (Mic or Data) can chosen via select switch&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Scan start switch - scan a preset group of channels - cycles continuously, no “squelch”&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Use of Jenal SC2 CCIR493 Selcal microphone can be supported - including scanning&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;60m Transceiver&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;m_transceiver&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-707&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;arduino_versions&quot;&gt;Arduino Versions&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
There are several different firmware versions….this is just a sample…
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Arduino Versions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;arduino_versions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;708-812&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;rx_only_with_ssb_cw_scan&quot;&gt;RX Only, with SSB, CW &amp;amp; scan&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:topics:arduino:gm4slv_60m_channels_cwscan_noptt_new_calibration_130523.ino&quot; class=&quot;media mediafile mf_ino&quot; title=&quot;public:radio:topics:arduino:gm4slv_60m_channels_cwscan_noptt_new_calibration_130523.ino (14.3 KB)&quot;&gt;gm4slv_60m_channels_cwscan_noptt_new_calibration_130523.ino&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_d45123c413b9198075f9eec4d87a6236_1&quot;&gt;Firmware (Click to view) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_d45123c413b9198075f9eec4d87a6236_1&quot;&gt;&lt;pre class=&quot;code c&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;lt;rgb_lcd.h&amp;gt;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;lt;si5351.h&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; version&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;v0.1&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; channel_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; 
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5258500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5260000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5261000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5262000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5263000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5276000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5278500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5279000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5287200&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5290000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5298000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5301000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5304000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5317000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5320000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5333000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5334000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5335000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5354000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5355000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5362000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5363000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5364700&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5366500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5371500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5378000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5379000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5395000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5398500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5403500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5345000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5245000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5450000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5505000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5680000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5195000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5616000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5649000&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; scan_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; 
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
 &lt;span class=&quot;nu0&quot;&gt;5260000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5261000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;nu0&quot;&gt;5262000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5263000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;nu0&quot;&gt;5366500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5354000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;nu0&quot;&gt;5355000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mems &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel_array&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; scan_mems &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;scan_array&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// the last &amp;quot;no_scan&amp;quot; number channels of&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// channel_array are not to be scanned. &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Put the channels not to be scanned last &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// in the array and update no_scan to reflect. &lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; no_scan &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; bandStart &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5000000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;    
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; bandEnd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6000000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; txcio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9001200&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; cwoffset &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;600&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; filteroffset &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu8&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; channel_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;channel&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;//      &lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; oldfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; currentfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; updatedisplay &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Rotary encoder pins and other inputs&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; rotAPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; rotBPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; pushSwPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mictxrxPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; txRLA1Pin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; txRLA2Pin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; datatxrxPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; modRLAPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; modeSWPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; scanSWPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; scanning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; old_scanning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; tx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; oldtxrx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mod &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; oldmod &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; channel_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// push-button to toggle tune method&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; old_channel_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; scan_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; scan_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;channel&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; old_scan_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// 1 = USB/LSB, 0 = CW &lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; oldmode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Rotary encoder variables, used by interrupt routines&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; rotAval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; rotBval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;   
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit5 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit6 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit7 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Instantiate the Objects&lt;/span&gt;
rgb_lcd lcd&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
Si5351 si5351&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
byte customChar&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11111&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11011&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11001&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b00000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11001&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11011&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11111&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11111&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; setup&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Set up frequency and radix switches&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotAPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotBPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pushSwPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mictxrxPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;datatxrxPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modeSWPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;scanSWPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA1Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; OUTPUT&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA2Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; OUTPUT&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modRLAPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; OUTPUT&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA1Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA2Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modRLAPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Set up interrupt pins&lt;/span&gt;
  attachInterrupt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalPinToInterrupt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotAPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ISRrotAChange&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CHANGE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  attachInterrupt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalPinToInterrupt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotBPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ISRrotBChange&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CHANGE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Initialize the display&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
lcd.&lt;span class=&quot;me1&quot;&gt;createChar&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; customChar&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// create a new custom character&lt;/span&gt;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;cursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Initialize the Si5351&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;//si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, -31200);         // &lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;//si5351.drive_strength(SI5351_CLK0, SI5351_DRIVE_8MA);   // 2 mA for HB mixers&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;//si5351.drive_strength(SI5351_CLK2, SI5351_DRIVE_8MA);   // 2 mA for HB mixers&lt;/span&gt;
&amp;nbsp;
  si5351.&lt;span class=&quot;me1&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SI5351_CRYSTAL_LOAD_8PF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  si5351.&lt;span class=&quot;me1&quot;&gt;set_correction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;34976&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_PLL_INPUT_XO&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  si5351.&lt;span class=&quot;me1&quot;&gt;set_pll&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SI5351_PLL_FIXED&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_PLLA&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  si5351.&lt;span class=&quot;me1&quot;&gt;drive_strength&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SI5351_CLK0&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_DRIVE_8MA&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  si5351.&lt;span class=&quot;me1&quot;&gt;drive_strength&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SI5351_CLK2&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_DRIVE_8MA&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Update display and send start frequency&lt;/span&gt;
  UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  SendFrequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; loop&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
  CheckScanSwitch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;//CheckTXSwitch();&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;//CheckModSwitch();&lt;/span&gt;
&amp;nbsp;
  CheckModeSwitch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Check to see if the freq has changed&lt;/span&gt;
  currentfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; getfreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                      &lt;span class=&quot;co1&quot;&gt;// Interrupt safe method to get the current frequency&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;currentfreq &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; oldfreq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    oldfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; currentfreq&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    SendFrequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Check the rotary encoder (radix) swith&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pushSwPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;           &lt;span class=&quot;co1&quot;&gt;// Read the rotary encoder switch&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    delay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pushSwPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel_freq &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      channel_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel_freq &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      channel_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;//delay(50);&lt;/span&gt;
&amp;nbsp;
    UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// end of main loop&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; getfreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; temp_freq&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  cli&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  temp_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; freq&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  sei&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; temp_freq&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; CheckScanSwitch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;scanSWPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
      scanning  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      scan_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; channel &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; scan_mems &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;no_scan &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
      freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; scan_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;channel&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
      UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      SendFrequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      delay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;scanning &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; old_scanning&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        scanning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      old_scanning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; scanning&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;//void CheckModSwitch()&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//{&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//  if (digitalRead(modSWPin) == 0)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      mod = 0;                             // 0 = Phone&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//  else if (digitalRead(modSWPin) == 1)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      mod = 1;                                 // 1=Data&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;//  if (mod != oldmod)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//  {&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//    if ( mod == 0)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      {&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//        digitalWrite(modRLAPin,LOW);&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      }&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//    else&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      {&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//        digitalWrite(modRLAPin,HIGH);&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      } &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//    UpdateDisplay();&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//    SendFrequency();&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//    oldmod = mod;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//  }&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//}&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; CheckModeSwitch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modeSWPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                             &lt;span class=&quot;co1&quot;&gt;// 0 = CW&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modeSWPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                                 &lt;span class=&quot;co1&quot;&gt;// 1=SSB&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; oldmode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; 
    UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    SendFrequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    oldmode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; mode&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; CheckTXSwitch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;scanning &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mictxrxPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    tx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                             &lt;span class=&quot;co1&quot;&gt;// 1=TX&lt;/span&gt;
    mod &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;datatxrxPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;  tx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
     mod &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mictxrxPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;  tx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                                 &lt;span class=&quot;co1&quot;&gt;// 0=Phone&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;datatxrxPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;   tx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tx &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; oldtxrx&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; tx &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mod &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
          digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modRLAPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mod &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
          digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modRLAPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;HIGH&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA1Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;HIGH&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA2Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;HIGH&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA1Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA2Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;   
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    SendFrequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    oldtxrx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Interrupt routines&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; ISRrotAChange&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotAPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    rotAval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    UpdateRot&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    rotAval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    UpdateRot&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; ISRrotBChange&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotBPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    rotBval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    UpdateRot&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    rotBval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    UpdateRot&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Determine which way the rotary encoder is rotating and action as required&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; UpdateRot&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotState&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                         &lt;span class=&quot;co1&quot;&gt;// Idle state, look for direction&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;rotBval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                               &lt;span class=&quot;co1&quot;&gt;// CW 1&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;rotAval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                              &lt;span class=&quot;co1&quot;&gt;// CCW 1&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                         &lt;span class=&quot;co1&quot;&gt;// CW, wait for A low while B is low&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;rotBval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;rotAval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
          &lt;span class=&quot;co1&quot;&gt;// either increment the radix or freq&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel_freq &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
          &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            updatedisplay &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; bandEnd&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; bandEnd&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
          &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
          &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; channel &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; mems &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; channel_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;channel&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
          &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
          rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                             &lt;span class=&quot;co1&quot;&gt;// CW 2&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotAval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                               &lt;span class=&quot;co1&quot;&gt;// It was just a glitch on B, go back to start&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                         &lt;span class=&quot;co1&quot;&gt;// CW, wait for B high&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotBval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                               &lt;span class=&quot;co1&quot;&gt;// CW 3&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                         &lt;span class=&quot;co1&quot;&gt;// CW, wait for A high&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotAval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                               &lt;span class=&quot;co1&quot;&gt;// back to idle (detent) state&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                        &lt;span class=&quot;co1&quot;&gt;// CCW, wait for B low while A is low&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;rotAval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;rotBval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; channel_freq &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
          &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            updatedisplay &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; bandStart&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; bandStart&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
          &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
          &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; channel &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
             &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; mems &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
             &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; channel_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;channel&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
          &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
          rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                            &lt;span class=&quot;co1&quot;&gt;// CCW 2&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotBval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                               &lt;span class=&quot;co1&quot;&gt;// It was just a glitch on A, go back to start&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                        &lt;span class=&quot;co1&quot;&gt;// CCW, wait for A high&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotAval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                              &lt;span class=&quot;co1&quot;&gt;// CCW 3&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                        &lt;span class=&quot;co1&quot;&gt;// CCW, wait for B high&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotBval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                               &lt;span class=&quot;co1&quot;&gt;// back to idle (detent) state&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    digit1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    digit2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    digit3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    digit4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;   
    digit5 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    digit6 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    digit7 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1000000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digit7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digit6&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digit5&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digit4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digit3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digit2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;kHz&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;        &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;scanning &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;co1&quot;&gt;// lcd.print(&amp;quot;|&amp;quot;);&lt;/span&gt;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// print the custom char at (2, 0)&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;coMULTI&quot;&gt;/*
  //if (channel &amp;lt; 10)
  //{
  //lcd.print(&amp;quot;0&amp;quot;);
  //}
  //lcd.print(channel);
&amp;nbsp;
 lcd.setCursor(0,1);
 if (freq == 5287200 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;WSPR1&amp;quot;);
 }
&amp;nbsp;
 if (freq == 5290000 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;ORK&amp;quot;);
 }
&amp;nbsp;
 if (freq == 5364700 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;WSPR2&amp;quot;);
 }
&amp;nbsp;
 if (freq == 5450000 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;RAF&amp;quot;);
 }
&amp;nbsp;
 if (freq == 5505000 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;EIP&amp;quot;);
 }
&amp;nbsp;
if (freq == 5317000 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;VMARS&amp;quot;);
 }
&amp;nbsp;
if (freq == 5366500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FK&amp;quot;);
 }
&amp;nbsp;
if (freq == 5258500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FA&amp;quot;);
 }
&amp;nbsp;
if (freq == 5278500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FB&amp;quot;);
 }
&amp;nbsp;
if (freq == 5288500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FC&amp;quot;);
 }
&amp;nbsp;
if (freq == 5371500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FL&amp;quot;);
 }
&amp;nbsp;
if (freq == 5398500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FE&amp;quot;);
 }
&amp;nbsp;
 if (freq == 5403500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FM&amp;quot;);
 }
&amp;nbsp;
if (freq == 5195000 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;DRA5&amp;quot;);
 }
&amp;nbsp;
if (freq == 5262000 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;QRP CW&amp;quot;);
 }
&amp;nbsp;
&amp;nbsp;
if ((freq &amp;gt;= 5259000) &amp;amp;&amp;amp; (freq &amp;lt; 5262000) )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;CW&amp;quot;);
 }
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
*/&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
 lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tx &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;RX&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tx &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;TX&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;SSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; CW&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; Key&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;//lcd.print(version);&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mod &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; Mic&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;//lcd.print(version);&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Data&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;co1&quot;&gt;//lcd.print(version);&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel_freq &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;blink&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;noBlink&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// end of updatedisplay()&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; SendFrequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// SSB&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    si5351.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txcio &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; 100ULL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_CLK0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;     &lt;span class=&quot;co1&quot;&gt;// VFO&lt;/span&gt;
    si5351.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txcio &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; 100ULL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_CLK2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;              &lt;span class=&quot;co1&quot;&gt;// BFO&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// CW&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; tx &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    si5351.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txcio &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; cwoffset &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; filteroffset&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; 100ULL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_CLK0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;    &lt;span class=&quot;co1&quot;&gt;// VFO&lt;/span&gt;
    si5351.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txcio  &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; filteroffset&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; 100ULL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_CLK2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                     &lt;span class=&quot;co1&quot;&gt;// BFO&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tx &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    si5351.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txcio &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; cwoffset &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; filteroffset&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; 100ULL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_CLK0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;    &lt;span class=&quot;co1&quot;&gt;// VFO&lt;/span&gt;
    si5351.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txcio &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; cwoffset &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; filteroffset&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; 100ULL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_CLK2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;           &lt;span class=&quot;co1&quot;&gt;// BFO&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// end of sendfrequency()&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RX Only, with SSB, CW &amp;amp; scan&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rx_only_with_ssb_cw_scan&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;813-15688&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;full_tx_rx_-_with_ssb_cw_scan&quot;&gt;Full TX/RX - with SSB, CW &amp;amp; Scan&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:topics:arduino:gm4slv_60m_channels_cwscan_ptt_new_calibration_230823.ino&quot; class=&quot;media mediafile mf_ino&quot; title=&quot;public:radio:topics:arduino:gm4slv_60m_channels_cwscan_ptt_new_calibration_230823.ino (14.3 KB)&quot;&gt;gm4slv_60m_channels_cwscan_ptt_new_calibration_230823.ino&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_d45123c413b9198075f9eec4d87a6236_2&quot;&gt;Firmware (Click to view) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_d45123c413b9198075f9eec4d87a6236_2&quot;&gt;&lt;pre class=&quot;code c&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#include &amp;lt;rgb_lcd.h&amp;gt;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;#include &amp;lt;si5351.h&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;char&lt;/span&gt; version&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;v0.1&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; channel_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; 
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5258500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5260000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5261000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5262000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5263000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5276000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5278500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5279000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5287200&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5290000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5298000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5301000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5304000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5317000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5320000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5333000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5334000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5335000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5354000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5355000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5362000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5363000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5364700&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5366500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5371500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5378000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5379000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5395000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5398500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5403500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5345000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5245000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5450000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5505000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5680000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5195000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5616000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5649000&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; scan_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; 
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
 &lt;span class=&quot;nu0&quot;&gt;5260000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5261000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;nu0&quot;&gt;5262000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5263000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;nu0&quot;&gt;5366500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5354000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;nu0&quot;&gt;5355000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mems &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel_array&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; scan_mems &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;scan_array&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// the last &amp;quot;no_scan&amp;quot; number channels of&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// channel_array are not to be scanned. &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Put the channels not to be scanned last &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// in the array and update no_scan to reflect. &lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; no_scan &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; bandStart &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5000000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;    
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; bandEnd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6000000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; txcio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9001200&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; cwoffset &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;600&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; filteroffset &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu8&quot;&gt;01&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; channel_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;channel&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;//      &lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; oldfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; currentfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; updatedisplay &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Rotary encoder pins and other inputs&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; rotAPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; rotBPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; pushSwPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mictxrxPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; txRLA1Pin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; txRLA2Pin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; datatxrxPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; modRLAPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; modeSWPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; scanSWPin &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; scanning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; old_scanning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; tx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; oldtxrx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mod &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; oldmod &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; channel_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// push-button to toggle tune method&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; old_channel_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; scan_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; scan_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;channel&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; old_scan_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// 1 = USB/LSB, 0 = CW &lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; oldmode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Rotary encoder variables, used by interrupt routines&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; rotAval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;volatile&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; rotBval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;   
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit5 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit6 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;int&lt;/span&gt; digit7 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Instantiate the Objects&lt;/span&gt;
rgb_lcd lcd&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
Si5351 si5351&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
byte customChar&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11111&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11011&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11001&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b00000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11001&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11011&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11111&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;nu6&quot;&gt;0b11111&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; setup&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Set up frequency and radix switches&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotAPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotBPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pushSwPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mictxrxPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;datatxrxPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modeSWPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;scanSWPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; INPUT_PULLUP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA1Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; OUTPUT&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA2Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; OUTPUT&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  pinMode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modRLAPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; OUTPUT&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA1Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA2Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modRLAPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Set up interrupt pins&lt;/span&gt;
  attachInterrupt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalPinToInterrupt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotAPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ISRrotAChange&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CHANGE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  attachInterrupt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalPinToInterrupt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotBPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ISRrotBChange&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; CHANGE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Initialize the display&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;begin&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
lcd.&lt;span class=&quot;me1&quot;&gt;createChar&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; customChar&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// create a new custom character&lt;/span&gt;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;cursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Initialize the Si5351&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;//si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, -31200);         // &lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;//si5351.drive_strength(SI5351_CLK0, SI5351_DRIVE_8MA);   // 2 mA for HB mixers&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;//si5351.drive_strength(SI5351_CLK2, SI5351_DRIVE_8MA);   // 2 mA for HB mixers&lt;/span&gt;
&amp;nbsp;
  si5351.&lt;span class=&quot;me1&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SI5351_CRYSTAL_LOAD_8PF&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  si5351.&lt;span class=&quot;me1&quot;&gt;set_correction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;34976&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_PLL_INPUT_XO&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  si5351.&lt;span class=&quot;me1&quot;&gt;set_pll&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SI5351_PLL_FIXED&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_PLLA&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  si5351.&lt;span class=&quot;me1&quot;&gt;drive_strength&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SI5351_CLK0&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_DRIVE_8MA&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  si5351.&lt;span class=&quot;me1&quot;&gt;drive_strength&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;SI5351_CLK2&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_DRIVE_8MA&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Update display and send start frequency&lt;/span&gt;
  UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  SendFrequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; loop&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
  CheckScanSwitch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  CheckTXSwitch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;//CheckModSwitch();&lt;/span&gt;
&amp;nbsp;
  CheckModeSwitch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Check to see if the freq has changed&lt;/span&gt;
  currentfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; getfreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                      &lt;span class=&quot;co1&quot;&gt;// Interrupt safe method to get the current frequency&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;currentfreq &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; oldfreq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    oldfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; currentfreq&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    SendFrequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;co1&quot;&gt;// Check the rotary encoder (radix) swith&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pushSwPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;           &lt;span class=&quot;co1&quot;&gt;// Read the rotary encoder switch&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    delay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pushSwPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel_freq &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      channel_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel_freq &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      channel_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;//delay(50);&lt;/span&gt;
&amp;nbsp;
    UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// end of main loop&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; getfreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw4&quot;&gt;long&lt;/span&gt; temp_freq&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  cli&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  temp_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; freq&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  sei&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; temp_freq&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; CheckScanSwitch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
 &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;scanSWPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
      scanning  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      scan_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; channel &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; scan_mems &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;no_scan &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
      freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; scan_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;channel&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
      UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      SendFrequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      delay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;scanning &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; old_scanning&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        scanning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      old_scanning &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; scanning&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;//void CheckModSwitch()&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//{&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//  if (digitalRead(modSWPin) == 0)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      mod = 0;                             // 0 = Phone&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//  else if (digitalRead(modSWPin) == 1)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      mod = 1;                                 // 1=Data&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;//  if (mod != oldmod)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//  {&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//    if ( mod == 0)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      {&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//        digitalWrite(modRLAPin,LOW);&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      }&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//    else&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      {&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//        digitalWrite(modRLAPin,HIGH);&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//      } &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//    UpdateDisplay();&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//    SendFrequency();&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//    oldmod = mod;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//  }&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//}&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; CheckModeSwitch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modeSWPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                             &lt;span class=&quot;co1&quot;&gt;// 0 = CW&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modeSWPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                                 &lt;span class=&quot;co1&quot;&gt;// 1=SSB&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; oldmode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; 
    UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    SendFrequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    oldmode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; mode&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; CheckTXSwitch&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;scanning &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mictxrxPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    tx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                             &lt;span class=&quot;co1&quot;&gt;// 1=TX&lt;/span&gt;
    mod &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;datatxrxPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;  tx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
     mod &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mictxrxPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;  tx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                                 &lt;span class=&quot;co1&quot;&gt;// 0=Phone&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;datatxrxPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;   tx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tx &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; oldtxrx&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; tx &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mod &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
          digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modRLAPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mod &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
          digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;modRLAPin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;HIGH&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA1Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;HIGH&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA2Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;HIGH&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA1Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        digitalWrite&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txRLA2Pin&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;LOW&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;   
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    SendFrequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    oldtxrx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Interrupt routines&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; ISRrotAChange&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotAPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    rotAval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    UpdateRot&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    rotAval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    UpdateRot&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; ISRrotBChange&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digitalRead&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotBPin&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    rotBval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    UpdateRot&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    rotBval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    UpdateRot&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Determine which way the rotary encoder is rotating and action as required&lt;/span&gt;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; UpdateRot&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotState&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                         &lt;span class=&quot;co1&quot;&gt;// Idle state, look for direction&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;rotBval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                               &lt;span class=&quot;co1&quot;&gt;// CW 1&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;rotAval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                              &lt;span class=&quot;co1&quot;&gt;// CCW 1&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                         &lt;span class=&quot;co1&quot;&gt;// CW, wait for A low while B is low&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;rotBval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;rotAval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
          &lt;span class=&quot;co1&quot;&gt;// either increment the radix or freq&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel_freq &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
          &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            updatedisplay &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; bandEnd&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; bandEnd&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
          &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
          &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; channel &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; mems &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; channel_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;channel&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
          &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
          rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                             &lt;span class=&quot;co1&quot;&gt;// CW 2&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotAval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                               &lt;span class=&quot;co1&quot;&gt;// It was just a glitch on B, go back to start&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                         &lt;span class=&quot;co1&quot;&gt;// CW, wait for B high&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotBval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                               &lt;span class=&quot;co1&quot;&gt;// CW 3&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                         &lt;span class=&quot;co1&quot;&gt;// CW, wait for A high&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotAval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                               &lt;span class=&quot;co1&quot;&gt;// back to idle (detent) state&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                        &lt;span class=&quot;co1&quot;&gt;// CCW, wait for B low while A is low&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;rotAval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;rotBval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; channel_freq &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
          &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            updatedisplay &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; bandStart&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; bandStart&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
          &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
          &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; channel &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
             &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              channel &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; mems &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
             &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; channel_array&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;channel&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
          &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
          rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                            &lt;span class=&quot;co1&quot;&gt;// CCW 2&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotBval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                               &lt;span class=&quot;co1&quot;&gt;// It was just a glitch on A, go back to start&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                        &lt;span class=&quot;co1&quot;&gt;// CCW, wait for A high&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotAval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                              &lt;span class=&quot;co1&quot;&gt;// CCW 3&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;                                        &lt;span class=&quot;co1&quot;&gt;// CCW, wait for B high&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rotBval&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rotState &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                               &lt;span class=&quot;co1&quot;&gt;// back to idle (detent) state&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; UpdateDisplay&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    digit1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    digit2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    digit3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    digit4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;   
    digit5 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    digit6 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    digit7 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1000000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digit7&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digit6&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digit5&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digit4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digit3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;digit2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;kHz&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;        &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;scanning &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;co1&quot;&gt;// lcd.print(&amp;quot;|&amp;quot;);&lt;/span&gt;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// print the custom char at (2, 0)&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
 &lt;span class=&quot;coMULTI&quot;&gt;/*
  //if (channel &amp;lt; 10)
  //{
  //lcd.print(&amp;quot;0&amp;quot;);
  //}
  //lcd.print(channel);
&amp;nbsp;
 lcd.setCursor(0,1);
 if (freq == 5287200 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;WSPR1&amp;quot;);
 }
&amp;nbsp;
 if (freq == 5290000 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;ORK&amp;quot;);
 }
&amp;nbsp;
 if (freq == 5364700 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;WSPR2&amp;quot;);
 }
&amp;nbsp;
 if (freq == 5450000 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;RAF&amp;quot;);
 }
&amp;nbsp;
 if (freq == 5505000 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;EIP&amp;quot;);
 }
&amp;nbsp;
if (freq == 5317000 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;VMARS&amp;quot;);
 }
&amp;nbsp;
if (freq == 5366500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FK&amp;quot;);
 }
&amp;nbsp;
if (freq == 5258500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FA&amp;quot;);
 }
&amp;nbsp;
if (freq == 5278500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FB&amp;quot;);
 }
&amp;nbsp;
if (freq == 5288500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FC&amp;quot;);
 }
&amp;nbsp;
if (freq == 5371500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FL&amp;quot;);
 }
&amp;nbsp;
if (freq == 5398500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FE&amp;quot;);
 }
&amp;nbsp;
 if (freq == 5403500 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;FM&amp;quot;);
 }
&amp;nbsp;
if (freq == 5195000 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;DRA5&amp;quot;);
 }
&amp;nbsp;
if (freq == 5262000 )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;QRP CW&amp;quot;);
 }
&amp;nbsp;
&amp;nbsp;
if ((freq &amp;gt;= 5259000) &amp;amp;&amp;amp; (freq &amp;lt; 5262000) )
 {
  //lcd.setCursor(3,1);
  //lcd.print(&amp;quot;    &amp;quot;);
  //lcd.setCursor(3,1);
  lcd.print(&amp;quot;CW&amp;quot;);
 }
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
*/&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
 lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tx &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;RX&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
   &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tx &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
   &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;TX&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;SSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; CW&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; Key&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;//lcd.print(version);&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mod &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot; Mic&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;//lcd.print(version);&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   lcd.&lt;span class=&quot;me1&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Data&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;co1&quot;&gt;//lcd.print(version);&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;channel_freq &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    lcd.&lt;span class=&quot;me1&quot;&gt;setCursor&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;blink&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  lcd.&lt;span class=&quot;me1&quot;&gt;noBlink&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// end of updatedisplay()&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; SendFrequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// SSB&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    si5351.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txcio &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; 100ULL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_CLK0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;     &lt;span class=&quot;co1&quot;&gt;// VFO&lt;/span&gt;
    si5351.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txcio &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; 100ULL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_CLK2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;              &lt;span class=&quot;co1&quot;&gt;// BFO&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// CW&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; tx &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    si5351.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txcio &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; cwoffset &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; filteroffset&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; 100ULL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_CLK0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;    &lt;span class=&quot;co1&quot;&gt;// VFO&lt;/span&gt;
    si5351.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txcio  &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; filteroffset&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; 100ULL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_CLK2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                     &lt;span class=&quot;co1&quot;&gt;// BFO&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tx &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    si5351.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txcio &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; freq &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; cwoffset &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; filteroffset&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; 100ULL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_CLK0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;    &lt;span class=&quot;co1&quot;&gt;// VFO&lt;/span&gt;
    si5351.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;txcio &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; cwoffset &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; filteroffset&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; 100ULL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SI5351_CLK2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;           &lt;span class=&quot;co1&quot;&gt;// BFO&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// end of sendfrequency()&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Full TX\/RX - with SSB, CW &amp;amp; Scan&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;full_tx_rx_-_with_ssb_cw_scan&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;15689-30564&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Page created  : 11/07/26 10:09 BST
&lt;/p&gt;

&lt;p&gt;
Page updated : 01/01/70 01:00 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:arduino&amp;amp;do=showtag&amp;amp;tag=arduino&quot; class=&quot;wikilink1&quot; title=&quot;tag:arduino&quot; rel=&quot;tag&quot;&gt;arduino&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;30565-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 11 Jul 2026 09:44:34 +0000</pubDate>
        </item>
        <item>
            <title>MB7AZE SvxLink Config</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:mb7azeconf</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:start&quot; data-wiki-id=&quot;public:radio:topics:svxlink:start&quot;&gt;SVXLink&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt; MB7AZE is now QRT and the NoV has expired.&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
The following is for historical interest only….
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;mb7aze_svxlink_config&quot;&gt;MB7AZE SvxLink Config&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;MB7AZE SvxLink Config&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mb7aze_svxlink_config&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;115-151&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;main_config_file&quot;&gt;Main config file&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_a722169c895501e08bbb51c5c0f8c410_1&quot;&gt;svxlink.conf &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_a722169c895501e08bbb51c5c0f8c410_1&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:topics:svxlink:mb7azeconf&amp;amp;codeblock=0&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_conf&quot;&gt;svxlink.conf&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;###############################################################################&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#                                                                             #&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#                Configuration file for the SvxLink server                    #&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#                                                                             #&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;###############################################################################&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;GLOBAL&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#MODULE_PATH=/usr/lib/arm-linux-gnueabihf/svxlink&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LOGICS&lt;/span&gt;=SimplexLogic,ReflectorLogic
&lt;span class=&quot;re2&quot;&gt;CFG_DIR&lt;/span&gt;=svxlink.d
&lt;span class=&quot;re2&quot;&gt;TIMESTAMP_FORMAT&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;%c&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CARD_SAMPLE_RATE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;48000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CARD_CHANNELS=1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LOCATION_INFO&lt;/span&gt;=LocationInfo
&lt;span class=&quot;re2&quot;&gt;LINKS&lt;/span&gt;=LinkToReflector
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;SimplexLogic&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Simplex
&lt;span class=&quot;re2&quot;&gt;RX&lt;/span&gt;=Rx1
&lt;span class=&quot;re2&quot;&gt;TX&lt;/span&gt;=Tx1
&lt;span class=&quot;re2&quot;&gt;DEFAULT_LANG&lt;/span&gt;=en_US
&lt;span class=&quot;re2&quot;&gt;MODULES&lt;/span&gt;=ModuleHelp,ModuleEchoLink,ModuleParrot
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=MB7AZE
&lt;span class=&quot;re2&quot;&gt;SHORT_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SHORT_CW_ID_ENABLE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SHORT_VOICE_ID_ENABLE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LONG_VOICE_ID_ENABLE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CW_AMP&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CW_PITCH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CW_WPM&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LONG_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#IDENT_ONLY_AFTER_TX=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EXEC_CMD_ON_SQL_CLOSE=500&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;EVENT_HANDLER&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;share&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;events.tcl
&lt;span class=&quot;re2&quot;&gt;RGR_SOUND_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#REPORT_CTCSS=77.0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TX_CTCSS&lt;/span&gt;=ALWAYS
&lt;span class=&quot;re2&quot;&gt;MACROS&lt;/span&gt;=Macros
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_NORMAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_LOW&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ACTIVATE_MODULE_ON_LONG_CMD=4:EchoLink&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#QSO_RECORDER=8:QsoRecorder&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ONLINE_CMD&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;998877&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#MUTE_RX_ON_TX=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#MUTE_TX_ON_RX=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#STATE_PTY=/var/run/svxlink/state&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DTMF_CTRL_PTY=/dev/shm/simplex_dtmf_ctrl&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TIME_FORMAT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;RGR_SOUND_ALWAYS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;RepeaterLogic&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Repeater
&lt;span class=&quot;re2&quot;&gt;RX&lt;/span&gt;=Rx1
&lt;span class=&quot;re2&quot;&gt;TX&lt;/span&gt;=Tx1
&lt;span class=&quot;re2&quot;&gt;MODULES&lt;/span&gt;=ModuleHelp,ModuleParrot,ModuleEchoLink,ModuleTclVoiceMail
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=MYCALL
&lt;span class=&quot;re2&quot;&gt;SHORT_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LONG_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#IDENT_ONLY_AFTER_TX=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EXEC_CMD_ON_SQL_CLOSE=500&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;EVENT_HANDLER&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;share&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;events.tcl
&lt;span class=&quot;re2&quot;&gt;DEFAULT_LANG&lt;/span&gt;=en_US
&lt;span class=&quot;re2&quot;&gt;RGR_SOUND_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;REPORT_CTCSS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;136.5&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TX_CTCSS=SQL_OPEN&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MACROS&lt;/span&gt;=Macros
&lt;span class=&quot;co0&quot;&gt;#SEL5_MACRO_RANGE=03400,03499&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_NORMAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_LOW&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#QSO_RECORDER=8:QsoRecorder&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#NO_REPEAT=1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;IDLE_TIMEOUT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;OPEN_ON_1750&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_CTCSS=136:2000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_DTMF=*&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_SQL=5000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_SEL5=01234&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_SQL_FLANK=OPEN&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_SQL_AFTER_RPT_CLOSE=10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;IDLE_SOUND_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_FLAP_SUP_MIN_TIME=1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_FLAP_SUP_MAX_COUNT=10&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ACTIVATE_MODULE_ON_LONG_CMD=4:EchoLink&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#IDENT_NAG_TIMEOUT=15&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#IDENT_NAG_MIN_TIME=2000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ONLINE_CMD=998877&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#STATE_PTY=/var/run/svxlink/state&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DTMF_CTRL_PTY=/dev/shm/repeater_dtmf_ctrl&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ReflectorLogic&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Reflector
&lt;span class=&quot;re2&quot;&gt;DEFAULT_LANG&lt;/span&gt;=en_US
&lt;span class=&quot;re2&quot;&gt;HOSTS&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;put the right server address in here&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;HOST_PORT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;5300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=MB7AZE
&lt;span class=&quot;re2&quot;&gt;AUTH_KEY&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;put the right password in here&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;JITTER_BUFFER_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DEFAULT_TG&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MONITOR_TGS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;91&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;235&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2350&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2351&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;23520&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;23590&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;23561&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TG_SELECT_TIMEOUT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ANNOUNCE_REMOTE_MIN_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MUTE_FIRST_TX_LOC&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MUTE_FIRST_TX_REM&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TMP_MONITOR_TIMEOUT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3600&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;EVENT_HANDLER&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;share&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;events.tcl
&lt;span class=&quot;re2&quot;&gt;NODE_INFO_FILE&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;node_info.json
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;LinkToReflector&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CONNECT_LOGICS&lt;/span&gt;=SimplexLogic:&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;:,ReflectorLogic
&lt;span class=&quot;re2&quot;&gt;DEFAULT_ACTIVE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TIMEOUT=300&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#AUTOACTIVATE_ON_SQL=RepeaterLogic&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;OPTIONS&lt;/span&gt;=DEFAULT_CONNECT,NO_DISCONNECT
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QsoRecorder&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;REC_DIR&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;spool&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;qso_recorder
&lt;span class=&quot;co0&quot;&gt;#MIN_TIME=1000&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MAX_TIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3600&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SOFT_TIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MAX_DIRSIZE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DEFAULT_ACTIVE=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TIMEOUT=300&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#QSO_TIMEOUT=300&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ENCODER_CMD=/usr/bin/oggenc -Q \&amp;quot;%f\&amp;quot; &amp;amp;&amp;amp; rm \&amp;quot;%f\&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Voter&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Voter
&lt;span class=&quot;re2&quot;&gt;RECEIVERS&lt;/span&gt;=Rx1,Rx2,Rx3
&lt;span class=&quot;re2&quot;&gt;VOTING_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;BUFFER_LENGTH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#REVOTE_INTERVAL=1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#HYSTERESIS=50&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_CLOSE_REVOTE_DELAY=500&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#RX_SWITCH_DELAY=500&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#COMMAND_PTY=/dev/shm/voter_ctrl&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;MultiTx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Multi
&lt;span class=&quot;re2&quot;&gt;TRANSMITTERS&lt;/span&gt;=Tx1,Tx2,Tx3
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NetRx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Net
&lt;span class=&quot;re2&quot;&gt;HOST&lt;/span&gt;=remote.rx.host
&lt;span class=&quot;re2&quot;&gt;TCP_PORT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;5210&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#LOG_DISCONNECTS_ONCE=0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUTH_KEY&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Change this key now!&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CODEC&lt;/span&gt;=S16
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_FRAMES_PER_PACKET=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_QUALITY=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_BITRATE=15000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_COMPLEXITY=2&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_VBR=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_VBR_QUALITY=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_ABR=15000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_DEC_ENHANCER=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_FRAME_SIZE=20&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_COMPLEXITY=10&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_BITRATE=20000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_VBR=1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NetTx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Net
&lt;span class=&quot;re2&quot;&gt;HOST&lt;/span&gt;=remote.tx.host
&lt;span class=&quot;re2&quot;&gt;TCP_PORT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;5210&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#LOG_DISCONNECTS_ONCE=0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUTH_KEY&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Change this key now!&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CODEC&lt;/span&gt;=S16
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_FRAMES_PER_PACKET=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_QUALITY=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_BITRATE=15000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_COMPLEXITY=2&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_VBR=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_VBR_QUALITY=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_ABR=15000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_DEC_ENHANCER=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_FRAME_SIZE=20&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_COMPLEXITY=10&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_BITRATE=20000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_VBR=1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Rx1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Local
&lt;span class=&quot;re2&quot;&gt;AUDIO_DEV&lt;/span&gt;=alsa:plughw:&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUDIO_CHANNEL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SQL_DET&lt;/span&gt;=CTCSS
&lt;span class=&quot;re2&quot;&gt;SQL_START_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SQL_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SQL_HANGTIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_EXTENDED_HANGTIME=1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_EXTENDED_HANGTIME_THRESH=15&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_TIMEOUT=600&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;VOX_FILTER_DEPTH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;VOX_THRESH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_MODE=2&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CTCSS_FQ&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;77.0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_SNR_OFFSET=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_OPEN_THRESH=15&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_CLOSE_THRESH=9&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_BPF_LOW=60&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_BPF_HIGH=270&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SERIAL_PORT=/dev/ttyUSB0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SERIAL_PIN=CTS&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SERIAL_SET_PINS=&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EVDEV_DEVNAME=/dev/input/by-id/usb-SYNIC_SYNIC_Wireless_Audio-event-if03&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EVDEV_OPEN=1,163,1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EVDEV_CLOSE=1,163,0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#GPIO_PATH=/sys/class/gpio&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#GPIO_SQL_PIN=gpio25&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PTY_PATH=/tmp/rx1_sql&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;HID_DEVICE&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;hidraw0
&lt;span class=&quot;re2&quot;&gt;HID_SQL_PIN&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;VOL_DN
&lt;span class=&quot;co0&quot;&gt;#SIGLEV_DET=NOISE&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_SLOPE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_OFFSET&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SIGLEV_BOGUS_THRESH=120&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TONE_SIGLEV_MAP=100,84,60,50,37,32,28,23,19,8&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_OPEN_THRESH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_CLOSE_THRESH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DEEMPHASIS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_TAIL_ELIM=300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;PREAMP&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;0.5&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PEAK_METER=1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_DEC_TYPE&lt;/span&gt;=INTERNAL
&lt;span class=&quot;re2&quot;&gt;DTMF_MUTING&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_HANGTIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_SERIAL&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ttyS0
&lt;span class=&quot;co0&quot;&gt;#DTMF_PTY=/tmp/rx1_dtmf&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DTMF_MAX_FWD_TWIST=8&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DTMF_MAX_REV_TWIST=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#1750_MUTING=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SEL5_DEC_TYPE=INTERNAL&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SEL5_TYPE=ZVEI1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#FQ=433475000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#MODULATION=FM&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#WBRX=WbRx1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WbRx1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TYPE=RtlUsb&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DEV_MATCH=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#HOST=localhost&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PORT=1234&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CENTER_FQ=435075000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#FQ_CORR=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#GAIN=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PEAK_METER=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SAMPLE_RATE=960000&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Tx1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Local
&lt;span class=&quot;re2&quot;&gt;AUDIO_DEV&lt;/span&gt;=alsa:plughw:&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUDIO_CHANNEL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;PTT_TYPE&lt;/span&gt;=Hidraw
&lt;span class=&quot;co0&quot;&gt;#PTT_PORT=/dev/ttyS0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PTT_PIN=HIDRAW&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;HID_DEVICE&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;hidraw0
&lt;span class=&quot;re2&quot;&gt;HID_PTT_PIN&lt;/span&gt;=GPIO3
&lt;span class=&quot;co0&quot;&gt;#SERIAL_SET_PINS=DTR!RTS&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#GPIO_PATH=/sys/class/gpio&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PTT_HANGTIME=1000&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TIMEOUT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TX_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CTCSS_FQ&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;77.0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CTCSS_LEVEL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;PREEMPHASIS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_TONE_LENGTH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_TONE_SPACING&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_DIGIT_PWR&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MASTER_GAIN&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;3.5&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;LocationInfo&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;APRS_SERVER_LIST&lt;/span&gt;=euro.aprs2.net:&lt;span class=&quot;nu0&quot;&gt;14580&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;STATUS_SERVER_LIST&lt;/span&gt;=aprs.echolink.org:&lt;span class=&quot;nu0&quot;&gt;5199&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LON_POSITION&lt;/span&gt;=1.25.30W
&lt;span class=&quot;re2&quot;&gt;LAT_POSITION&lt;/span&gt;=60.17.18N
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=EL-MB7AZE
&lt;span class=&quot;re2&quot;&gt;FREQUENCY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;430.050&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TX_POWER&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ANTENNA_GAIN&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ANTENNA_HEIGHT&lt;/span&gt;=1m
&lt;span class=&quot;re2&quot;&gt;ANTENNA_DIR&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PATH=WIDE1-1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;BEACON_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TONE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;77&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;COMMENT&lt;/span&gt;=Connected to UK Svx Reflector
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Macros&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;=EchoLink:&lt;span class=&quot;nu0&quot;&gt;9999&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;=EchoLink:&lt;span class=&quot;nu0&quot;&gt;973498&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;=EchoLink:&lt;span class=&quot;nu0&quot;&gt;662666&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;=:&lt;span class=&quot;nu0&quot;&gt;91235&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;=:&lt;span class=&quot;nu0&quot;&gt;9123561&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;=:&lt;span class=&quot;nu0&quot;&gt;910&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Main config file&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;main_config_file&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;152-6389&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;audio_levels&quot;&gt;Audio levels&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Audio levels&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;audio_levels&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;6390-6415&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;devcal&quot;&gt;Devcal&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Use the &lt;code&gt;devcal&lt;/code&gt; program to set RX and TX audio levels.
&lt;/p&gt;

&lt;p&gt;
This allows adjustment of &lt;code&gt;alsamixer&lt;/code&gt; settings and then for fine tuning adjustment of &lt;code&gt;PRE-AMP&lt;/code&gt;  (for &lt;code&gt;RX&lt;/code&gt;) and &lt;code&gt;MASTER GAIN&lt;/code&gt; (for &lt;code&gt;TX&lt;/code&gt;) config options to set the correct audio level INPUT on &lt;code&gt;RX&lt;/code&gt; and deviation on &lt;code&gt;TX&lt;/code&gt;. 
&lt;/p&gt;

&lt;p&gt;
Once the correct &lt;code&gt;PRE-AMP&lt;/code&gt; or &lt;code&gt;MASTER GAIN&lt;/code&gt; values have been determined in &lt;code&gt;DEVCAL&lt;/code&gt; they are added to the relevant sections in &lt;code&gt;svxlink.conf&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
To use &lt;code&gt;DEVCAL&lt;/code&gt; first &lt;code&gt;sudo killall svxlink&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;for_receive_audio_input&quot;&gt;For Receive audio input:&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; devcal &lt;span class=&quot;re5&quot;&gt;-r&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-m&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3000&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-d&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3000&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink.conf Rx1&lt;/pre&gt;

&lt;p&gt;
Inject a signal to the radio @ ±3kHz deviation Adjust audio input level via 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; radio volume control&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; alsamixer Mic Capture level&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; devcal +/- to adjust PRE-AMP setting&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
until the displayed deviation agrees with the input signal&amp;#039;s deviation.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Q&lt;/strong&gt;uit &lt;code&gt;devcal&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Transfer the displayed &lt;code&gt;PRE-AMP&lt;/code&gt; value to the conf file.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;for_transmit_audio_output&quot;&gt;For Transmit audio output&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Monitor TX deviation
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; devcal &lt;span class=&quot;re5&quot;&gt;-t&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-m&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3000&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-d&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3000&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink.conf Tx1&lt;/pre&gt;

&lt;p&gt;
Toggle TX with &lt;code&gt;T&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Adjust 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Alsamixer output&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; devcal +/- &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
to achieve ±3kHz TX deviation.
&lt;/p&gt;

&lt;p&gt;
Turn off TX with &lt;code&gt;T&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Q&lt;/strong&gt;uit &lt;code&gt;devcal&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Copy the displayed &lt;code&gt;MASTER GAIN&lt;/code&gt; value to the conf file.
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; alsactl store&lt;/pre&gt;

&lt;p&gt;
to save current mixer levels.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Devcal&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;devcal&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;6416-7816&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;to_prevent_echolink_incoming_connections_while_a_talkgroup_is_active&quot;&gt;To prevent Echolink incoming connections while a Talkgroup is active&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Uncomment :
&lt;/p&gt;
&lt;pre class=&quot;code tcl&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tg_selected &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;new_tg old_tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;### tg_selected #$new_tg (old #$old_tg)&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  # Reject incoming Echolink connections while a talkgroup is active&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;= &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    setConfigValue &lt;span class=&quot;st0&quot;&gt;&amp;quot;ModuleEchoLink&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;REJECT_INCOMING&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;^.*$&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    setConfigValue &lt;span class=&quot;st0&quot;&gt;&amp;quot;ModuleEchoLink&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;REJECT_INCOMING&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;^$&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
in &lt;code&gt;/usr/local/share/svxlink/events.d/local/ReflectorLogic.tcl&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;To prevent Echolink incoming connections while a Talkgroup is active&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;to_prevent_echolink_incoming_connections_while_a_talkgroup_is_active&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;7817-8313&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;svxinstall_eventsd_local&quot;&gt;&amp;lt;svxinstall&amp;gt;/events.d/local/&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Here are the 3 files containing tweaks to the standard behaviour.
&lt;/p&gt;

&lt;p&gt;
Editing the original files (in &lt;code&gt;events.d/&lt;/code&gt;) would work, but would get overwritten if the software is upgraded/re-installed. Putting local copies in &lt;code&gt;events.d/local&lt;/code&gt; means the changes survive upgrades etc.
&lt;/p&gt;

&lt;p&gt;
The actual path is:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;/usr/local/share/svxlink/events.d/local/&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ll try to document what is different once I refresh my memory.
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_a722169c895501e08bbb51c5c0f8c410_2&quot;&gt;ReflectorLogic.tcl &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_a722169c895501e08bbb51c5c0f8c410_2&quot;&gt;&lt;pre class=&quot;code tcl&quot;&gt;&lt;span class=&quot;co1&quot;&gt;###############################################################################&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# ReflectorLogic event handlers&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;###############################################################################&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# This is the namespace in which all functions below will exist. The name&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# must match the corresponding section &amp;quot;[ReflectorLogic]&amp;quot; in the configuration&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# file. The name may be changed but it must be changed in both places.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;eval&lt;/span&gt; ReflectorLogic &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
# The currently selected TG. Variable set from application.&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; selected_tg &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
# The previously selected TG. Variable set from application.&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; previous_tg &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
# Timestamp for previous TG announcement&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_announce_time &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
# The previously announced TG&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_announce_tg &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
# The minimum time between announcements of the same TG.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Change through ANNOUNCE_REMOTE_MIN_INTERVAL config variable.&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; announce_remote_min_interval &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
# This variable will be set to 1 if the QSY pending feature (&amp;quot;QSY on squelch&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# activity&amp;quot;) is active. See configuration variable QSY_PENDING_TIMEOUT.&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; qsy_pending_active &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Checking to see if this is the correct logic core&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$logic_name&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;= &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;namespace&lt;/span&gt; tail &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;namespace&lt;/span&gt; current&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an unknown command is received&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   cmd - The command string&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; unknown_command &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;cmd&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  Logic::&lt;span class=&quot;me1&quot;&gt;unknown_command&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$cmd&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a received command fails&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; command_failed &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;cmd&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  Logic::&lt;span class=&quot;me1&quot;&gt;command_failed&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$cmd&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when manual TG announcement is triggered&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; report_tg_status &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; selected_tg
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; previous_tg
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_announce_time
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_announce_tg
  playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$selected_tg&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; prev_announce_time &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;clock&lt;/span&gt; seconds&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; prev_announce_tg &lt;span class=&quot;re0&quot;&gt;$selected_tg&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;talk_group&amp;quot;&lt;/span&gt;
    spellNumber &lt;span class=&quot;re0&quot;&gt;$selected_tg&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;previous&amp;quot;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;talk_group&amp;quot;&lt;/span&gt;
    spellNumber &lt;span class=&quot;re0&quot;&gt;$previous_tg&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a TG has been selected&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# This function is called immediately when a change in talkgroup selection&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# occurs. In constrast, the other more specific talkgroup selection event&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# functions below is called with a delay in order to make announcement ordering&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# more logical.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   new_tg -- The talk group that has been activated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   old_tg -- The talk group that was active&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tg_selected &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;new_tg old_tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;### tg_selected #$new_tg (old #$old_tg)&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  # Reject incoming Echolink connections while a talkgroup is active&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;= &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    setConfigValue &lt;span class=&quot;st0&quot;&gt;&amp;quot;ModuleEchoLink&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;REJECT_INCOMING&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;^.*$&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    setConfigValue &lt;span class=&quot;st0&quot;&gt;&amp;quot;ModuleEchoLink&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;REJECT_INCOMING&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;^$&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a TG has been selected due to local activity&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   new_tg -- The talk group that has been activated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   old_tg -- The talk group that was active&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tg_local_activation &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;new_tg old_tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_announce_time
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_announce_tg
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; selected_tg
&amp;nbsp;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;### tg_local_activation&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;= &lt;span class=&quot;re0&quot;&gt;$old_tg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; prev_announce_time &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;clock&lt;/span&gt; seconds&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; prev_announce_tg &lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;talk_group&amp;quot;&lt;/span&gt;
    spellNumber &lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a TG has been selected due to remote activity&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   new_tg -- The talk group that has been activated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   old_tg -- The talk group that was active&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tg_remote_activation &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;new_tg old_tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_announce_time
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_announce_tg
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; announce_remote_min_interval
&amp;nbsp;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;### tg_remote_activation&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; now &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;clock&lt;/span&gt; seconds&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt; == &lt;span class=&quot;re0&quot;&gt;$prev_announce_tg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; \
      &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$now&lt;/span&gt; - &lt;span class=&quot;re0&quot;&gt;$prev_announce_time&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$announce_remote_min_interval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;= &lt;span class=&quot;re0&quot;&gt;$old_tg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; prev_announce_time &lt;span class=&quot;re0&quot;&gt;$now&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; prev_announce_tg &lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;talk_group&amp;quot;&lt;/span&gt;
    spellNumber &lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a TG has been selected due to remote activity on a prioritized&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# monitored talk group while a lower prio talk group is selected&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   new_tg -- The talk group that has been activated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   old_tg -- The talk group that was active&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tg_remote_prio_activation &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;new_tg old_tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  tg_remote_activation &lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$old_tg&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a TG has been selected by DTMF command&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   new_tg -- The talk group that has been activated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   old_tg -- The talk group that was active&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tg_command_activation &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;new_tg old_tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_announce_time
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_announce_tg
&amp;nbsp;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;### tg_command_activation&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; prev_announce_time &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;clock&lt;/span&gt; seconds&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; prev_announce_tg &lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;talk_group&amp;quot;&lt;/span&gt;
  spellNumber &lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a TG has been selected due to DEFAULT_TG configuration&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   new_tg -- The talk group that has been activated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   old_tg -- The talk group that was active&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tg_default_activation &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;new_tg old_tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #variable prev_announce_time&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #variable prev_announce_tg&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #variable selected_tg&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;### tg_default_activation&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #if {$new_tg != $old_tg} {&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #  set prev_announce_time [clock seconds]&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #  set prev_announce_tg $new_tg&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #  playSilence 100&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #  playMsg &amp;quot;Core&amp;quot; &amp;quot;talk_group&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  # spellNumber $new_tg&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #}&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a TG QSY request have been acted upon&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   new_tg -- The talk group that has been activated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   old_tg -- The talk group that was active&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tg_qsy &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;new_tg old_tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_announce_time
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_announce_tg
&amp;nbsp;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;### tg_qsy&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; prev_announce_time &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;clock&lt;/span&gt; seconds&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; prev_announce_tg &lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qsy&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #playMsg &amp;quot;Core&amp;quot; &amp;quot;talk_group&amp;quot;&lt;/span&gt;
  spellNumber &lt;span class=&quot;re0&quot;&gt;$new_tg&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a QSY is followed due to squelch open (see QSY_PENDING_TIMEOUT)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   tg -- The talk group that has been activated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tg_qsy_on_sql &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qsy&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a TG QSY request fails&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# A TG QSY may fail for primarily two reasons, either no talk group is&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# currently active or there is no connection to the reflector server.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tg_qsy_failed &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;### tg_qsy_failed&amp;quot;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qsy&amp;quot;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;operation_failed&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a TG QSY request is pending&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# tg -- The talk group requested in the QSY&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tg_qsy_pending &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qsy&amp;quot;&lt;/span&gt;
  spellNumber &lt;span class=&quot;re0&quot;&gt;$tg&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;pending&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a TG QSY request is ignored&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# tg -- The talk group requested in the QSY&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tg_qsy_ignored &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; qsy_pending_active
  playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$qsy_pending_active&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qsy&amp;quot;&lt;/span&gt;
    spellNumber &lt;span class=&quot;re0&quot;&gt;$tg&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ignored&amp;quot;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;
  playTone &lt;span class=&quot;nu0&quot;&gt;880&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
  playTone &lt;span class=&quot;nu0&quot;&gt;659&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
  playTone &lt;span class=&quot;nu0&quot;&gt;440&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a TG selection has timed out&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   new_tg -- Always 0&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   old_tg -- The talk group that was active&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tg_selection_timeout &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;new_tg old_tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;### tg_selection_timeout&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$old_tg&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;= &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
    playTone &lt;span class=&quot;nu0&quot;&gt;880&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
    playTone &lt;span class=&quot;nu0&quot;&gt;659&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
    playTone &lt;span class=&quot;nu0&quot;&gt;440&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#  } else {&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
#    playSilence 50&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#    playTone 440 200 150&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#    playSilence 50&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed on talker start&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   tg        -- The talk group&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   callsign  -- The callsign of the talker node&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; talker_start &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;tg callsign&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #puts &amp;quot;### Talker DID start on TG #$tg: $callsign&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed on talker stop&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   tg        -- The talk group&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   callsign  -- The callsign of the talker node&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; talker_stop &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;tg callsign&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; selected_tg
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; ::&lt;span class=&quot;me1&quot;&gt;Logic&lt;/span&gt;::&lt;span class=&quot;me1&quot;&gt;CFG_CALLSIGN&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #puts &amp;quot;### Talker DID stop on TG #$tg: $callsign&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$tg&lt;/span&gt; == &lt;span class=&quot;re0&quot;&gt;$selected_tg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$callsign&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;= &lt;span class=&quot;sy0&quot;&gt;$&lt;/span&gt;::&lt;span class=&quot;me1&quot;&gt;Logic&lt;/span&gt;::&lt;span class=&quot;me1&quot;&gt;CFG_CALLSIGN&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
    playTone &lt;span class=&quot;nu0&quot;&gt;440&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
    playTone &lt;span class=&quot;nu0&quot;&gt;659&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
    playTone &lt;span class=&quot;nu0&quot;&gt;880&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# A talk group was added for temporary monitoring&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   tg -- The added talk group&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tmp_monitor_add &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;### tmp_monitor_add: $tg&amp;quot;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Default&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;activating&amp;quot;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;monitor&amp;quot;&lt;/span&gt;
  spellNumber &lt;span class=&quot;re0&quot;&gt;$tg&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# A talk group was removed from temporary monitoring&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   tg -- The removed talk group&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; tmp_monitor_remove &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;### tmp_monitor_remove: $tg&amp;quot;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Default&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;deactivating&amp;quot;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;monitor&amp;quot;&lt;/span&gt;
  spellNumber &lt;span class=&quot;re0&quot;&gt;$tg&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists ::&lt;span class=&quot;me1&quot;&gt;Logic&lt;/span&gt;::&lt;span class=&quot;me1&quot;&gt;CFG_ANNOUNCE_REMOTE_MIN_INTERVAL&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; announce_remote_min_interval &lt;span class=&quot;sy0&quot;&gt;$&lt;/span&gt;::&lt;span class=&quot;me1&quot;&gt;Logic&lt;/span&gt;::&lt;span class=&quot;me1&quot;&gt;CFG_ANNOUNCE_REMOTE_MIN_INTERVAL&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists ::&lt;span class=&quot;me1&quot;&gt;Logic&lt;/span&gt;::&lt;span class=&quot;me1&quot;&gt;CFG_QSY_PENDING_TIMEOUT&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;$&lt;/span&gt;::&lt;span class=&quot;me1&quot;&gt;Logic&lt;/span&gt;::&lt;span class=&quot;me1&quot;&gt;CFG_QSY_PENDING_TIMEOUT&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; qsy_pending_active &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
# end of namespace&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# This file has not been truncated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_a722169c895501e08bbb51c5c0f8c410_3&quot;&gt;Logic.tcl &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_a722169c895501e08bbb51c5c0f8c410_3&quot;&gt;&lt;pre class=&quot;code tcl&quot;&gt;&lt;span class=&quot;co1&quot;&gt;###############################################################################&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Generic Logic event handlers&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;###############################################################################&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# This is the namespace in which all functions and variables below will exist.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;eval&lt;/span&gt; Logic &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# A variable used to store a timestamp for the last identification.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_ident &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# A constant that indicates the minimum time in seconds to wait between two&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# identifications. Manual and long identifications is not affected.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; min_time_between_ident &lt;span class=&quot;nu0&quot;&gt;120&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Short and long identification intervals. They are setup from config&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# variables below.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; short_ident_interval &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; long_ident_interval &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; short_voice_id_enable  &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; short_cw_id_enable     &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; short_announce_enable  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; short_announce_file    &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; long_voice_id_enable   &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; long_cw_id_enable      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; long_announce_enable   &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; long_announce_file     &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# The ident_only_after_tx variable indicates if identification is only to&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# occur after the node has transmitted. The variable is setup below from the&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# configuration variable with the same name.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# The need_ident variable indicates if identification is needed.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; ident_only_after_tx &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; need_ident &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# List of functions that should be called periodically. Use the&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# addMinuteTickSubscriber and addSecondTickSubscriber functions to&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# add subscribers.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; minute_tick_subscribers &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; second_tick_subscribers &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Contains the ID of the last receiver that indicated squelch activity&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; sql_rx_id &lt;span class=&quot;st0&quot;&gt;&amp;quot;?&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the SvxLink software is started&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; startup &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #playMsg &amp;quot;Core&amp;quot; &amp;quot;online&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #send_short_ident&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a specified module could not be found&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   module_id - The numeric ID of the module&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; no_such_module &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;module_id&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;no_such_module&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playNumber &lt;span class=&quot;re0&quot;&gt;$module_id&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a manual identification is initiated with the * DTMF code&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; manual_identification &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; mycall&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; report_ctcss&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; active_module&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; loaded_modules&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; CFG_TYPE&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_ident&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; epoch &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;clock&lt;/span&gt; seconds&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; hour &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;clock&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;format&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$epoch&lt;/span&gt; -&lt;span class=&quot;kw2&quot;&gt;format&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%k&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;regexp&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;?&lt;/span&gt;\d&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;clock&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;format&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$epoch&lt;/span&gt; -&lt;span class=&quot;kw2&quot;&gt;format&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%M&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; -&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; minute&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; prev_ident &lt;span class=&quot;re0&quot;&gt;$epoch&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;online&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  spellWord &lt;span class=&quot;re0&quot;&gt;$mycall&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$CFG_TYPE&lt;/span&gt; == &lt;span class=&quot;st0&quot;&gt;&amp;quot;Repeater&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;repeater&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;250&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;the_time_is&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playTime &lt;span class=&quot;re0&quot;&gt;$hour&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$minute&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;250&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$report_ctcss&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;pl_is&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playFrequency &lt;span class=&quot;re0&quot;&gt;$report_ctcss&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$active_module&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;= &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;active_module&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playMsg &lt;span class=&quot;re0&quot;&gt;$active_module&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;250&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; func &lt;span class=&quot;st0&quot;&gt;&amp;quot;::&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;append&lt;/span&gt; func &lt;span class=&quot;re0&quot;&gt;$active_module&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;::status_report&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;[info procs $func]&amp;quot;&lt;/span&gt; ne &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;re0&quot;&gt;$func&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; module &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;split&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$loaded_modules&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; func &lt;span class=&quot;st0&quot;&gt;&amp;quot;::&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;append&lt;/span&gt; func &lt;span class=&quot;re0&quot;&gt;$module&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;::status_report&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;[info procs $func]&amp;quot;&lt;/span&gt; ne &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;span class=&quot;re0&quot;&gt;$func&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #playMsg &amp;quot;Default&amp;quot; &amp;quot;press_0_for_help&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #playSilence 250;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a short identification should be sent&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   hour    - The hour on which this identification occur&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   minute  - The minute on which this identification occur&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; send_short_ident &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;hour -&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;minute -&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; mycall&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; CFG_TYPE&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; short_announce_file
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; short_announce_enable
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; short_voice_id_enable
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; short_cw_id_enable
&lt;span class=&quot;co1&quot;&gt;
  # Play voice id if enabled&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$short_voice_id_enable&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Playing short voice ID&amp;quot;&lt;/span&gt;
    spellWord &lt;span class=&quot;re0&quot;&gt;$mycall&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$CFG_TYPE&lt;/span&gt; == &lt;span class=&quot;st0&quot;&gt;&amp;quot;Repeater&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;repeater&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
  # Play announcement file if enabled&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$short_announce_enable&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Playing short announce&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;file&lt;/span&gt; exist &lt;span class=&quot;st0&quot;&gt;&amp;quot;$short_announce_file&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      playFile &lt;span class=&quot;st0&quot;&gt;&amp;quot;$short_announce_file&amp;quot;&lt;/span&gt;
      playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
  # Play CW id if enabled&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$short_cw_id_enable&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Playing short CW ID&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$CFG_TYPE&lt;/span&gt; == &lt;span class=&quot;st0&quot;&gt;&amp;quot;Repeater&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; call &lt;span class=&quot;st0&quot;&gt;&amp;quot;$mycall/R&amp;quot;&lt;/span&gt;
      CW::&lt;span class=&quot;me1&quot;&gt;play&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      CW::&lt;span class=&quot;me1&quot;&gt;play&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$mycall&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a long identification (e.g. hourly) should be sent&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   hour    - The hour on which this identification occur&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   minute  - The minute on which this identification occur&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; send_long_ident &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;hour minute&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; mycall&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; loaded_modules&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; active_module&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; CFG_TYPE&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; long_announce_file
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; long_announce_enable
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; long_voice_id_enable
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; long_cw_id_enable
&lt;span class=&quot;co1&quot;&gt;
  # Play the voice ID if enabled&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$long_voice_id_enable&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Playing Long voice ID&amp;quot;&lt;/span&gt;
    spellWord &lt;span class=&quot;re0&quot;&gt;$mycall&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$CFG_TYPE&lt;/span&gt; == &lt;span class=&quot;st0&quot;&gt;&amp;quot;Repeater&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;repeater&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;the_time_is&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playTime &lt;span class=&quot;re0&quot;&gt;$hour&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$minute&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
    # Call the &amp;quot;status_report&amp;quot; function in all modules if no module is active&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$active_module&lt;/span&gt; == &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; module &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;split&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$loaded_modules&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; func &lt;span class=&quot;st0&quot;&gt;&amp;quot;::&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;append&lt;/span&gt; func &lt;span class=&quot;re0&quot;&gt;$module&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;::status_report&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;[info procs $func]&amp;quot;&lt;/span&gt; ne &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
          &lt;span class=&quot;re0&quot;&gt;$func&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
  # Play announcement file if enabled&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$long_announce_enable&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Playing long announce&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;file&lt;/span&gt; exist &lt;span class=&quot;st0&quot;&gt;&amp;quot;$long_announce_file&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      playFile &lt;span class=&quot;st0&quot;&gt;&amp;quot;$long_announce_file&amp;quot;&lt;/span&gt;
      playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
  # Play CW id if enabled&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$long_cw_id_enable&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Playing long CW ID&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$CFG_TYPE&lt;/span&gt; == &lt;span class=&quot;st0&quot;&gt;&amp;quot;Repeater&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; call &lt;span class=&quot;st0&quot;&gt;&amp;quot;$mycall/R&amp;quot;&lt;/span&gt;
      CW::&lt;span class=&quot;me1&quot;&gt;play&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      CW::&lt;span class=&quot;me1&quot;&gt;play&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$mycall&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the squelch have just closed and the RGR_SOUND_DELAY timer has&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# expired.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; send_rgr_sound &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; sql_rx_id
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$sql_rx_id&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;= &lt;span class=&quot;st0&quot;&gt;&amp;quot;?&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
    # 150 CPM, 1000 Hz, -4 dBFS&lt;/span&gt;
    CW::&lt;span class=&quot;me1&quot;&gt;play&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$sql_rx_id&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;150&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; sql_rx_id &lt;span class=&quot;st0&quot;&gt;&amp;quot;?&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playTone &lt;span class=&quot;nu0&quot;&gt;440&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an empty macro command (i.e. D#) has been entered.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; macro_empty &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;operation_failed&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an entered macro command could not be found&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; macro_not_found &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;operation_failed&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a macro syntax error occurs (configuration error).&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; macro_syntax_error &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;operation_failed&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the specified module in a macro command is not found&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# (configuration error).&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; macro_module_not_found &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;operation_failed&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the activation of the module specified in the macro command&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# failed.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; macro_module_activation_failed &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;operation_failed&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a macro command is executed that requires a module to&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# be activated but another module is already active.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; macro_another_active_module &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; active_module&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;operation_failed&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;active_module&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;re0&quot;&gt;$active_module&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an unknown DTMF command is entered&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   cmd - The command string&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; unknown_command &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;cmd&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  spellWord &lt;span class=&quot;re0&quot;&gt;$cmd&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;unknown_command&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an entered DTMF command failed&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   cmd - The command string&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; command_failed &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;cmd&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  spellWord &lt;span class=&quot;re0&quot;&gt;$cmd&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;operation_failed&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a link to another logic core is activated.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   name  - The name of the link&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; activating_link &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;string&lt;/span&gt; length &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;activating_link_to&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    spellWord &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a link to another logic core is deactivated.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   name  - The name of the link&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; deactivating_link &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;string&lt;/span&gt; length &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;deactivating_link_to&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    spellWord &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when trying to deactivate a link to another logic core but the&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# link is not currently active.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   name  - The name of the link&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; link_not_active &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;string&lt;/span&gt; length &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;link_not_active_to&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    spellWord &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when trying to activate a link to another logic core but the&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# link is already active.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   name  - The name of the link&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; link_already_active &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;name&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;string&lt;/span&gt; length &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;link_already_active_to&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    spellWord &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed each time the transmitter is turned on or off&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   is_on - Set to 1 if the transmitter is on or 0 if it&#039;s off&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; transmit &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;is_on&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #puts &amp;quot;Turning the transmitter $is_on&amp;quot;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_ident&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; need_ident&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$is_on&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;clock&lt;/span&gt; seconds&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; - &lt;span class=&quot;re0&quot;&gt;$prev_ident&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; need_ident &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed each time the squelch is opened or closed&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   rx_id   - The ID of the RX that the squelch opened/closed on&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   is_open - Set to 1 if the squelch is open or 0 if it&#039;s closed&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; squelch_open &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;rx_id is_open&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; sql_rx_id&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #puts &amp;quot;The squelch is $is_open on RX $rx_id&amp;quot;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; sql_rx_id &lt;span class=&quot;re0&quot;&gt;$rx_id&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a DTMF digit has been received&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   digit     - The detected DTMF digit&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   duration  - The duration, in milliseconds, of the digit&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Return 1 to hide the digit from further processing in SvxLink or&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# return 0 to make SvxLink continue processing as normal.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; dtmf_digit_received &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;digit duration&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #puts &amp;quot;DTMF digit \&amp;quot;$digit\&amp;quot; detected with duration $duration ms&amp;quot;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a DTMF command has been received&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   cmd - The command&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Return 1 to hide the command from further processing is SvxLink or&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# return 0 to make SvxLink continue processing as normal.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# This function can be used to implement your own custom commands or to disable&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# DTMF commands that you do not want users to execute.&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; dtmf_cmd_received &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;cmd&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #global active_module&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
  # Example: Ignore all commands starting with 3 in the EchoLink module.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #          Allow commands that have four or more digits.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #if {$active_module == &amp;quot;EchoLink&amp;quot;} {&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #  if {[string length $cmd] &amp;lt; 4 &amp;amp;&amp;amp; [string index $cmd 0] == &amp;quot;3&amp;quot;} {&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #    puts &amp;quot;Ignoring random connect command for module EchoLink: $cmd&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #    return 1&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #  }&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
  # Handle the &amp;quot;force core command&amp;quot; mode where a command is forced to be&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  # executed by the core command processor instead of by an active module.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  # The &amp;quot;force core command&amp;quot; mode is entered by prefixing a command by a star.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #if {$active_module != &amp;quot;&amp;quot; &amp;amp;&amp;amp; [string index $cmd 0] != &amp;quot;*&amp;quot;} {&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #  return 0&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #if {[string index $cmd 0] == &amp;quot;*&amp;quot;} {&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #  set cmd [string range $cmd 1 end]&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
  # Example: Custom command executed when DTMF 99 is received&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #if {$cmd == &amp;quot;99&amp;quot;} {&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #  puts &amp;quot;Executing external command&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #  playMsg &amp;quot;Core&amp;quot; &amp;quot;online&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #  exec ls &amp;amp;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #  return 1&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #}&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed once every whole minute. Don&#039;t put any code here directly&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Create a new function and add it to the timer tick subscriber list&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# by using the function addMinuteTickSubscriber.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; every_minute &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; minute_tick_subscribers&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #puts [clock format [clock seconds] -format &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;];&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; subscriber &lt;span class=&quot;re0&quot;&gt;$minute_tick_subscribers&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$subscriber&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed once every whole minute. Don&#039;t put any code here directly&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Create a new function and add it to the timer tick subscriber list&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# by using the function addSecondTickSubscriber.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; every_second &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; second_tick_subscribers&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #puts [clock format [clock seconds] -format &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;];&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; subscriber &lt;span class=&quot;re0&quot;&gt;$second_tick_subscribers&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$subscriber&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Deprecated: Use the addMinuteTickSubscriber function instead&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; addTimerTickSubscriber &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;func&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;*** WARNING: Calling deprecated TCL event handler addTimerTickSubcriber.&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;             Use addMinuteTickSubscriber instead&amp;quot;&lt;/span&gt;
  addMinuteTickSubscriber &lt;span class=&quot;re0&quot;&gt;$func&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Use this function to add a function to the list of functions that&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# should be executed once every whole minute. This is not an event&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# function but rather a management function.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; addMinuteTickSubscriber &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;func&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; minute_tick_subscribers&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;lappend&lt;/span&gt; minute_tick_subscribers &lt;span class=&quot;re0&quot;&gt;$func&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Use this function to add a function to the list of functions that&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# should be executed once every second. This is not an event&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# function but rather a management function.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; addSecondTickSubscriber &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;func&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; second_tick_subscribers&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;lappend&lt;/span&gt; second_tick_subscribers &lt;span class=&quot;re0&quot;&gt;$func&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Should be executed once every whole minute to check if it is time to&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# identify. Not exactly an event function. This function handle the&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# identification logic and call the send_short_ident or send_long_ident&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# functions when it is time to identify.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; checkPeriodicIdentify &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; prev_ident&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; short_ident_interval&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; long_ident_interval&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; min_time_between_ident&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; ident_only_after_tx&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; need_ident&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; logic_name&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$short_ident_interval&lt;/span&gt; == &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; now &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;clock&lt;/span&gt; seconds&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; hour &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;clock&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;format&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$now&lt;/span&gt; -&lt;span class=&quot;kw2&quot;&gt;format&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%k&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;regexp&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;?&lt;/span&gt;\d&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;clock&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;format&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$now&lt;/span&gt; -&lt;span class=&quot;kw2&quot;&gt;format&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%M&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; -&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; minute&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; short_ident_now \
      	    &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;expr&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$hour&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; + &lt;span class=&quot;re0&quot;&gt;$minute&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$short_ident_interval&lt;/span&gt; == &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; long_ident_now &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$long_ident_interval&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;= &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; long_ident_now \
      	    &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;expr&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$hour&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; + &lt;span class=&quot;re0&quot;&gt;$minute&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$long_ident_interval&lt;/span&gt; == &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$long_ident_now&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;$logic_name: Sending long identification...&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    send_long_ident &lt;span class=&quot;re0&quot;&gt;$hour&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$minute&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; prev_ident &lt;span class=&quot;re0&quot;&gt;$now&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; need_ident &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$now&lt;/span&gt; - &lt;span class=&quot;re0&quot;&gt;$prev_ident&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$min_time_between_ident&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$ident_only_after_tx&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$need_ident&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$short_ident_now&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;$logic_name: Sending short identification...&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      send_short_ident &lt;span class=&quot;re0&quot;&gt;$hour&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$minute&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; prev_ident &lt;span class=&quot;re0&quot;&gt;$now&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; need_ident &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the QSO recorder is being activated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; activating_qso_recorder &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;activating&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qso_recorder&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the QSO recorder is being deactivated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; deactivating_qso_recorder &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;deactivating&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qso_recorder&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when trying to deactivate the QSO recorder even though it&#039;s&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# not active&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; qso_recorder_not_active &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qso_recorder&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;not_active&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when trying to activate the QSO recorder even though it&#039;s&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# already active&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; qso_recorder_already_active &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qso_recorder&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;already_active&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the timeout kicks in to activate the QSO recorder&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; qso_recorder_timeout_activate &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;timeout&amp;quot;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;activating&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qso_recorder&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the timeout kicks in to deactivate the QSO recorder&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; qso_recorder_timeout_deactivate &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;timeout&amp;quot;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;deactivating&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;qso_recorder&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the user is requesting a language change&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; set_language &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;lang_code&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; logic_name&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;$logic_name: Setting language $lang_code (NOT IMPLEMENTED)&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the user requests a list of available languages&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; list_languages &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; logic_name&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;$logic_name: Available languages: (NOT IMPLEMENTED)&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the node is being brought online or offline&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; logic_online &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;online&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; mycall
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; CFG_TYPE
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$online&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;online&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    spellWord &lt;span class=&quot;re0&quot;&gt;$mycall&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$CFG_TYPE&lt;/span&gt; == &lt;span class=&quot;st0&quot;&gt;&amp;quot;Repeater&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;repeater&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a configuration variable is updated at runtime in the logic&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# core&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; config_updated &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;tag value&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #puts &amp;quot;Configuration variable updated: $tag=$value&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a DTMF command is received from another linked logic core&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   logic -- The name of the logic core&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   cmd   -- The received command&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; remote_cmd_received &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;logic cmd&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #puts &amp;quot;Remote command received from logic $logic: $cmd&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #playDtmf &amp;quot;$cmd&amp;quot; &amp;quot;500&amp;quot; &amp;quot;50&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a talkgroup is received from another linked logic core&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   logic -- The name of the logic core&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   tg    -- The received talkgroup&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; remote_received_tg_updated &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;logic tg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #puts &amp;quot;Remote TG received from logic $logic: $tg&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #if {$tg &amp;gt; 0} {&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #  playDtmf &amp;quot;1$tg&amp;quot; &amp;quot;500&amp;quot; &amp;quot;50&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #}&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
##############################################################################&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Main program&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;##############################################################################&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists CFG_SHORT_IDENT_INTERVAL&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$CFG_SHORT_IDENT_INTERVAL&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; short_ident_interval &lt;span class=&quot;re0&quot;&gt;$CFG_SHORT_IDENT_INTERVAL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists CFG_LONG_IDENT_INTERVAL&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$CFG_LONG_IDENT_INTERVAL&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; long_ident_interval &lt;span class=&quot;re0&quot;&gt;$CFG_LONG_IDENT_INTERVAL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$short_ident_interval&lt;/span&gt; == &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; short_ident_interval &lt;span class=&quot;re0&quot;&gt;$long_ident_interval&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists CFG_IDENT_ONLY_AFTER_TX&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$CFG_IDENT_ONLY_AFTER_TX&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; ident_only_after_tx &lt;span class=&quot;re0&quot;&gt;$CFG_IDENT_ONLY_AFTER_TX&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists CFG_SHORT_ANNOUNCE_ENABLE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; short_announce_enable &lt;span class=&quot;re0&quot;&gt;$CFG_SHORT_ANNOUNCE_ENABLE&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists CFG_SHORT_ANNOUNCE_FILE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; short_announce_file &lt;span class=&quot;re0&quot;&gt;$CFG_SHORT_ANNOUNCE_FILE&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists CFG_SHORT_VOICE_ID_ENABLE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; short_voice_id_enable &lt;span class=&quot;re0&quot;&gt;$CFG_SHORT_VOICE_ID_ENABLE&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists CFG_SHORT_CW_ID_ENABLE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; short_cw_id_enable &lt;span class=&quot;re0&quot;&gt;$CFG_SHORT_CW_ID_ENABLE&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists CFG_LONG_ANNOUNCE_ENABLE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; long_announce_enable &lt;span class=&quot;re0&quot;&gt;$CFG_LONG_ANNOUNCE_ENABLE&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists CFG_LONG_ANNOUNCE_FILE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; long_announce_file &lt;span class=&quot;re0&quot;&gt;$CFG_LONG_ANNOUNCE_FILE&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists CFG_LONG_VOICE_ID_ENABLE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; long_voice_id_enable &lt;span class=&quot;re0&quot;&gt;$CFG_LONG_VOICE_ID_ENABLE&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists CFG_LONG_CW_ID_ENABLE&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; long_cw_id_enable &lt;span class=&quot;re0&quot;&gt;$CFG_LONG_CW_ID_ENABLE&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
# end of namespace&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# This file has not been truncated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_a722169c895501e08bbb51c5c0f8c410_4&quot;&gt;EchoLink.tcl &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_a722169c895501e08bbb51c5c0f8c410_4&quot;&gt;&lt;pre class=&quot;code tcl&quot;&gt;&lt;span class=&quot;co1&quot;&gt;###############################################################################&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# EchoLink module event handlers&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;###############################################################################&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# This is the namespace in which all functions and variables below will exist.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# The name must match the configuration variable &amp;quot;NAME&amp;quot; in the&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# [ModuleEchoLink] section in the configuration file. The name may be changed&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# but it must be changed in both places.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;eval&lt;/span&gt; EchoLink &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Check if this module is loaded in the current logic core&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;info&lt;/span&gt; exists CFG_ID&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Extract the module name from the current namespace&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; module_name &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;namespace&lt;/span&gt; tail &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;namespace&lt;/span&gt; current&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# An &amp;quot;overloaded&amp;quot; playMsg that eliminates the need to write the module name&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# as the first argument.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; playMsg &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;msg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; module_name&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  ::&lt;span class=&quot;me1&quot;&gt;playMsg&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$module_name&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$msg&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# A convenience function for printing out information prefixed by the&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# module name&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; printInfo &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;msg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; module_name&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;$module_name: $msg&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# This variable is updated by the EchoLink module when a station connects or&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# disconnects. It contains the number of currently connected stations.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; num_connected_stations &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when this module is being activated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; activating_module &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; module_name&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  Module::&lt;span class=&quot;me1&quot;&gt;activating_module&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$module_name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when this module is being deactivated.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; deactivating_module &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; module_name&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  Module::&lt;span class=&quot;me1&quot;&gt;deactivating_module&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$module_name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the inactivity timeout for this module has expired.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; timeout &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; module_name&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  Module::&lt;span class=&quot;me1&quot;&gt;timeout&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$module_name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when playing of the help message for this module has been requested.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; play_help &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; module_name&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  Module::&lt;span class=&quot;me1&quot;&gt;play_help&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$module_name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Spell an EchoLink callsign&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; spellEchoLinkCallsign &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; langdir
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;regexp&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;^&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;\w+&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;-L&lt;span class=&quot;sy0&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt; ignored callsign&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    spellWord &lt;span class=&quot;re0&quot;&gt;$callsign&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;link&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;elseif&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;regexp&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;^&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;\w+&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;-R&lt;span class=&quot;sy0&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt; ignored callsign&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    spellWord &lt;span class=&quot;re0&quot;&gt;$callsign&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;repeater&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;elseif&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;regexp&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;^\&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.+&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;\&lt;span class=&quot;sy0&quot;&gt;*$&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt; ignored name&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;conference&amp;quot;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; lc_name &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;string&lt;/span&gt; tolower &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;file&lt;/span&gt; exists &lt;span class=&quot;st0&quot;&gt;&amp;quot;$langdir/EchoLink/conf-$lc_name.wav&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      playFile &lt;span class=&quot;st0&quot;&gt;&amp;quot;$langdir/EchoLink/conf-$lc_name.wav&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      spellEchoLinkCallsign &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    spellWord &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a request to list all connected stations is received.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# That is, someone press DTMF &amp;quot;1#&amp;quot; when the EchoLink module is active.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; list_connected_stations &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;connected_stations&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playNumber &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;llength&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$connected_stations&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;connected_stations&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;$connected_stations&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    spellEchoLinkCallsign &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;250&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when someone tries to setup an outgoing EchoLink connection but&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# the directory server is offline due to communications failure.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; directory_server_offline &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;directory_server_offline&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the limit for maximum number of QSOs has been reached and&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# an outgoing connection request is received.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; no_more_connections_allowed &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  # FIXME: Change the message to something that makes more sense...&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;link_busy&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a status report is requested. This usually happens at&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# manual identification when the user press DTMF &amp;quot;*&amp;quot;.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; status_report &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; num_connected_stations&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; module_name&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; active_module&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$active_module&lt;/span&gt; == &lt;span class=&quot;re0&quot;&gt;$module_name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playNumber &lt;span class=&quot;re0&quot;&gt;$num_connected_stations&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;connected_stations&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an EchoLink id cannot be found in an outgoing connect request.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; station_id_not_found &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;station_id&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playNumber &lt;span class=&quot;re0&quot;&gt;$station_id&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;not_found&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the lookup of an EchoLink callsign fail in an outgoing connect&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# request.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; lookup_failed &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;station_id&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;operation_failed&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a local user tries to connect to the local node.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; self_connect &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;operation_failed&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a local user tries to connect to a node that is already&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# connected.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; already_connected_to &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;already_connected_to&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  spellEchoLinkCallsign &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an internal error occurs.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; internal_error &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;operation_failed&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an outgoing connection has been requested.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; connecting_to &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;connecting_to&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  spellEchoLinkCallsign &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an EchoLink connection has been terminated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; disconnected &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  spellEchoLinkCallsign &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;disconnected&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an incoming EchoLink connection has been accepted.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; remote_connected &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;connected&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  spellEchoLinkCallsign &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an outgoing connection has been established.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   call - The callsign of the remote station&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; connected &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #puts &amp;quot;Outgoing Echolink connection to $call established&amp;quot;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;connected&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the list of connected remote EchoLink clients changes&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   client_list - List of connected clients&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; client_list_changed &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;client_list&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #foreach {call} $client_list {&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #  puts $call&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #}&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the EchoLink connection has been idle for too long. The&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# connection will be terminated.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; link_inactivity_timeout &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;timeout&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a too short connect by callsign command is received&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; cbc_too_short_cmd &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;cmd&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  spellWord &lt;span class=&quot;re0&quot;&gt;$cmd&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;operation_failed&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the connect by callsign function cannot find a match&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; cbc_no_match &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;code&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playNumber &lt;span class=&quot;re0&quot;&gt;$code&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;no_match&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the connect by callsign list has been retrieved&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; cbc_list &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call_list&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;choose_station&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; idx &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$call_list&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;incr&lt;/span&gt; idx&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playNumber &lt;span class=&quot;re0&quot;&gt;$idx&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    spellEchoLinkCallsign &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the connect by callsign function is manually aborted&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; cbc_aborted &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;aborted&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an out of range index is entered in the connect by callsign&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# list&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; cbc_index_out_of_range &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;idx&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playNumber &lt;span class=&quot;re0&quot;&gt;$idx&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;idx_out_of_range&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when there are more than nine matches in the connect by&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# callsign function&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; cbc_too_many_matches &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;too_many_matches&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when no station have been chosen in 60 seconds in the connect&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# by callsign function&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; cbc_timeout &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;aborted&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the disconnect by callsign list has been retrieved&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; dbc_list &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call_list&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;disconnect_by_callsign&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;choose_station&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; idx &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$call_list&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;incr&lt;/span&gt; idx&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playNumber &lt;span class=&quot;re0&quot;&gt;$idx&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    spellEchoLinkCallsign &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the disconnect by callsign function is manually aborted&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; dbc_aborted &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;disconnect_by_callsign&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;aborted&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an out of range index is entered in the disconnect by callsign&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# list&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; dbc_index_out_of_range &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;idx&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playNumber &lt;span class=&quot;re0&quot;&gt;$idx&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;idx_out_of_range&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when no station have been chosen in 60 seconds in the disconnect&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# by callsign function&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; dbc_timeout &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;disconnect_by_callsign&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;timeout&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a local user enter the DTMF code for playing back the&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# local node ID.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; play_node_id &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;my_node_id&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;node_id_is&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$my_node_id&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;= &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playNumber &lt;span class=&quot;re0&quot;&gt;$my_node_id&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;unknown&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an entered command failed or have bad syntax.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; command_failed &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;cmd&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  spellWord &lt;span class=&quot;re0&quot;&gt;$cmd&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;operation_failed&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an unrecognized command has been received.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; unknown_command &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;cmd&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  spellWord &lt;span class=&quot;re0&quot;&gt;$cmd&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;unknown_command&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the listen only feature is activated or deactivated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   status    - The current status of the feature (0=deactivated, 1=activated)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   activate  - The requested new status of the feature&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#               (0=deactivate, 1=activate)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; listen_only &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;status activate&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; module_name&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$status&lt;/span&gt; == &lt;span class=&quot;re0&quot;&gt;$activate&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;listen_only&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playMsg &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;expr&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$status&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;already_active&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;not_active&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;$module_name: [expr {$activate ? &amp;quot;&lt;/span&gt;Activating&lt;span class=&quot;st0&quot;&gt;&amp;quot; : &amp;quot;&lt;/span&gt;Deactivating&lt;span class=&quot;st0&quot;&gt;&amp;quot;}]&lt;span class=&quot;es0&quot;&gt;\&lt;/span&gt;
          listen only mode.&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playMsg &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;expr&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$activate&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;activating&amp;quot;&lt;/span&gt; : &lt;span class=&quot;st0&quot;&gt;&amp;quot;deactivating&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;listen_only&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an outgoing connection is rejected. This can happen if&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# REJECT_OUTGOING and/or ACCEPT_OUTGOING has been setup.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; reject_outgoing_connection &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  spellEchoLinkCallsign &lt;span class=&quot;re0&quot;&gt;$call&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;reject_connection&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a transmission from an EchoLink station is starting&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# or stopping&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   rx   - 1 if receiving or 0 if not&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   call - The callsign of the remote station&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; is_receiving &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;rx call&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$rx&lt;/span&gt; == &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playTone &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a chat message is received from a remote station&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   msg -- The message text&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# WARNING: This is a slightly dangerous function since unexepected input&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# may open up a security flaw. Make sure that the message string is handled&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# as unknown data that can contain anything. Check it thoroughly before&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# using it. Do not run SvxLink as user root.&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; chat_received &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;msg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #puts $msg&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an info message is received from a remote station&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   call -- The callsign of the sending station&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   msg  -- The message text&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# WARNING: This is a slightly dangerous function since unexepected input&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# may open up a security flaw. Make sure that the message string is handled&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# as unknown data that can contain anything. Check it thoroughly before&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# using it. Do not run SvxLink as user root.&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; info_received &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call msg&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #puts &amp;quot;$call: $msg&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a configuration variable is updated at runtime&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; config_updated &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;tag value&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #puts &amp;quot;Configuration variable updated: $tag=$value&amp;quot;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#-----------------------------------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# The events below are for remote EchoLink announcements. Sounds are not&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# played over the local transmitter but are sent to the remote station.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#-----------------------------------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an incoming connection is accepted&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; remote_greeting &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;call&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
#  playSilence 1000;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
#  playMsg &amp;quot;greeting&amp;quot;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when an incoming connection is rejected&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; reject_remote_connection &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;perm&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$perm&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;reject_connection&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;reject_connection&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;please_try_again_later&amp;quot;&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the inactivity timer times out&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; remote_timeout &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;timeout&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  playSilence &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when the squelch state changes&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; squelch_open &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;is_open&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  # The listen_only_active and CFG_REMOTE_RGR_SOUND global variables are set by&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  # the C++ code&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; listen_only_active
  &lt;span class=&quot;kw1&quot;&gt;variable&lt;/span&gt; CFG_REMOTE_RGR_SOUND
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$CFG_REMOTE_RGR_SOUND&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$is_open&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$listen_only_active&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    playSilence &lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;
    playTone &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
&amp;nbsp;
# end of namespace&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# This file has not been truncated&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
 &lt;em&gt;&lt;a href=&quot;mailto:&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#64;&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#46;&amp;#112;&amp;#108;&amp;#117;&amp;#115;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#64;&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#46;&amp;#112;&amp;#108;&amp;#117;&amp;#115;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;John Pumford-Green&lt;/a&gt; Tue May  3 20:58:10 2022&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Page Updated : 04/06/26 07:39 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:svxlink&amp;amp;do=showtag&amp;amp;tag=svxlink&quot; class=&quot;wikilink1&quot; title=&quot;tag:svxlink&quot; rel=&quot;tag&quot;&gt;svxlink&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:mb7aze&amp;amp;do=showtag&amp;amp;tag=mb7aze&quot; class=&quot;wikilink1&quot; title=&quot;tag:mb7aze&quot; rel=&quot;tag&quot;&gt;mb7aze&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;lt;svxinstall&amp;gt;\/events.d\/local\/&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;svxinstall_eventsd_local&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;8314-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>svxlink hotspot</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:svx</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:start&quot; data-wiki-id=&quot;public:radio:topics:svxlink:start&quot;&gt;SVXLink&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;svxlink_hotspot&quot;&gt;svxlink hotspot&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;svxlink hotspot&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;svxlink_hotspot&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;11-40&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;hardware&quot;&gt;Hardware&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;table sectionedit3&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Platform&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Raspberry Pi&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Software&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;SVXLink&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Interface&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;CM108 soundcard&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Radio&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;IC-2E&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;63-147&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Hardware&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hardware&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;41-148&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;background&quot;&gt;Background&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Remote/portable &lt;em&gt;personal&lt;/em&gt; node. 
&lt;/p&gt;

&lt;p&gt;
Similar setup to &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:aze&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:aze&quot; data-wiki-id=&quot;public:radio:topics:svxlink:aze&quot;&gt;MB7AZE&lt;/a&gt; but without the connection to &lt;code&gt;Echolink&lt;/code&gt; and monitoring fewer TalkGroups. I use TG 8 as a 
testing ground to keep my traffic off the rest of the system.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;UPDATE&lt;/strong&gt; — &lt;em&gt;John Pumford-Green 03/06/22 17:57&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Making it into a mobile hotspot/echolink node/SVXreflector/parrot….
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:svx_mobile&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:svx_mobile&quot; data-wiki-id=&quot;public:radio:topics:svxlink:svx_mobile&quot;&gt;Svx Mobile&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Background&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;background&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;149-538&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;networking&quot;&gt;Networking&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Usual method of deployment is to use a small &lt;em&gt;MiFi 4G router&lt;/em&gt; as an access point to let the Raspberry Pi reach the internet. 
When this MiFi router is in use the node is on an inaccessible network and I can&amp;#039;t reach it to make changes or shut it down.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Networking&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;networking&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;539-816&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;the_answer_is_ssh_tunnels&quot;&gt;The answer is SSH Tunnels&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I use a “Remote SSH Tunnel” to get access to it from my home LAN.
&lt;/p&gt;

&lt;p&gt;
The idea is that the remote node makes an outgoing SSH connection, to a machine on my LAN. I have an open port in the router forwarded to an internal machine for SSH access when I&amp;#039;m away from home. This is straightforward, and the remote Pi can &lt;em&gt;easily&lt;/em&gt; create a SSH session on to my PC in the shack.
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;ssh -p xxxxx my.external.host.name&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Along with this &lt;em&gt;incoming&lt;/em&gt; SSH connection from the remote node is also a request to set up a &lt;em&gt;“Remote Tunnel”&lt;/em&gt; which makes the internal Shack PC  set up a &lt;em&gt;listening SSH port&lt;/em&gt;. After this is done, any connection to this new listening port will be sent &lt;em&gt;backwards&lt;/em&gt; to the &lt;em class=&quot;u&quot;&gt;remote node&lt;/em&gt;, &lt;strong&gt;&lt;em&gt;tunnelling within&lt;/em&gt;&lt;/strong&gt; the existing SSH connection. 
&lt;/p&gt;

&lt;p&gt;
This &lt;em&gt;tunnel&lt;/em&gt; will now accept incoming connections from  machines &lt;em&gt;inside&lt;/em&gt; my LAN and &lt;em class=&quot;u&quot;&gt;forward them to the remote node&lt;/em&gt;. I can now effectively SSH to the remote SVXLink node as if it were on my LAN in the shack.
&lt;/p&gt;

&lt;p&gt;
The magic is all done in SSH, but to make it more robust I use a package called &lt;code&gt;autossh&lt;/code&gt; which is a wrapper around &lt;code&gt;SSH&lt;/code&gt; that monitors for loss of the tunnel connection and initiates a new connection automatically if it should fail for any reason.
&lt;/p&gt;

&lt;p&gt;
Here is the script that fires it all off:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;tunnel.sh&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&amp;nbsp;
autossh &lt;span class=&quot;re5&quot;&gt;-M&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;20000&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-N&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-T&lt;/span&gt; gm4slv_tunnel&lt;/pre&gt;

&lt;p&gt;
Simple enough, but effective.
&lt;/p&gt;

&lt;p&gt;
The &lt;code&gt;gm4slv_tunnel&lt;/code&gt; is connection defined in &lt;code&gt;.ssh/config&lt;/code&gt; as:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;Host gm4slv_tunnel
	HostName gm4slv.plus.com
	User gm4slv
	Port xxxxx
	RemoteForward &lt;span class=&quot;nu0&quot;&gt;4446&lt;/span&gt; localhost:&lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt;
	RemoteForward &lt;span class=&quot;nu0&quot;&gt;8080&lt;/span&gt; 192.168.0.1:&lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
This sets up a remote tunnel, listening on port 4446 of my shack PC that will be forwarded back up the SSH connection to the SVXLink Raspberry Pi.
It also sets up a listening port 8080 which gives me &lt;code&gt;http&lt;/code&gt; access to the 4G MiFi router at the remote site in case I want to shut it down or reboot it or whatever. I just browse to &lt;code&gt;&lt;a href=&quot;http://my_shack_pc:8080&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://my_shack_pc:8080&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://my_shack_pc:8080&lt;/a&gt;&lt;/code&gt; and I&amp;#039;m actually logged into the MiFi router. Magic!
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;etc/ssh/sshd_conf&lt;/code&gt; needs to have &lt;code&gt;Gateway Ports yes&lt;/code&gt; to allow the Shack PC to accept connections to its new &lt;em&gt;remote listening&lt;/em&gt; ports (4446 for SSH and 8080 for HTTP) from other LAN machines, &lt;em class=&quot;u&quot;&gt;otherwise these ports would only be accessible to the Shack PC itself&lt;/em&gt; (on “localhost:4446” or “localhost:8080”)
&lt;/p&gt;

&lt;p&gt;
To allow an unattended/automatic login &lt;em&gt;from&lt;/em&gt; the remote Raspberry Pi &lt;em&gt;to&lt;/em&gt; the Shack PC it&amp;#039;s necessary to set up public_key authentication and to have a &lt;em&gt;passphrase-less&lt;/em&gt; key on the Raspberry Pi. 
&lt;/p&gt;

&lt;p&gt;
Generate a public/private key pair on the Raspberry Pi with &lt;code&gt;ssh-keygen&lt;/code&gt; and don&amp;#039;t enter a &lt;em&gt;passphrase&lt;/em&gt; before saving it in &lt;code&gt;.ssh/id_rsa&lt;/code&gt; and &lt;code&gt;.ssh/id_rsa.pub&lt;/code&gt;. Then transfer a copy of &lt;code&gt;.ssh/id_rsa.pub&lt;/code&gt; &lt;em&gt;from&lt;/em&gt; the Raspberry Pi &lt;em&gt;to&lt;/em&gt; the Shack PC and put it in the &lt;code&gt;authorized_keys2&lt;/code&gt; file:
&lt;/p&gt;

&lt;p&gt;
(on Raspberry Pi):
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;$ scp .ssh/id_rsa.pub user@shack_pc:&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
enter password etc. to do the initial &lt;code&gt;scp&lt;/code&gt; transfer
&lt;/p&gt;

&lt;p&gt;
(on Shack PC)
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;$ cat id_rsa.pub » .ssh/authorized_keys2&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
then any further SSH or SCP sessions &lt;em&gt;from&lt;/em&gt; the Rasperry Pi &lt;em&gt;to&lt;/em&gt; the Shack PC &lt;em&gt;should&lt;/em&gt; occur without any need for 
passwords.
&lt;/p&gt;

&lt;p&gt;
The Pi is now set up for automatic SSH Remote Tunnel - as long as the script is run at boot time:
&lt;/p&gt;

&lt;p&gt;
Crontab is used to fire off the tunnel &lt;em&gt;and&lt;/em&gt; start SVXLink @reboot
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;reboot &lt;span class=&quot;kw2&quot;&gt;sleep&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; gm4slv &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;tunnel.sh &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;reboot &lt;span class=&quot;kw2&quot;&gt;sleep&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; gm4slv &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svx_ref.sh &lt;span class=&quot;sy0&quot;&gt;&amp;gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;null &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
To check the Tunnel is up you look at &lt;code&gt;netstat -ntl&lt;/code&gt; on the Shack PC:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~ $ &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;netstat&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-ntlp&lt;/span&gt;
Active Internet connections &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;only servers&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Program name
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 0.0.0.0:&lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt;              0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;854&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sshd: &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sbin
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 0.0.0.0:&lt;span class=&quot;nu0&quot;&gt;631&lt;/span&gt;             0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;167630&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;cupsd
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 0.0.0.0:&lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt;              0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;761&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;inetd
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 0.0.0.0:&lt;span class=&quot;nu0&quot;&gt;17500&lt;/span&gt;           0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;62324&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dropbox
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 0.0.0.0:&lt;span class=&quot;nu0&quot;&gt;445&lt;/span&gt;             0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;1134&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;smbd
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 0.0.0.0:&lt;span class=&quot;nu0&quot;&gt;4446&lt;/span&gt;            0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;2537&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sshd: gm4slv
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;17600&lt;/span&gt;         0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;62324&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dropbox
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 0.0.0.0:&lt;span class=&quot;nu0&quot;&gt;20000&lt;/span&gt;           0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;2537&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sshd: gm4slv
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 0.0.0.0:&lt;span class=&quot;nu0&quot;&gt;514&lt;/span&gt;             0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;647&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rsyslogd
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;17603&lt;/span&gt;         0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;62324&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dropbox
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;2947&lt;/span&gt;          0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;init
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 0.0.0.0:&lt;span class=&quot;nu0&quot;&gt;139&lt;/span&gt;             0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;1134&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;smbd
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 0.0.0.0:&lt;span class=&quot;nu0&quot;&gt;27659&lt;/span&gt;           0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;854&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sshd: &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sbin
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 0.0.0.0:&lt;span class=&quot;nu0&quot;&gt;111&lt;/span&gt;             0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;init
tcp        &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;      &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 0.0.0.0:&lt;span class=&quot;nu0&quot;&gt;8080&lt;/span&gt;            0.0.0.0:&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;               LISTEN      &lt;span class=&quot;nu0&quot;&gt;2537&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sshd: gm4slv&lt;/pre&gt;

&lt;p&gt;
SSH is listening on ports &lt;code&gt;4446, 20000 and 8080&lt;/code&gt; which proves it&amp;#039;s up and running. 
&lt;/p&gt;

&lt;p&gt;
Port 20000 (and 20001) is used by &lt;code&gt;autossh&lt;/code&gt; to handle its “is the tunnel still up” packets. 
&lt;/p&gt;

&lt;p&gt;
From the Shack PC I can &lt;code&gt;ssh localhost -p 4446&lt;/code&gt; and reach the remove Pi, hostname &lt;code&gt;svx&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~ $ &lt;span class=&quot;kw2&quot;&gt;ssh&lt;/span&gt; localhost &lt;span class=&quot;re5&quot;&gt;-p&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4446&lt;/span&gt;
Linux svx 5.15.32-v7+ &lt;span class=&quot;co0&quot;&gt;#1538 SMP Thu Mar 31 19:38:48 BST 2022 armv7l&lt;/span&gt;
&amp;nbsp;
The programs included with the Debian GNU&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Linux system are &lt;span class=&quot;kw2&quot;&gt;free&lt;/span&gt; software;
the exact distribution terms &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; each program are described &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; the
individual files &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;share&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;doc&lt;span class=&quot;sy0&quot;&gt;/*/&lt;/span&gt;copyright.
&amp;nbsp;
Debian GNU&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed May  &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;28&lt;/span&gt;:06 &lt;span class=&quot;nu0&quot;&gt;2022&lt;/span&gt; from 127.0.0.1
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;svx:~ $ &lt;span class=&quot;kw2&quot;&gt;who&lt;/span&gt;
gm4slv   pts&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;        &lt;span class=&quot;nu0&quot;&gt;2022&lt;/span&gt;-05-04 &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;35&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;127.0.0.1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;svx:~ $ &lt;span class=&quot;kw2&quot;&gt;whoami&lt;/span&gt;
gm4slv
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;svx:~ $ &lt;span class=&quot;kw2&quot;&gt;ls&lt;/span&gt;
backup         greeting.wav   id_rsa.pub    id_svx.pub  node_info.json      svxlink          svxlink.log        svxlink-sounds-en_US-heather      svx_ref.sh
backup.tar     hosts          id_sdr.pub    log1.log    ReflectorLogic.tcl  svxlink.conf     svxlink_noel.conf  svxlink-sounds-en_US-heather.tar  tunnel.sh
git_backup.sh  id_laptop.pub  id_shack.pub  Logic.tcl   svx_el.sh           svxlink_el.conf  svxlink_ref.conf   svx_noel.sh
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;svx:~ $&lt;/pre&gt;

&lt;p&gt;
 &lt;em&gt;&lt;a href=&quot;mailto:&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#64;&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#46;&amp;#112;&amp;#108;&amp;#117;&amp;#115;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#64;&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#46;&amp;#112;&amp;#108;&amp;#117;&amp;#115;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;John Pumford-Green&lt;/a&gt; Wed May  4 11:25:01 2022&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Page Updated : 04/06/26 07:39 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:pi&amp;amp;do=showtag&amp;amp;tag=pi&quot; class=&quot;wikilink1&quot; title=&quot;tag:pi&quot; rel=&quot;tag&quot;&gt;pi&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:svxlink&amp;amp;do=showtag&amp;amp;tag=svxlink&quot; class=&quot;wikilink1&quot; title=&quot;tag:svxlink&quot; rel=&quot;tag&quot;&gt;svxlink&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:linux&amp;amp;do=showtag&amp;amp;tag=linux&quot; class=&quot;wikilink1&quot; title=&quot;tag:linux&quot; rel=&quot;tag&quot;&gt;linux&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:ssh&amp;amp;do=showtag&amp;amp;tag=ssh&quot; class=&quot;wikilink1&quot; title=&quot;tag:ssh&quot; rel=&quot;tag&quot;&gt;ssh&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The answer is SSH Tunnels&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_answer_is_ssh_tunnels&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;817-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>Antenna Changes</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:blog:antenna_changes</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;antenna_changes&quot;&gt;Antenna Changes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Now that I&amp;#039;m turning my attention back to QRP I decided that the antenna I&amp;#039;ve used for many years - an Inverted-L held up by (over the years) different supports, and currently a 10m SOTA-pole with the top few sections removed - tuned against a mess of radials and ground rods by a CG-3000 Auto-ATU - was due for a change.
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
The Auto-ATU needs “a few watts” to trigger a re-tune on a new frequency. Occasionally it&amp;#039;ll work with 5W but not consistently, and certainly won&amp;#039;t re-tune at anything lower than 5W. This means occasionally having to give it a carrier from a QRO radio to re-tune before switching to a QRP radio. 
&lt;/p&gt;

&lt;p&gt;
Not cool!
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;d considered a trapped inverted-L configuration, with traps for each band at the 1/4 wave points. But in a rare 60m SSB QSO with Stuart GM4WMM he told me he&amp;#039;s using a multiband trapped End-Fed-Half-Wave. Fed via a 49:1 transformer, with the traps at the 1/2 wave points.
&lt;/p&gt;

&lt;p&gt;
This removes the need for a good, low impedance ground connection and simplifies things. It also means “more wire” in the air for each band.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Antenna Changes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;antenna_changes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1089&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;first_step_-_efhw_for_30m&quot;&gt;First Step - EFHW for 30m&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I removed the Auto-ATU and put my nanoVNA on the current antenna/ground feed point to see what I&amp;#039;ve got now (a totally random length). The first resonance/low SWR is around 3.2MHz. That means a 1/4 wave at 3.2MHz or around 23m. I can perhaps squeeze a little more wire into the space but I&amp;#039;ll accept that the new antenna overall length will be limited to “around 23m”.
&lt;/p&gt;

&lt;p&gt;
Next I wound a 49:1 transformer on a FT50-43 toroid (the largest type-43 toroid I could find), and added the usual 100pF capacitor across the 50 ohm input.
&lt;/p&gt;

&lt;p&gt;
Connecting this to the antenna  - and also adding a connection to the existing ground system, mostly for consistency, and some static drain etc, I found a very good resonant return loss dip at around 6MHz. And another at 12MHz and another at 18MHz. As it stands I could use it as a 3 x 1/2 wave on 17m….
&lt;/p&gt;

&lt;p&gt;
My main band is 30m. So the next step, to allow me to use 30m while I build the traps, was to shorten it to 1/2 wave resonance on 10.1MHz.
&lt;/p&gt;

&lt;p&gt;
I now have a resonant “End Fed Half Wave” for 30m.
&lt;/p&gt;

&lt;p&gt;
No need for an ATU (auto or manual).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;First Step - EFHW for 30m&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;first_step_-_efhw_for_30m&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1090-2193&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;next_step_-_trapped_efhw_for_2_bands_-_30m_40m&quot;&gt;Next step - trapped EFHW for 2 bands - 30m &amp;amp; 40m&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I made a trap for 10.1MHz and added it to the end of the current antenna, then added wire to make a dual-band 30m / 40m antenna. That should cover my normal CW operations for a while.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:blog:30mtrap1.jpg&quot; class=&quot;media&quot; title=&quot;public:blog:30mtrap1.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=afe9e1&amp;amp;media=public:blog:30mtrap1.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:blog:30mtrap2.jpg&quot; class=&quot;media&quot; title=&quot;public:blog:30mtrap2.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=cea200&amp;amp;media=public:blog:30mtrap2.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I found that adding the trap and additional 40m section caused the the 30m resonance to move up about 200kHz, so I had to add about 12“ of wire to the first part of the antenna to bring it back down into band. Otherwise it was a simple to add the trap, add the extra wire, trim the far end to bring the 40m resonance into band.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;m thinking of also trying to get 60m, but a 1/2 wave on 60m is around 30m and won&amp;#039;t fit in the space - UNLESS the loading effect of the 30m and 40m traps, below their resonance, will add enough inductance shorten the required wire length sufficiently.
&lt;/p&gt;

&lt;p&gt;
I need to re-make the 49:1 transformer with a larger toroid. Some calculations would imply that a 50-size core isn&amp;#039;t suitable for 5W. So far I&amp;#039;ve not seen any evidence of problems (I&amp;#039;m assuming overheating would lead to a loss of correct transformer action, and loss of the impedance transformation - and hence high SWR. This hasn&amp;#039;t been seen yet on CW at 5W or on WSPR at 1W, so perhaps it&amp;#039;ll survive long enough for me to replace it with a 140-size toroid, once I buy a few….
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:antenna&amp;amp;do=showtag&amp;amp;tag=antenna&quot; class=&quot;wikilink1&quot; title=&quot;tag:antenna&quot; rel=&quot;tag&quot;&gt;antenna&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:qrp&amp;amp;do=showtag&amp;amp;tag=qrp&quot; class=&quot;wikilink1&quot; title=&quot;tag:qrp&quot; rel=&quot;tag&quot;&gt;qrp&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Next step - trapped EFHW for 2 bands - 30m &amp;amp; 40m&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;next_step_-_trapped_efhw_for_2_bands_-_30m_40m&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2194-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 07 Jul 2026 09:04:47 +0000</pubDate>
        </item>
        <item>
            <title>Blogging Platforms</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:blog:blogging_platforms</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;blogging_platforms&quot;&gt;Blogging Platforms&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
I&amp;#039;ve recently been playing with self-hosted blogging platforms.
&lt;/p&gt;

&lt;p&gt;
It started with revisiting the Blog plugin for Dokuwiki and deciding that I wanted to use a purpose made blog platform instead.
&lt;/p&gt;

&lt;p&gt;
This brought me back to re-visit &lt;a href=&quot;https://chyrplite.net/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://chyrplite.net/&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Chyrp-Lite&lt;/a&gt; which I found easy to set up and to use.
&lt;/p&gt;

&lt;p&gt;
Then I found &lt;a href=&quot;https://pureblog.org/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://pureblog.org/&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Pure Blog&lt;/a&gt; which seemed even more light-weight and more akin to what I was looking for.
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Then I found I was updating wiki-pages here in Dokuwiki and updating Blog pages in Pure Blog. Both are running on the same web-server.
&lt;/p&gt;

&lt;p&gt;
And although I found it annoying to have to mentally flip between forms of Markdown, I got on with it, as I thought there was a benefit in separating wiki-like pages from blog-like posts.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Blogging Platforms&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;blogging_platforms&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-811&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;pure_blog_drawbacks&quot;&gt;Pure Blog drawbacks&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Pure Blog is hard-coded to run in the root directory of a web-server. Not in a sub-directory. I tried it that way, and it doesn&amp;#039;t work. This didn&amp;#039;t pose &lt;em&gt;too&lt;/em&gt; many problems at first.
&lt;/p&gt;

&lt;p&gt;
My two instances of dokuwiki (home and work-related) ran in their own sub-directories, as does my old vintage 2001 website. So far so good.
&lt;/p&gt;

&lt;p&gt;
Today I used the Pure Blog in-built update function to update the code to the latest version, and I found &lt;strong&gt;before pressing the GO button&lt;/strong&gt; that the script wanted to clean out the webserver root directory of anything that wasn&amp;#039;t part of &lt;em&gt;Pure Blog&lt;/em&gt;. 
&lt;/p&gt;

&lt;p&gt;
That meant my sub-directories containing dokuwiki etc.
&lt;/p&gt;

&lt;p&gt;
Well, that&amp;#039;s &lt;em&gt;&lt;strong&gt;not&lt;/strong&gt;&lt;/em&gt; going to happen…
&lt;/p&gt;

&lt;p&gt;
Instead it&amp;#039;s “Bye Bye Pure Blog”
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pure Blog drawbacks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pure_blog_drawbacks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;812-1558&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;back_to_dokuwiki&quot;&gt;Back to Dokuwiki&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I&amp;#039;ve re-instated the Dokuwiki Blog plugin and will go back to using it for the occasional blog-like post - something that doesn&amp;#039;t fit in my existing structure for the wiki itself. I&amp;#039;ve copied across a few articles from the Pure Blog, fortunately there aren&amp;#039;t many that I feel the need to drag across, and to correct the markdown &amp;amp; move the images etc.
&lt;/p&gt;

&lt;p&gt;
I might continue to pull across a few more, as the mood takes me, but I&amp;#039;ll basically just start afresh, from here.
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:pure&amp;amp;do=showtag&amp;amp;tag=pure&quot; class=&quot;wikilink1&quot; title=&quot;tag:pure&quot; rel=&quot;tag&quot;&gt;pure&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:blog&amp;amp;do=showtag&amp;amp;tag=blog&quot; class=&quot;wikilink1&quot; title=&quot;tag:blog&quot; rel=&quot;tag&quot;&gt;blog&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Back to Dokuwiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;back_to_dokuwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1559-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 19 Apr 2026 08:44:38 +0000</pubDate>
        </item>
        <item>
            <title>Shack To Makerspace</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:blog:shack_to_makerspace</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;shack_to_makerspace&quot;&gt;Shack To Makerspace&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
I used to have a radio-shack in the house, with component drawers on the walls, a filing cabinet to keep tools, parts, hardware etc.
&lt;/p&gt;

&lt;p&gt;
I built things and operated radios. 
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:blog:old_shack_1.jpg&quot; class=&quot;media&quot; title=&quot;public:blog:old_shack_1.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=4620c6&amp;amp;media=public:blog:old_shack_1.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Shack To Makerspace&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;shack_to_makerspace&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-253&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;move_to_the_shed&quot;&gt;Move to the shed&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Then in around 2013 I renovated the old garden shed and moved my shack out there. It was a pleasant few years having a space to do as I pleased, with just enough space to have a radio-bench and a work-bench.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:blog:shed.jpg&quot; class=&quot;media&quot; title=&quot;public:blog:shed.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=ab711b&amp;amp;media=public:blog:shed.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:blog:shed_shack_1.jpg&quot; class=&quot;media&quot; title=&quot;public:blog:shed_shack_1.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=160a22&amp;amp;media=public:blog:shed_shack_1.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:blog:shed_shack_2.jpg&quot; class=&quot;media&quot; title=&quot;public:blog:shed_shack_2.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=4ac7e8&amp;amp;media=public:blog:shed_shack_2.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Gradually the shed succumbed to the ravages of the Shetland weather and I decided it wasn&amp;#039;t really worth continuing using it. And at the same time I gave up playing radio at all.
&lt;/p&gt;

&lt;p&gt;
I had a few brief periods of in-the-house radio operation last year, but never really got deeply involved.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Move to the shed&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;move_to_the_shed&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;254-913&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;move_back_to_the_house&quot;&gt;Move back to the house&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Now, in 2026 I&amp;#039;m getting interested in radio again - in operating and in building. So I started setting up a shack. One rig was brought out of retirement. Then another.
&lt;/p&gt;

&lt;p&gt;
I put shelves over the operating desk to hold some test gear etc. but I still had no real building/tinkering facilities. My component drawers, junk boxes, books and test gear were still in the shed.
&lt;/p&gt;

&lt;p&gt;
Today I put a filing cabinet in the new shack. Moved books, test gear, some old projects and work in progress into the shack and then moved my wall-mounted component drawers from the shed to the new shack. I can now sit and tinker with circuits on my tiny operating desk. I can build projects. I can experiment. All from the relative comfort of my tiny shack.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;m still finding places for everything, so it&amp;#039;s a bit of a mess, but here&amp;#039;s how it looks at the moment.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:blog:new_shack_3.jpg&quot; class=&quot;media&quot; title=&quot;public:blog:new_shack_3.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=922539&amp;amp;media=public:blog:new_shack_3.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:blog:new_shack_1.jpg&quot; class=&quot;media&quot; title=&quot;public:blog:new_shack_1.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=bc03c2&amp;amp;media=public:blog:new_shack_1.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:shack&amp;amp;do=showtag&amp;amp;tag=shack&quot; class=&quot;wikilink1&quot; title=&quot;tag:shack&quot; rel=&quot;tag&quot;&gt;shack&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Move back to the house&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;move_back_to_the_house&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;914-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 09 Jul 2026 21:47:25 +0000</pubDate>
        </item>
        <item>
            <title>Laptop FreeBSD</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:laptop_freebsd</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:start&quot; data-wiki-id=&quot;public:computers:start&quot;&gt;Computers&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;laptop_freebsd&quot;&gt;Laptop FreeBSD&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
I moved my Dell laptop from Devuan Linux to FreeBSD and here are some things I needed to do and some things I did for convenience….
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Laptop FreeBSD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;laptop_freebsd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-181&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;graphics&quot;&gt;Graphics&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I found the basic install of the recommended &lt;code&gt;drm-kmod&lt;/code&gt; package and &lt;code&gt;i915kms&lt;/code&gt; driver wouldn&amp;#039;t work - it crashed/hung during boot.
&lt;/p&gt;

&lt;p&gt;
Removing this package and using the SCFB video driver worked, but didn&amp;#039;t give (for example) DPMS control of the LCD screen.
&lt;/p&gt;

&lt;p&gt;
I used SCFB temporarily be adding an xorg conf file &lt;code&gt;20-vesa.conf&lt;/code&gt; to &lt;code&gt;/usr/local/etc/X11/xorg.conf.d/&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;Section &lt;span class=&quot;st0&quot;&gt;&amp;quot;Device&amp;quot;&lt;/span&gt;
        Identifier &lt;span class=&quot;st0&quot;&gt;&amp;quot;Card0&amp;quot;&lt;/span&gt;
        Driver &lt;span class=&quot;st0&quot;&gt;&amp;quot;scfb&amp;quot;&lt;/span&gt;
EndSection&lt;/pre&gt;

&lt;p&gt;
This was a reasonable workaround, but I found the solution to using correct Intel i915kms driver here : &lt;a href=&quot;https://blog.hofstede.it/freebsd-150-on-the-thinkpad-t480-efficient-stable-and-8-hours-on-battery/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://blog.hofstede.it/freebsd-150-on-the-thinkpad-t480-efficient-stable-and-8-hours-on-battery/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://blog.hofstede.it/freebsd-150-on-the-thinkpad-t480-efficient-stable-and-8-hours-on-battery/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
This is what worked:
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Graphics&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;graphics&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;182-902&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;installed_new_packages&quot;&gt;Installed new packages&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;code&gt;drm-latest-kmod&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;gpu-firmware-intel-kmod-kabylake&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installed new packages&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installed_new_packages&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;903-996&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;added_to_etc_rcconf&quot;&gt;added to /etc/rc.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;kld_list=&amp;quot;i915kms&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;added to \/etc\/rc.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;added_to_etc_rcconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;997-1053&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;added_to_boot_loaderconf&quot;&gt;added to /boot/loader.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;# Graphics and power tuning
i915kms_load=&amp;quot;YES&amp;quot;
drm.i915.enable_rc6=7
drm.i915.enable_fbc=1
drm.i915.lvds_downclock=1
drm.i915.enable_psr=1
compat.linuxkpi.i915_disable_power_well=&amp;quot;0&amp;quot;
&lt;/pre&gt;

&lt;p&gt;
&lt;code&gt;i915kms&lt;/code&gt;  now loads and I have access to DPMS for turning off the LCD
screen.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;added to \/boot\/loader.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;added_to_boot_loaderconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1054-1374&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;lcd_panel_on_off&quot;&gt;LCD Panel on/off&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I made a few small shell scripts to assist in controlling the
battery consumption by being able to alter LCD brightness, and turn
the LCD off via DPMS and makde i3 shorcuts to them.
&lt;/p&gt;

&lt;p&gt;
(later I made the same key actions for DWM when I moved back to using DWM)
&lt;/p&gt;

&lt;p&gt;
now I can “$mod+Shift+o” to reduce brightness and “$mod+Shift+p” to
increase it, and “$mod+Shift+i” to turn the LCD screen off
completely.
&lt;/p&gt;

&lt;p&gt;
I also added a devd rule to turn the LCD screen off when the lid is
closed - this confused me initially, as it worked when testing it
by adding the rule, restarting devd and testing, from within an
X-Session…. but didn&amp;#039;t work when devd was started during
bootup…
&lt;/p&gt;

&lt;p&gt;
This was due to the lack of &lt;code&gt;DISPLAY&lt;/code&gt; if the script was triggered
from “outside” the X session. Changing the script to set the
&lt;code&gt;DISPLAY&lt;/code&gt; variable was the solution.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;LCD Panel on\/off&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lcd_panel_on_off&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1375-2240&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;etc_devd_rulesd_lidconf&quot;&gt;/etc/devd/rules.d/lid.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;notify 20 {
match &amp;quot;system&amp;quot; &amp;quot;ACPI&amp;quot;;
match &amp;quot;subsystem&amp;quot; &amp;quot;Lid&amp;quot;;
match &amp;quot;notify&amp;quot; &amp;quot;0x01&amp;quot;;
action &amp;quot;/home/g4slv/bin/on&amp;quot;;
};
notify 20 {
match &amp;quot;system&amp;quot; &amp;quot;ACPI&amp;quot;;
match &amp;quot;subsystem&amp;quot; &amp;quot;Lid&amp;quot;;
match &amp;quot;notify&amp;quot; &amp;quot;0x00&amp;quot;;
action &amp;quot;/home/g4slv/bin/off&amp;quot;;
};
&lt;/pre&gt;

&lt;p&gt;
The lid actions call one of these →
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;~/bin/on&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/usr/local/bin/bash&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;su&lt;/span&gt; g4slv &lt;span class=&quot;re5&quot;&gt;-c&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;setenv DISPLAY :0.0 &amp;amp;&amp;amp; /usr/local/bin/xset dpms force on&#039;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
&lt;code&gt;~/bin/off &lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/usr/local/bin/bash&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;su&lt;/span&gt; g4slv &lt;span class=&quot;re5&quot;&gt;-c&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;setenv DISPLAY :0.0 &amp;amp;&amp;amp; /usr/local/bin/xset dpms force off&#039;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/etc\/devd\/rules.d\/lid.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etc_devd_rulesd_lidconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2241-2830&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;other_tweaks&quot;&gt;Other tweaks&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Small scripts to automate swithing between Wifi and Ethernet
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Other tweaks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;other_tweaks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2831-2919&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;net_wlansh&quot;&gt;net_wlan.sh&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/sh&lt;/span&gt;
&amp;nbsp;
doas service netif stop em0 
doas service netif start wlan0
doas service dhclient restart wlan0&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;net_wlan.sh&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;net_wlansh&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;2920-3071&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;net_ethsh&quot;&gt;net_eth.sh&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/sh&lt;/span&gt;
&amp;nbsp;
doas service netif stop wlan0 
doas service netif start em0
doas service dhclient restart em0&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;net_eth.sh&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;net_ethsh&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;3072-3221&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;serial_usb_adaptors&quot;&gt;Serial USB Adaptors&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To get access to a USB serial device as normal user (as long as I&amp;#039;m in the &lt;code&gt;wheel&lt;/code&gt; group) I added a rule in &lt;code&gt;/etc/devd.conf&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;notify &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        match &lt;span class=&quot;st0&quot;&gt;&amp;quot;system&amp;quot;&lt;/span&gt;          &lt;span class=&quot;st0&quot;&gt;&amp;quot;DEVFS&amp;quot;&lt;/span&gt;;
        match &lt;span class=&quot;st0&quot;&gt;&amp;quot;subsystem&amp;quot;&lt;/span&gt;       &lt;span class=&quot;st0&quot;&gt;&amp;quot;CDEV&amp;quot;&lt;/span&gt;;
        match &lt;span class=&quot;st0&quot;&gt;&amp;quot;type&amp;quot;&lt;/span&gt;            &lt;span class=&quot;st0&quot;&gt;&amp;quot;CREATE&amp;quot;&lt;/span&gt;;
        match &lt;span class=&quot;st0&quot;&gt;&amp;quot;cdev&amp;quot;&lt;/span&gt;            &lt;span class=&quot;st0&quot;&gt;&amp;quot;ttyU[0-9]+&amp;quot;&lt;/span&gt;;
        action &lt;span class=&quot;st0&quot;&gt;&amp;quot;chmod ug+rw /dev/&lt;span class=&quot;es2&quot;&gt;$cdev&lt;/span&gt;&amp;quot;&lt;/span&gt;;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;
This makes the device R/W for the &lt;code&gt;wheel&lt;/code&gt; group. Without this rule (the chmod part) the device is only R/W for root.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Serial USB Adaptors&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;serial_usb_adaptors&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;3222-3755&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;other_config_files&quot;&gt;Other Config Files&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Other Config Files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;other_config_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;3756-3787&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;etc_rcconf&quot;&gt;/etc/rc.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;hostname=&amp;quot;proton&amp;quot;
keymap=&amp;quot;uk.kbd&amp;quot;
wlans_iwm0=&amp;quot;wlan0&amp;quot;
ifconfig_wlan0=&amp;quot;WPA  DHCP&amp;quot;
ip6addrctl_enable=&amp;quot;NO&amp;quot;
ipv6_activate_all_interfaces=&amp;quot;NO&amp;quot;
ifconfig_wlan0_ipv6=&amp;quot;inet6 ifdisabled&amp;quot;
ifconfig_em0_ipv6=&amp;quot;inet6 ifdisabled&amp;quot;
ifconfig_lo0_ipv6=&amp;quot;inet6 ifdisabled&amp;quot;
create_args_wlan0=&amp;quot;country GB regdomain NONE&amp;quot;
sshd_enable=&amp;quot;YES&amp;quot;
sshd_flags=&amp;quot;-4&amp;quot;

ntpd_enable=&amp;quot;YES&amp;quot;
ntpd_sync_on_start=&amp;quot;YES&amp;quot;
ntpd_flags=&amp;quot;-4&amp;quot;

ftpd_enable=&amp;quot;YES&amp;quot;
ftpd_flags=&amp;quot;-4&amp;quot;


moused_nondefault_enable=&amp;quot;NO&amp;quot;
# Set dumpdev to &amp;quot;AUTO&amp;quot; to enable crash dumps, &amp;quot;NO&amp;quot; to disable
dumpdev=&amp;quot;AUTO&amp;quot;
zfs_enable=&amp;quot;YES&amp;quot;
cupsd_enable=&amp;quot;YES&amp;quot;
devfs_system_ruleset=&amp;quot;system&amp;quot;
dbus_enable=&amp;quot;YES&amp;quot;


avahi_daemon_enable=&amp;quot;YES&amp;quot;

avahi_dnsconfd_enable=&amp;quot;YES&amp;quot;
inetd_enable=&amp;quot;YES&amp;quot;
rwhod_enable=&amp;quot;YES&amp;quot;

kld_list=&amp;quot;i915kms&amp;quot;

powerd_enable=&amp;quot;YES&amp;quot;
powerd_flags=&amp;quot;-a adaptive -b minimum &amp;quot;
update_motd=&amp;quot;NO&amp;quot;
dynamic_motd=&amp;quot;YES&amp;quot;
ifconfig_em0=&amp;quot;DHCP&amp;quot;
autofs_enable=&amp;quot;YES&amp;quot;
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/etc\/rc.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;etc_rcconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;3788-4698&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;boot_loaderconf&quot;&gt;/boot/loader.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;kern.geom.label.disk_ident.enable=&amp;quot;0&amp;quot;
kern.geom.label.gptid.enable=&amp;quot;0&amp;quot;
zfs_load=&amp;quot;YES&amp;quot;
i915kms_load=&amp;quot;YES&amp;quot;
drm.i915.enable_rc6=&amp;quot;7&amp;quot;
drm.i915.semaphores=&amp;quot;1&amp;quot;
drm.i915.enable_fbc=&amp;quot;1&amp;quot;
drm.i915.lvds_downclock=1
drm.i915.enable_psr=1
compat.linuxkpi.i915_disable_power_well=&amp;quot;0&amp;quot;
fuse_load=&amp;quot;YES&amp;quot;
iwm8265fw_load=&amp;quot;YES&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\/boot\/loader.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;boot_loaderconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;4699-5050&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;xinitrc&quot;&gt;~/.xinitrc&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;xrdb &lt;span class=&quot;re5&quot;&gt;-load&lt;/span&gt; ~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;.Xdefaults
setxkbmap &lt;span class=&quot;re5&quot;&gt;-layout&lt;/span&gt; gb
&lt;span class=&quot;kw2&quot;&gt;xset&lt;/span&gt; s noblank
&lt;span class=&quot;kw2&quot;&gt;xset&lt;/span&gt; s noexpose
&lt;span class=&quot;kw2&quot;&gt;xset&lt;/span&gt; dpms &lt;span class=&quot;nu0&quot;&gt;600&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;660&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;670&lt;/span&gt;
backlight &lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;eval&lt;/span&gt; $&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gnome-keyring-daemon --start&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;export&lt;/span&gt; SSH_AUTH_LOCK
&amp;nbsp;
feh &lt;span class=&quot;re5&quot;&gt;--bg-center&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-B&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;#005577&amp;quot;&lt;/span&gt;  ~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;freebsd.svg
&amp;nbsp;
pulseaudio &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;
&amp;nbsp;
dwmblocks &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;
&amp;nbsp;
pasystray &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;
&amp;nbsp;
nextcloud &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; 
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;exec&lt;/span&gt; dbus-launch &lt;span class=&quot;re5&quot;&gt;--exit-with-x11&lt;/span&gt; dwm&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;~\/.xinitrc&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;xinitrc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;5051-5402&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;pkg_prime-list&quot;&gt;pkg prime-list&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Here&amp;#039;s the list of intentionally installed packages currently 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;FreeBSD-kernel-generic
FreeBSD-kernel-generic-dbg
FreeBSD-set-base
FreeBSD-set-lib32
FreeBSD-set-minimal
alpine
ansilove
automount
avahi
bash
bombadillo
claws-mail
claws-mail-bogofilter
claws-mail-dillo
claws-mail-pdf_viewer
detox
dmidecode
doas
drm-latest-kmod
dunst
dynamic_motd
evince
feh
ffmpegthumbnailer
figlet
firefox-esr
fldigi
foomatic-db-hpijs
freebsd-ftpd
freebsd-telnetd
fusefs-jmtpfs
gmake
gnome-keyring
gnucash
gopher
gpu-firmware-intel-kmod-kabylake
gvfs
hplip
i3blocks
imv
iperf
libptytty
libreoffice
librewolf
lynx
mixertui
most
mousepad
mpv
musikcube
nano
neofetch
nextcloudclient
nss_mdns
openshot
pasystray
pavucontrol
pcmanfm
pkg
pkgconf
polo
py311-i3ipc
py311-pip
rename
rsync
sacc
scrot
setsid
shotwell
slock
slrn
thunar
thunar-archive-plugin
tightvnc
tmux
vim
vlc
wireshark
xarchiver
xorg
yt-dlp
zip&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;pkg prime-list&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pkg_prime-list&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;5403-6334&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Page created  : 04/06/26 11:04 BST
&lt;/p&gt;

&lt;p&gt;
Page updated : 05/06/26 09:43 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:computer&amp;amp;do=showtag&amp;amp;tag=computer&quot; class=&quot;wikilink1&quot; title=&quot;tag:computer&quot; rel=&quot;tag&quot;&gt;computer&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:freebsd&amp;amp;do=showtag&amp;amp;tag=freebsd&quot; class=&quot;wikilink1&quot; title=&quot;tag:freebsd&quot; rel=&quot;tag&quot;&gt;freebsd&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;6335-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 05 Jun 2026 08:43:16 +0000</pubDate>
        </item>
        <item>
            <title>DM15L Non-linear Curve Fit</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:dm15l_curve_fit</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:start&quot; data-wiki-id=&quot;public:calculator:guides:start&quot;&gt;Hints &amp;amp; Tips&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dm15l_non-linear_curve_fit&quot;&gt;DM15L Non-linear Curve Fit&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Using DM15L/HP15C built-in L.R function to fit non-linear curves &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DM15L Non-linear Curve Fit&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dm15l_non-linear_curve_fit&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-130&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;background&quot;&gt;Background&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The idea is that the 3 different non-linear function forms can be expressed as linear expression &lt;code&gt;y = m.x + c&lt;/code&gt; if we manipulate the &lt;code&gt;x&lt;/code&gt; or &lt;code&gt;y&lt;/code&gt; values before adding them to the statistics accumulator. 
&lt;/p&gt;

&lt;p&gt;
The different curves require different treatment of the data to linearize, and the resulting coefficients may require treatment too.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Background&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;background&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;131-496&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;tldr&quot;&gt;Tl;dr&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Tl;dr&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tldr&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;497-515&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;method_for_exponential&quot;&gt;Method for Exponential&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;y = b.e&lt;sup&gt;ax&lt;/sup&gt;&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; Ln(y) = a.x + Ln(b) &lt;/code&gt;
&lt;/p&gt;
&lt;div class=&quot;table sectionedit5&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Enter Accumulation data &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;code&gt; y&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; x&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Calculate coefficients &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;code&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;L.R.&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Estimate ŷ &amp;amp; r for a new &lt;code&gt;x&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;code&gt;x &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;601-899&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Method for Exponential&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;method_for_exponential&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;516-900&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;method_for_logarithmic&quot;&gt;Method for Logarithmic&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;y=a.ln(x)+b&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;y = a.Ln(x) + b &lt;/code&gt;
&lt;/p&gt;
&lt;div class=&quot;table sectionedit7&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Enter Accumulation data &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;code&gt; y&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Enter&lt;/kbd&gt; x&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Calculate coefficients &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;L.R.&lt;/kbd&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Estimate ŷ &amp;amp; r for a new &lt;code&gt;x&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;x&lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt;&lt;/code&gt; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;973-1251&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Method for Logarithmic&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;method_for_logarithmic&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;901-1252&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;method_for_power&quot;&gt;Method for Power&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;y=b.x&lt;sup&gt;a&lt;/sup&gt;&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; Ln(y) = a.Ln(x) + Ln(b) &lt;/code&gt;
&lt;/p&gt;
&lt;div class=&quot;table sectionedit9&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Enter Accumulation data &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt; y&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; x&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Calculate coefficients &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;L.R.&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Estimate ŷ &amp;amp; r for a new &lt;code&gt;x&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;x &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;&lt;/code&gt; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;1334-1674&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Method for Power&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;method_for_power&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;1253-1677&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;exponential&quot;&gt;Exponential&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;code&gt;y = b.e&lt;sup&gt;ax&lt;/sup&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
This can be expressed as &lt;code&gt; Ln(y) = Ln(b) + a.x &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
or
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; Ln(y)  = a.x + ln(b) &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
compare with a linear expression &lt;code&gt;y = m.x + c&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Using &lt;code&gt;Ln(y)&lt;/code&gt; and &lt;code&gt;x&lt;/code&gt; as data points and running the &lt;code&gt;L.R.&lt;/code&gt; function will give coefficients equal to &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;ln(b)&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
You can obtain the actual value of &lt;code&gt;b&lt;/code&gt; finding its antilog with &lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;.
&lt;/p&gt;

&lt;p&gt;
Once the L.R. has run you can find estimates of &lt;code&gt;ŷ&lt;/code&gt;  by running the &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt; to get the estimate of &lt;code&gt;Ln(y)&lt;/code&gt; and then finding its antilog  with &lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Exponential&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;exponential&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;1678-2284&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;mechanism&quot;&gt;Mechanism&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
To enter the data points you convert the &lt;code&gt;y&lt;/code&gt; data to its &lt;code&gt;Ln&lt;/code&gt; first, then accumulate as normal
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; y&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; x&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Once all the data has been entered you get the Linear Regression coefficients &lt;code&gt;a&lt;/code&gt; &amp;amp;  &lt;code&gt;b&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;L.R.&lt;/kbd&gt; and &lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt; to correct the &lt;code&gt;b&lt;/code&gt; LR coefficient.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mechanism&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mechanism&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;2285-2682&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;example_data&quot;&gt;Example Data&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit13&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;strong&gt;y&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;2.8&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;3.6&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;5.8&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;8.0&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;strong&gt;x&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;0.8&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;1.1&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;1.7&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;2.1&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;2708-2755&amp;quot;} --&gt;
&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Clear ∑&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;2.8 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; 0.8 &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;3.6 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; 1.1 &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;5.8 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; 1.7 &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;8.0 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; 2.1 &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
All data is in the accumulator, now do the &lt;code&gt;Linear Regression&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;L.R.&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
This gives &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;Ln b&lt;/code&gt; coefficients  
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Y: 0.805&lt;/code&gt;  = &lt;code&gt;a&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 0.3897&lt;/code&gt; = &lt;code&gt;ln b&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
so we need to find &lt;code&gt;b&lt;/code&gt; so &lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Y: 0.805&lt;/code&gt; = &lt;code&gt;a&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 1.476&lt;/code&gt; = &lt;code&gt;b&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Equation&lt;/strong&gt; estimation is therefore  &lt;code&gt;y = 1.476 e &lt;sup&gt;0.805x&lt;/sup&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
I made the data table by using the equation &lt;code&gt;y = 1.5 e &lt;sup&gt;0.8x&lt;/sup&gt;&lt;/code&gt; and then used approx. &lt;code&gt;y&lt;/code&gt; values for the data table…. so the estimate looks pretty good
&lt;/p&gt;

&lt;p&gt;
To do an estimation of &lt;code&gt;y&lt;/code&gt; when &lt;code&gt;x&lt;/code&gt; = &lt;code&gt;0.9&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;0.9&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Y: 0.999962&lt;/code&gt; = r correlation coefficient
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 3.047425&lt;/code&gt; = ŷ estimation
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Example Data&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;example_data&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;2683-3775&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;method_for_exponential1&quot;&gt;Method for Exponential&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit15&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Enter Accumulation data &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;code&gt; y&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; x&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Calculate coefficients &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;code&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;L.R.&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Estimate ŷ &amp;amp; r for a new &lt;code&gt;x&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;code&gt;x &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table4&amp;quot;,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;3810-4108&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Method for Exponential&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;method_for_exponential1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;3776-4109&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;logarithmic&quot;&gt;Logarithmic&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;code&gt;y = a.ln(x) + b &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Compare to a linear expression &lt;code&gt; y = m.x + c &lt;/code&gt; shows the logarithmic curve is linear if we use &lt;code&gt;Ln(x)&lt;/code&gt; as we accumulate data points.
&lt;/p&gt;

&lt;p&gt;
The &lt;code&gt;L.R.&lt;/code&gt; will provide the &lt;em&gt;actual&lt;/em&gt; &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt; coefficients.
&lt;/p&gt;

&lt;p&gt;
To estimate &lt;code&gt;ŷ&lt;/code&gt; first find the &lt;code&gt;Ln&lt;/code&gt; of &lt;code&gt;x&lt;/code&gt; then use the &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Logarithmic&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logarithmic&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;4110-4460&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;mechanism1&quot;&gt;Mechanism&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;code&gt; y&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Enter&lt;/kbd&gt; x&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt; &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Calculate LR Coefficients
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;L.R.&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
Calculate estimated &lt;code&gt;ŷ&lt;/code&gt; by finding the &lt;code&gt;Ln&lt;/code&gt; of your &lt;code&gt;x&lt;/code&gt; value first and then using  &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;x&lt;/code&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mechanism&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mechanism1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;4461-4823&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit18&quot; id=&quot;example_data1&quot;&gt;Example Data&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit19&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;strong&gt;y&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;1.5&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;1.7&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;1.8&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;2.1&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;strong&gt;x&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;0.8&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;1.7&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;2.6&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;4.9&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table5&amp;quot;,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;4848-4895&amp;quot;} --&gt;
&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Clear ∑&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; 1.5 &lt;kbd class=&quot;__keyboard&quot;&gt;Enter&lt;/kbd&gt; 0.8 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; 1.7 &lt;kbd class=&quot;__keyboard&quot;&gt;Enter&lt;/kbd&gt; 1.7 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; 1.8 &lt;kbd class=&quot;__keyboard&quot;&gt;Enter&lt;/kbd&gt; 2.6 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; 2.1 &lt;kbd class=&quot;__keyboard&quot;&gt;Enter&lt;/kbd&gt; 4.9 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Linear Regression Coefficients : &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;L.R.&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Y: 0.324&lt;/code&gt; = &lt;code&gt;a&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 1.544&lt;/code&gt; = &lt;code&gt;b&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Equation&lt;/strong&gt; &lt;code&gt;y = 0.324 . Ln(x) + 1.544 &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Estimate ŷ for &lt;code&gt;X = 3&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;3 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt; &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Y: 0.985&lt;/code&gt; = r, correlation coefficient
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 1.900&lt;/code&gt; = ŷ, estimation
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Example Data&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;example_data1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;4824-5559&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit20&quot; id=&quot;method_for_logarithmic1&quot;&gt;Method for Logarithmic&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit21&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Enter Accumulation data &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;code&gt; y&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Enter&lt;/kbd&gt; x&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Calculate coefficients &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;L.R.&lt;/kbd&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Estimate ŷ &amp;amp; r for a new &lt;code&gt;x&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;x&lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt;&lt;/code&gt; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table6&amp;quot;,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;5594-5872&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Method for Logarithmic&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;method_for_logarithmic1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;5560-5874&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit22&quot; id=&quot;power&quot;&gt;Power&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;code&gt; y = b.x&lt;sup&gt;a&lt;/sup&gt; &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
This can be rearranged as &lt;code&gt; Ln(y) = Ln(b) + a.Ln(x) &lt;/code&gt; or &lt;code&gt; Ln(y) = a.Ln(x) + Ln(b) &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Compare to a linear expression &lt;code&gt; y = m.x + c &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Our expression will be a straight line if we accumulate &lt;code&gt;Ln(y)&lt;/code&gt; and &lt;code&gt;Ln(x)&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
The coefficients given by the &lt;code&gt;L.R.&lt;/code&gt; function will be &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;Ln(b)&lt;/code&gt; - so to get the real &lt;code&gt;b&lt;/code&gt; coefficient we find its antilog &lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
We get the estimate for &lt;code&gt;ŷ&lt;/code&gt; we first find the &lt;code&gt;Ln&lt;/code&gt; of our chosen &lt;code&gt;x&lt;/code&gt; and then use the &lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt; to get &lt;code&gt;Ln(ŷ) and then &lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;&lt;/code&gt; to get &lt;code&gt;ŷ&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Power&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;power&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;5875-6484&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit23&quot; id=&quot;mechanism2&quot;&gt;Mechanism&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Accumulate using 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; y&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; x&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Calculate LR Coefficients
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;L.R.&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
Calculate estimated ŷ
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;x&lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mechanism&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mechanism2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;6485-6829&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit24&quot; id=&quot;example_data2&quot;&gt;Example Data&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit25&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;strong&gt;y&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;1.3&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;2.2&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;3.3&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;4.4&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;strong&gt;x&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;0.6&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;1.3&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;2.4&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt;3.6&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table7&amp;quot;,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;6854-6901&amp;quot;} --&gt;
&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Clear ∑&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; 1.3 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; 0.6 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; 2.2 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; 1.3 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; 3.3 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; 2.4 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt; 4.4 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; 3.6 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Linear Regression Coefficients : &lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;L.R.&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Y: 0.678&lt;/code&gt; = &lt;code&gt;a&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 1.837&lt;/code&gt; = &lt;code&gt;b&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Equation&lt;/strong&gt; : &lt;code&gt;y = 1.837x&lt;sup&gt;0.678&lt;/sup&gt; &lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Estimate ŷ for &lt;code&gt;X = 3&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;3 &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Y: 1.000&lt;/code&gt; = r, correlation coefficient
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;X: 3.869&lt;/code&gt; = ŷ, estimation
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Example Data&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;example_data2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;6830-7660&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit26&quot; id=&quot;method_for_power1&quot;&gt;Method for Power&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit27&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Enter Accumulation data &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt; y&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt; x&lt;sub&gt;i&lt;/sub&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;∑+&lt;/kbd&gt;&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Calculate coefficients &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;L.R.&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Estimate ŷ &amp;amp; r for a new &lt;code&gt;x&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;x &lt;kbd class=&quot;__keyboard&quot;&gt;g&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Ln&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;f&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ŷ.r&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;e&lt;sup&gt;x&lt;/sup&gt;&lt;/kbd&gt;&lt;/code&gt; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table8&amp;quot;,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;7689-8029&amp;quot;} --&gt;
&lt;p&gt;
— &lt;em&gt;John Pumford-Green 01/02/26 08:42 GMT&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Method for Power&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;method_for_power1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;7661-8080&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit28&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:calculator&amp;amp;do=showtag&amp;amp;tag=calculator&quot; class=&quot;wikilink1&quot; title=&quot;tag:calculator&quot; rel=&quot;tag&quot;&gt;calculator&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dm15l&amp;amp;do=showtag&amp;amp;tag=dm15l&quot; class=&quot;wikilink1&quot; title=&quot;tag:dm15l&quot; rel=&quot;tag&quot;&gt;dm15l&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;8081-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 06 Apr 2026 12:40:53 +0000</pubDate>
        </item>
        <item>
            <title>DM15L/41X/41L &quot;Multi-Variable&quot; Solve</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:dm15l_miso_solve</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:start&quot; data-wiki-id=&quot;public:calculator:guides:start&quot;&gt;Hints &amp;amp; Tips&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dm15l_41x_41l_multi-variable_solve&quot;&gt;DM15L/41X/41L &amp;quot;Multi-Variable&amp;quot; Solve&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Using multi-variable equations in SOLVE &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DM15L\/41X\/41L \&amp;quot;Multi-Variable\&amp;quot; Solve&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dm15l_41x_41l_multi-variable_solve&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-115&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;source&quot;&gt;Source&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=556&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=556&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=556&lt;/a&gt;
&lt;/p&gt;
&lt;blockquote  class=&quot;wrap__dark blockquote-plugin&quot;&gt;
&lt;p&gt;
In order to conveniently employ SOLVE or INTEG on the HP-34C/15C/41C for multiple-input, single-output (MISO) user-defined functions, the user&amp;#039;s program should emulate the way SOLVE and INTEG manage input variables on the three Pioneer-series models and the HP-33s.
&lt;/p&gt;

&lt;p&gt;
Assume that a MISO function is to be programmed as an RPN routine on a HP-34C, HP-15C, or HP-41C/CV/CX. A user may wish to use SOLVE or INTEG successively for any selected “focus” variable with all others held constant, and without having to edit the RPN routine. Here is a simple procedure for this purpose:
&lt;/p&gt;

&lt;p&gt;
Choose a numbered storage register for each variable in the function.
On the 41C/CV/CX, choose another numbered register as the indirect storage register. (Do not use a stack register, as it will be overwritten by SOLVE or INTEG.)
In PROGRAM mode:
&lt;/p&gt;

&lt;p&gt;
Program the function as an RPN routine that not only meets the basic requirements, but also retrieves each variable from its chosen storage register when it is used. (On the 41C/CV/CX, the label beginning the routine must be an external label.)
The second instruction of the routine (immediately after LBL) should store the stack x-register value to the indirectly-referenced register. This instruction is “STO (i)” on the HP-34C and HP-15C; it is “STO IND nn” on the HP-41C/CV/CX.
In RUN mode:
&lt;/p&gt;

&lt;p&gt;
Store the desired constant values of the fixed-value variables to their storage registers.
Store the register number containing the floating variable to the indirect storage register.
Invoke SOLVE or INTEG in the usual manner.
This procedure utilizes indirect storage to make the RPN program more flexible. SOLVE and INTEG feed the each value of the floating variable as input to the user program, which immediately stores the value indirectly to its user-chosen register. Each variable in the function is then recalled for use in calculations, so the user program need not be structured to receive any particular variable from the stack.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
EXAMPLE:

f(x, y, z) = 2*x - ln y + 1/z

x in R1; y in R2; z in R3
indirect in R00 (HP-41 only)


HP-15C/HP-34C program:      HP-41C/CV/CX program:


LBL A                       LBL &amp;quot;AA&amp;quot;
STO (i)                     STO IND 00
RCL 1                       RCL 01
2                           2
*                           *
RCL 2                       RCL 02
LN                          LN
-                           -
RCL 3                       RCL 03
1/x                         1/x
+                           +
RTN                         RTN


In RUN mode, solve for x such that f(x, y=15.1, z=5.3) = 0


HP-15C/HP-34C:              HP-41C/CV/CX:


15.1                        15.1
STO 2                       STO 02
5.3                         5.3
STO 3                       STO 03
1                           1
STO I                       STO 00
0.5                         0.5
ENTER                       ENTER
5                           5
SOLVE A                     &amp;quot;AA&amp;quot;  (enter AA in alpha mode)
                            XEQ &amp;quot;SOLVE&amp;quot;


(Answer is 1.263007749)


Next, solve for y such that f(x=0.7, y, z=3.3) = 0


HP-15C/HP-34C:              HP-41C/CV/CX:


0.7                         0.7
STO 1                       STO 01
3.3                         3.3
STO 3                       STO 03
2                           2
STO I                       STO 00
0.5                         0.5
ENTER                       ENTER
6                           6
SOLVE A                     &amp;quot;AA&amp;quot;  (enter AA in alpha mode)
                            XEQ &amp;quot;SOLVE&amp;quot;


(Answer is 5.490560270)


Finally, integrate f(x=1.7, y=4.1, z) over z = 1.0 to 6.0.
Specify 5 decimal-digit absolute function accuracy:


HP-15C/HP-34C:              HP-41C/CV/CX:


FIX 5                       FIX 5
1.7                         1.7
STO 1                       STO 01
4.1                         4.1
STO 2                       STO 02
3                           3
STO I                       STO 00
1                           1
ENTER                       ENTER
6                           6
INTEG A                     &amp;quot;AA&amp;quot;  (enter AA in alpha mode)
                            XEQ &amp;quot;INTEG&amp;quot;


(answer is 11.73682)
&lt;/pre&gt;

&lt;p&gt;
&lt;cite class=&quot;blockquote-plugin&quot;&gt;
&lt;a href=&quot;https://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=556&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=556&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=556&lt;/a&gt;
&lt;/cite&gt;
&lt;/p&gt;

&lt;/blockquote&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Source&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;source&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;116-4508&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;exampleohms_law&quot;&gt;Example : OHMS LAW&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
from &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-1212.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-1212.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.hpmuseum.org/forum/thread-1212.html&lt;/a&gt;
&lt;/p&gt;
&lt;blockquote  class=&quot;wrap__dark blockquote-plugin&quot;&gt;
&lt;p&gt;
So, can I write an equation in programming, such as
&lt;/p&gt;

&lt;p&gt;
(I* R) - E = 0
&lt;/p&gt;

&lt;p&gt;
(or however one should program it in)
&lt;/p&gt;

&lt;p&gt;
and use SOLVE to find the unknown?
&lt;/p&gt;

&lt;p&gt;
Code:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;LBL A
STO (i) 
RCL 0
RCL* 1
RCL- 2
RTN&lt;/pre&gt;

&lt;p&gt;
Example:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;I&amp;gt; STO 0
&amp;lt;E&amp;gt; STO 2
1 STO I
SOLVE A&lt;/pre&gt;

&lt;p&gt;
&lt;cite class=&quot;blockquote-plugin&quot;&gt; from &lt;a href=&quot;https://www.hpmuseum.org/forum/thread-1212.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hpmuseum.org/forum/thread-1212.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.hpmuseum.org/forum/thread-1212.html&lt;/a&gt; &lt;/cite&gt;
&lt;/p&gt;

&lt;/blockquote&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Example : OHMS LAW&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;exampleohms_law&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;4509-4948&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;examplenano-vna_tdr_settings&quot;&gt;Example : Nano-VNA TDR settings&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;code&gt; F = (Points^2 x v.f x 0.284 ) / distance &lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Points → R01&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Distance → R02&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; V.F → R03&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Frequency → R04&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;
LBL 71
Sto(i)
RCL 01
x^2
RCL* 03
0.284
*
RCL/ 02
RCL- 04
RTN
&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;example&quot;&gt;Example&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Find the Frequency sweep width needed for a distance of 35m with the following settings:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Distance = 35m&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Points = 101&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; V.F = 0.66&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;
101 STO01
35 STO02
.66 STO03
4 STO I
solve 71
&lt;/pre&gt;

&lt;p&gt;
Result = &lt;code&gt;54.63MHz&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 02/08/22 11:50&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Example : Nano-VNA TDR settings&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;examplenano-vna_tdr_settings&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4949-5486&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:calculator&amp;amp;do=showtag&amp;amp;tag=calculator&quot; class=&quot;wikilink1&quot; title=&quot;tag:calculator&quot; rel=&quot;tag&quot;&gt;calculator&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dm15l&amp;amp;do=showtag&amp;amp;tag=dm15l&quot; class=&quot;wikilink1&quot; title=&quot;tag:dm15l&quot; rel=&quot;tag&quot;&gt;dm15l&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;5487-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 07 Feb 2026 08:53:34 +0000</pubDate>
        </item>
        <item>
            <title>DM41X Ladybug Module</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:dm41x_ladybug_module</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:start&quot; data-wiki-id=&quot;public:calculator:guides:start&quot;&gt;Hints &amp;amp; Tips&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dm41x_ladybug_module&quot;&gt;DM41X Ladybug Module&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Another HP16 emulation &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DM41X Ladybug Module&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dm41x_ladybug_module&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-82&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;ladybug_key_overlay&quot;&gt;Ladybug Key Overlay&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acalculator%3Aguides%3Adm41x_ladybug_module&amp;amp;media=public:calculator:guides:ladybug_overlay.png&quot; class=&quot;media&quot; title=&quot;public:calculator:guides:ladybug_overlay.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=300&amp;amp;tok=c52f6b&amp;amp;media=public:calculator:guides:ladybug_overlay.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ladybug Key Overlay&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ladybug_key_overlay&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;83-169&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;details&quot;&gt;Details&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;code&gt;Ladybug&lt;/code&gt; is a more user-friendly, if less versatile, “HP16C programmer&amp;#039;s calculator” module than the fully-featured HP16 module by Angel Martin. Both have their uses, but for a simple calculator for bit-banging while writing 6502 assembly code Ladybug does everything, with a less convoluted User Interface.
&lt;/p&gt;

&lt;p&gt;
Although I also have a DM16L, the Swiss Micros modern clone of the original HP16C, I am finding that having Ladybug on the DM41X allows me to quickly switch between “normal” floating point calculations and integer “programming” calculations, and have access to the best of both worlds. 
&lt;/p&gt;

&lt;p&gt;
The DM16L/HP16C has very limited (basically unusable) floating point support. 
&lt;/p&gt;

&lt;p&gt;
The Ladybug module is more intuitive and usable than the Angel Martin HP16 emulator module and having Ladybug for INTEGER and the rest of the DM41X/HP41CX functionality for other tasks makes the DM41X my go-to calculator. The DM16L &lt;em&gt;is&lt;/em&gt; fantastic as a single-minded programmer&amp;#039;s calculator, and is used extensively when I&amp;#039;m engrossed in writing assembly code, but the DM41X is much more versatile and is carried with me at all times when I&amp;#039;m away from the workbench.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Details&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;details&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;170-1341&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;launching&quot;&gt;Launching&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; modules needed:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ladybug&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Boost&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; OS/4&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
To switch to “Ladybug Integer” mode : &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;code&gt;INTEGER&lt;/code&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
To leave (and return to normal mode) : &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;code&gt;EXITAPP&lt;/code&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
Using the DM41X &lt;code&gt;CST&lt;/code&gt; menu simplifies this, set 2 Custom menu entries for &lt;code&gt;INTEGER&lt;/code&gt; and &lt;code&gt;EXITAPP&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Launching&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;launching&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1342-1721&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;nice_features&quot;&gt;Nice features&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A “CMP” function akin to 6502 - sets flags in the same way but doesn&amp;#039;t change the register(s)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Status Flags : C, Z, N and V equivalent to 6502 flags and set in the same way after various operations.&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Flag &lt;code&gt;0&lt;/code&gt; = Zero &lt;code&gt;Z&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Flag &lt;code&gt;1&lt;/code&gt; = Sign &lt;code&gt;N&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Flag &lt;code&gt;3&lt;/code&gt; = Carry &lt;code&gt;C&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Flag &lt;code&gt;4&lt;/code&gt; = Overflow &lt;code&gt;V&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2&amp;#039;s-complement mode is set with Flag &lt;code&gt;2&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Leading Zeros display is set with Flag &lt;code&gt;5&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Word Size&lt;/code&gt; is set with &lt;kbd class=&quot;__keyboard&quot;&gt;Shift&lt;/kbd&gt;+&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Windowing&lt;/code&gt; is selected with &lt;kbd class=&quot;__keyboard&quot;&gt;.&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Bits can be &lt;code&gt;set&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Shift&lt;/kbd&gt;+&lt;kbd class=&quot;__keyboard&quot;&gt;4&lt;/kbd&gt;, &lt;code&gt;reset&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Shift&lt;/kbd&gt;+&lt;kbd class=&quot;__keyboard&quot;&gt;5&lt;/kbd&gt; and &lt;code&gt;tested&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Shift&lt;/kbd&gt;+&lt;kbd class=&quot;__keyboard&quot;&gt;6&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Boolean Operations on values in X and Y registers&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;AND&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Shift&lt;/kbd&gt;+&lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;OR&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Shift&lt;/kbd&gt;+&lt;kbd class=&quot;__keyboard&quot;&gt;2&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;XOR&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Shift&lt;/kbd&gt;+&lt;kbd class=&quot;__keyboard&quot;&gt;3&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;NOT&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Shift&lt;/kbd&gt;+&lt;kbd class=&quot;__keyboard&quot;&gt;CHS&lt;/kbd&gt; (invert each bit, on the value in the X register)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Shift&lt;/code&gt; and &lt;code&gt;Rotate&lt;/code&gt; functions are conveniently accessible - see Overlay picture above - without delving into menus or &lt;em&gt;launchers&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 23/09/22 13:40&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Nice features&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nice_features&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1722-2810&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
See &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:dm41_snippets#module_switching&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:dm41_snippets&quot; data-wiki-id=&quot;public:calculator:guides:dm41_snippets&quot;&gt; DM41X Hits &amp;amp; Tips&lt;/a&gt; for idea on Module Switching 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:calculator:guides:ladybug.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:calculator:guides:ladybug.pdf (277.5 KB)&quot;&gt;ladybug.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/hth313/ladybug/releases&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/hth313/ladybug/releases&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/hth313/ladybug/releases&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:calculator&amp;amp;do=showtag&amp;amp;tag=calculator&quot; class=&quot;wikilink1&quot; title=&quot;tag:calculator&quot; rel=&quot;tag&quot;&gt;calculator&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dm41x&amp;amp;do=showtag&amp;amp;tag=dm41x&quot; class=&quot;wikilink1&quot; title=&quot;tag:dm41x&quot; rel=&quot;tag&quot;&gt;dm41x&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2811-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 12 Jan 2026 14:35:58 +0000</pubDate>
        </item>
        <item>
            <title>DM41X Hints &amp; Tips</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:dm41_snippets</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:start&quot; data-wiki-id=&quot;public:calculator:guides:start&quot;&gt;Hints &amp;amp; Tips&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dm41x_hints_tips&quot;&gt;DM41X Hints &amp;amp; Tips&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DM41X Hints &amp;amp; Tips&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dm41x_hints_tips&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-50&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;module_switching&quot;&gt;Module Switching&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Using the &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:dm41x_ladybug_module&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:dm41x_ladybug_module&quot; data-wiki-id=&quot;public:calculator:guides:dm41x_ladybug_module&quot;&gt; Ladybug module&lt;/a&gt; for Integer/Base calculations means it&amp;#039;s impossible to also have the &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:41z_module&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:41z_module&quot; data-wiki-id=&quot;public:calculator:guides:41z_module&quot;&gt; 41Z complex number module&lt;/a&gt; or the &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:hp16c_emulator&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:hp16c_emulator&quot; data-wiki-id=&quot;public:calculator:guides:hp16c_emulator&quot;&gt; HP16C simulator module&lt;/a&gt; and the necessary library “plugged in” at the same time. There is a clash between &lt;code&gt;Library 4&lt;/code&gt; needed for &lt;code&gt;41z&lt;/code&gt; (and also needed for &lt;code&gt;16C&lt;/code&gt;) and &lt;code&gt;OS/4&lt;/code&gt; which is needed for &lt;code&gt;Ladybug&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve used the DM41X “module save/load” function to have different module-plugged states:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;41z.m41&lt;/code&gt; : with &lt;code&gt;41Z 2&amp;times;2 Deluxe&lt;/code&gt; and &lt;code&gt;Library 4&lt;/code&gt; modules active&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;16c.m41&lt;/code&gt; : with &lt;code&gt;HP16 C Simulator&lt;/code&gt; and &lt;code&gt;Library 4&lt;/code&gt; modules active&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;lady.m41&lt;/code&gt; : with &lt;code&gt;Boost&lt;/code&gt;, &lt;code&gt;OS/4&lt;/code&gt; and &lt;code&gt;Ladybug&lt;/code&gt; modules active&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;adv.m41&lt;/code&gt; : with &lt;code&gt;Advantage Pac&lt;/code&gt; module active&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
These are accessed via &lt;code&gt;setup&lt;/code&gt; → &lt;code&gt;2. Module&lt;/code&gt; → &lt;code&gt;4. Load Modules&lt;/code&gt; → &lt;code&gt;1. Load AM list&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Choosing the required *.m41 file will automatically unplug/plug whichever modules were active when the config. was saved.
&lt;/p&gt;

&lt;p&gt;
This makes it easier to remember which supporting library/module are needed to use each particular module&amp;#039;s functions.
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s possible to also save the &lt;code&gt;flash&lt;/code&gt; state - which modules have been pre-loaded into the DM41X&amp;#039;s Flash Memory making them &lt;em&gt;available&lt;/em&gt; to be &lt;em&gt;plugged in&lt;/em&gt; using different options at the &lt;code&gt;setup&lt;/code&gt; &lt;code&gt;2. Module&lt;/code&gt; choices…. you&amp;#039;ll work it out.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Module Switching&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;module_switching&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;51-1448&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;advantage_pacflag_21&quot;&gt;Advantage Pac : Flag 21&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I found that using some of the Advantage Pac programs (e.g. &lt;code&gt;MATRX&lt;/code&gt; or &lt;code&gt;CFIT&lt;/code&gt;) would lead to &lt;code&gt;AVIEW&lt;/code&gt; instructions in programs run subsequently to cause a &lt;code&gt;HALT&lt;/code&gt; - requiring use of the &lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt; key.
&lt;/p&gt;

&lt;p&gt;
I was told via a question on the &lt;a href=&quot;https://forum.swissmicros.com/viewforum.php?f=24&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://forum.swissmicros.com/viewforum.php?f=24&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Swiss Micros Forum &lt;/a&gt; that this was likely to be due to the Advantage Pac setting &lt;code&gt;FLAG 21&lt;/code&gt; (printer active) to help in its own presentation of information on the display. 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;FLAG 21&lt;/code&gt; SET while &lt;code&gt;FLAG 55&lt;/code&gt; is CLEAR (since there&amp;#039;s no Printer Module active) causes AVIEW instructions to halt awaiting user intervention (&lt;kbd class=&quot;__keyboard&quot;&gt;R/S&lt;/kbd&gt; key)
&lt;/p&gt;

&lt;p&gt;
To restore things to &lt;em&gt;normal&lt;/em&gt; : either &lt;code&gt;CLEAR&lt;/code&gt; Flag 21 via &lt;code&gt;CF&lt;/code&gt; or simply turn the calculator off and on again.
&lt;/p&gt;

&lt;p&gt;
See APPENDIX D in the HP41CX User Manual Volume 2 for a better explanation of the use of Flag 21 to control &lt;code&gt;AVIEW&lt;/code&gt; behaviour.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Advantage Pac : Flag 21&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;advantage_pacflag_21&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1449-2379&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;extended_memory&quot;&gt;Extended Memory&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
Copy a program to Extended Memory:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Put Prog&amp;#039;s name in &lt;code&gt;Alpha&lt;/code&gt; register&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; XEQ &lt;code&gt;storep&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The prog remains in main memory but can be deleted (&lt;code&gt;CLP&lt;/code&gt;) if memory needed&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; To restore to main memory put name in &lt;code&gt;Alpha&lt;/code&gt; and then &lt;code&gt;XEQ&lt;/code&gt; &lt;code&gt;GETSUB&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Extended Memory&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;extended_memory&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2380-2677&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;ddays&quot;&gt;DDAYS&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;To find the number of days between two dates&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; enter 1&lt;sup&gt;st&lt;/sup&gt; date into Y-stack as &lt;code&gt;dd.mmyyyy&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; key in 2&lt;sup&gt;nd&lt;/sup&gt; date into X-stack as &lt;code&gt;dd.mmyyyy&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Y&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;S&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; result is the difference in days.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DDAYS&lt;/code&gt; can be added to the &lt;code&gt;CST&lt;/code&gt; program chooser to make it easier if multiple calculations are required&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DDAYS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ddays&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2678-3144&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;example&quot;&gt;Example&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Days between 27/2/66 and 31/5/22
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;27.021966&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt;
&lt;code&gt;31.052022&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;D&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Y&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;S&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
Result = &lt;code&gt;20,547&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Check : 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;365&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;÷&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
Result &lt;code&gt;56.293&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;m 56 and a bit… sounds right…
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Example&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;example&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3145-3471&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;xyzalm&quot;&gt;XYZALM&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Various Alarm functions&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Put any message for the Alarm into the &lt;code&gt;ALHPA&lt;/code&gt; register
&lt;/p&gt;

&lt;p&gt;
Load the stack registers with:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Z : Repeat Interval &lt;code&gt;HHHH.MMSSs&lt;/code&gt; or &lt;code&gt;0&lt;/code&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Y : Date &lt;code&gt;DD.MMYYYY&lt;/code&gt; or &lt;code&gt;0&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; X : Time &lt;code&gt;HH.MMSSs&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Execute &lt;code&gt;XYZALM&lt;/code&gt; to set the alarm
&lt;/p&gt;

&lt;p&gt;
When alarm goes off it is &lt;code&gt;acknowledged&lt;/code&gt; by pressing any key except &lt;code&gt;STO&lt;/code&gt;.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Acknowledging a non-repeating (i.e. &lt;code&gt;Z&lt;/code&gt; was &lt;code&gt;0&lt;/code&gt;) alarm cancels it. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Acknowledging a repeating alarm cancels it and re-arms it, adding the &lt;code&gt;Repeat Interval&lt;/code&gt; to create the new alarm time.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pressing &lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt; cancels the alarm but makes it a &lt;code&gt;PAST DUE&lt;/code&gt; alarm.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;XYZALM&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;xyzalm&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3472-4123&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;example1&quot;&gt;Example&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Set alarm for 22:20, today, not repeating, called &lt;code&gt;Supper&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;S&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;U&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;P&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;P&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;E&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;R&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;0&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt; (for Z = repeat interval)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;0&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ENTER&lt;/kbd&gt; (for Y = Date = Today)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;22.20&lt;/code&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;XEQ&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;X&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Y&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;Z&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;A&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;L&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;M&lt;/kbd&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;ALPHA&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
At &lt;code&gt;22:20&lt;/code&gt; the alarm is activated. &lt;code&gt;ALPHA&lt;/code&gt; shows &lt;code&gt;SUPPER&lt;/code&gt;. 
&lt;/p&gt;

&lt;p&gt;
Alarm is cancelled by pressing &lt;em&gt;any key but &lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt;&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Pressing &lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt; creates a &lt;code&gt;PAST DUE&lt;/code&gt; alarm which means it gets re-triggered if the calculator is turned off. It can be cancelled and deleted by pressing any key (except &lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt;) and then the calculator will turn off. Pressing &lt;kbd class=&quot;__keyboard&quot;&gt;STO&lt;/kbd&gt; will create a new Past Due alarm, and allow the calculator to turn off. On turn on the Past Due alarm will still exist and turning off will trigger it again.
&lt;/p&gt;

&lt;p&gt;
A Past Due alarm is useful to remind you that something happened previously and turning the calculator off is a memory-jogger.
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;CATALOGUE 5&lt;/code&gt; &lt;code&gt;R/S&lt;/code&gt; and &lt;code&gt;⇑&lt;/code&gt; &lt;code&gt;⇓&lt;/code&gt; steps through all alarms. 
&lt;/p&gt;

&lt;p&gt;
To clear an alarm from the Catalogue: &lt;code&gt;SHIFT&lt;/code&gt; &lt;code&gt;C&lt;/code&gt; ( where &lt;code&gt;C&lt;/code&gt; is &lt;code&gt;√&lt;/code&gt; on top row )  
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 31/05/22 13:13&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Page last updated: 24/01/26 08:09 GMT
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:calculator&amp;amp;do=showtag&amp;amp;tag=calculator&quot; class=&quot;wikilink1&quot; title=&quot;tag:calculator&quot; rel=&quot;tag&quot;&gt;calculator&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dm41x&amp;amp;do=showtag&amp;amp;tag=dm41x&quot; class=&quot;wikilink1&quot; title=&quot;tag:dm41x&quot; rel=&quot;tag&quot;&gt;dm41x&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Example&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;example1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;4124-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 24 Jan 2026 08:09:46 +0000</pubDate>
        </item>
        <item>
            <title>HP-11C Info</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:info:hp11c_info</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:info:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:info:start&quot; data-wiki-id=&quot;public:calculator:info:start&quot;&gt;Calculator Hardware&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;hp-11c_info&quot;&gt;HP-11C Info&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acalculator%3Ainfo%3Ahp11c_info&amp;amp;media=public:calculator:info:2022-07-29_23.05.42.png&quot; class=&quot;media&quot; title=&quot;public:calculator:info:2022-07-29_23.05.42.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=36d7e1&amp;amp;media=public:calculator:info:2022-07-29_23.05.42.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HP-11C Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hp-11c_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;10-99&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;purchase_information&quot;&gt;Purchase Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Date   : 24/7/22&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; From   : eBay&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Price  : £63.49&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Serial : 2219AO3710&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Purchase Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;purchase_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;100-219&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;notes&quot;&gt;Notes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Bought on eBay as a first, relatively cheap, vintage HP &lt;em&gt;Voyager&lt;/em&gt; model. Some of the keys are a little vague feeling, although always registering positively and never missing a key-press (unlike the Swiss Micro DM15L which occasionally misses a key-press if it&amp;#039;s not performed with enough pressure).
&lt;/p&gt;

&lt;p&gt;
I like the old feel, and although it&amp;#039;s noticeably slower than more modern calculators, it has plenty of useful features and functions to be carried and used when the higher power or features of the DM42, DM41X or DM15L are not needed.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Notes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;notes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;220-779&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;guides&quot;&gt;Guides&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:guides:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:guides:start&quot; data-wiki-id=&quot;public:calculator:guides:start&quot;&gt;Hints &amp;amp; Tips&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Guides&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;guides&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;780-839&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;issues&quot;&gt;Issues&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Issues&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;issues&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;840-862&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;hp-11c_owner_s_handbook&quot;&gt;HP-11C Owner&amp;#039;s Handbook&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Download from &lt;a href=&quot;https://literature.hpcalc.org&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://literature.hpcalc.org&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://literature.hpcalc.org&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; HP-11C Owner&amp;#039;s Handbook &amp;amp; Problem-Solving Guide : &lt;a href=&quot;https://literature.hpcalc.org/community/hp11c-oh-en.pdf&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://literature.hpcalc.org/community/hp11c-oh-en.pdf&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://literature.hpcalc.org/community/hp11c-oh-en.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HP-11C Owner&amp;#039;s Handbook&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hp-11c_owner_s_handbook&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;863-1063&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;hp11c_program_listings&quot;&gt;HP11C Program Listings&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; See &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:progs:hp11c_progs&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:progs:hp11c_progs&quot; data-wiki-id=&quot;public:calculator:progs:hp11c_progs&quot;&gt;HP11C Progs&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Page Updated : 17/02/26 16:31 GMT
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:calculator&amp;amp;do=showtag&amp;amp;tag=calculator&quot; class=&quot;wikilink1&quot; title=&quot;tag:calculator&quot; rel=&quot;tag&quot;&gt;calculator&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:hp11c&amp;amp;do=showtag&amp;amp;tag=hp11c&quot; class=&quot;wikilink1&quot; title=&quot;tag:hp11c&quot; rel=&quot;tag&quot;&gt;hp11c&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HP11C Program Listings&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hp11c_program_listings&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1064-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 17 Feb 2026 16:31:18 +0000</pubDate>
        </item>
        <item>
            <title>DM32 Progs</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:progs:dm32_progs</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:calculator:progs:start&quot; class=&quot;wikilink1&quot; title=&quot;public:calculator:progs:start&quot; data-wiki-id=&quot;public:calculator:progs:start&quot;&gt;Programs&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dm32_progs&quot;&gt;DM32 Progs&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Description &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DM32 Progs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dm32_progs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-61&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;return_loss_swr_from_complex_impedance&quot;&gt;Return Loss &amp;amp; SWR from Complex Impedance&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Input Rs and Xs to calculate |z|, |ρ|, VSWR and R.Loss
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;complex_numbers_in_dm32&quot;&gt;Complex numbers in DM32&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
The DM32/HP31Sii handles complex numbers by treating stack-X as &lt;em&gt;Real&lt;/em&gt;, stack-Y and &lt;em&gt;Imaginary&lt;/em&gt; for one complex number, and stack-Z as &lt;em&gt;Real&lt;/em&gt; and stack-T as &lt;em&gt;Imaginary&lt;/em&gt; for a second complex number. 
&lt;/p&gt;

&lt;p&gt;
This means the normal 4 level stack can hold 2 complex numbers. This is similar to the HP41 Advantage Pack&amp;#039;s method.
&lt;/p&gt;

&lt;p&gt;
To store a complex number in a register actually requires two to be used - one for Real part and one for Imaginary part. This is similar to the HP15C/DM15L.
&lt;/p&gt;

&lt;p&gt;
Once the real and imaginary values are on the stack various “Complex” functions are accessed by &lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;CMPLX&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;Function&lt;/kbd&gt; for example to add
&lt;/p&gt;

&lt;p&gt;
Z&lt;sub&gt;1&lt;/sub&gt; = (10 + j20) 
&lt;/p&gt;

&lt;p&gt;
and
&lt;/p&gt;

&lt;p&gt;
Z&lt;sub&gt;2&lt;/sub&gt; = (30 - j25)
&lt;/p&gt;

&lt;p&gt;
gives
&lt;/p&gt;

&lt;p&gt;
Z&lt;sub&gt;3&lt;/sub&gt; = Z&lt;sub&gt;1&lt;/sub&gt; + Z&lt;sub&gt;2&lt;/sub&gt; = ( 10 + j20 ) + ( 30 - j25 )
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;20 ENTER 10 ENTER
25 CHS ENTER 30
&lt;/pre&gt;

&lt;p&gt;
The stack will show 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;20.0000
10.0000
-25.0000
30.0000&lt;/pre&gt;

&lt;p&gt;
Then carry out the addition
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
SHIFT CMPLX +&lt;/pre&gt;

&lt;p&gt;
The display will show
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;20.0000
10.0000
-5.0000
40.0000&lt;/pre&gt;

&lt;p&gt;
X has the real part of Z&lt;sub&gt;3&lt;/sub&gt; (40) and Y has the imaginary part of Z&lt;sub&gt;3&lt;/sub&gt; (-5)
&lt;/p&gt;

&lt;p&gt;
Z&lt;sub&gt;3&lt;/sub&gt; = ( 40 - j5 )
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Return Loss &amp;amp; SWR from Complex Impedance&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;return_loss_swr_from_complex_impedance&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;62-1381&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;the_program&quot;&gt;The program&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;
LBL Z
INPUT R
INPUT X
X&amp;lt;&amp;gt;Y       ; swap so Real is R and Imag is X
0
ENTER
50         ; enter Zo as 50 + j 0 
CMPLX +    ; complex addition Z + Zo
STO A      ; store intermediate value Re (Z + Zo)
R↓        
STO B      ; store intermediate value Im (Z + Zo)
R↓         ; X and Y stack now holds input Z real &amp;amp; imag again   
0
ENTER
50         ; enter Zo as 50 + j 0 (again)
CMPLX -    ; complex subtraction Z - Zo
RCL B      ; Im (Z + Zo)  
RCL A      ; Re (Z + Zo)
CMPLX ÷    ; complex divide (STACK z,t holds (Z - Zo) stack x,y holds (Z + Zo) (from reg. A &amp;amp; B) to calculate complex reflection coeff. ρ
STO E      ; save Re ρ
R↓
STO F      ; save Im ρ
RCL E
y,x -&amp;gt; θ, r ; convert complex rectangular ρ to mag/angle - X holds the magnitude |ρ| ( Y holds the angle, but we don&amp;#039;t care)
STO P       ; save |ρ|
1
RCL+ P
1
RCL- P
÷
STO S       ; store VSWR ( 1 + |ρ| ) / ( 1 - |ρ| ) 
RCL P       
LOG
20
X
STO Y       ; store Return Loss = 20 LOG |ρ|
RCL X
RCL R
y,x -&amp;gt; θ, r
STO Z       ; store magnitude of impedance |z|
RCL P       ; |ρ|
RCL S       ; VSWR
RCL Y       ; Return Loss
RTN
&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;example&quot;&gt;Example&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Z = 65.2 + j 17.7&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; R = 65.2&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; X = 17.7&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Results on stack:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;67.5598
0.2002
1.5006
-13.9718&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; |Z| = 67.6 ohms&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; |ρ| = 0.2&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SWR = 1.5:1&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Return Loss = 13.9dB&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 19/07/23 06:08&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The program&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_program&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1382-2787&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:calculator&amp;amp;do=showtag&amp;amp;tag=calculator&quot; class=&quot;wikilink1&quot; title=&quot;tag:calculator&quot; rel=&quot;tag&quot;&gt;calculator&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dm32&amp;amp;do=showtag&amp;amp;tag=dm32&quot; class=&quot;wikilink1&quot; title=&quot;tag:dm32&quot; rel=&quot;tag&quot;&gt;dm32&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2788-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 21 Jan 2026 07:14:40 +0000</pubDate>
        </item>
        <item>
            <title>Dokuwiki Mirror</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:dokuwiki_mirror</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:start&quot; data-wiki-id=&quot;public:computers:archive:start&quot;&gt;Archive&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dokuwiki_mirror&quot;&gt;Dokuwiki Mirror&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
I&amp;#039;m running a &lt;strong&gt;SANDBOX&lt;/strong&gt; installation of dokuwiki on the small headless server in have in the shack.
&lt;/p&gt;

&lt;p&gt;
This is to allow me to mess around with templates and layouts and things without impacting the &lt;em&gt;real&lt;/em&gt; wiki.
&lt;/p&gt;

&lt;p&gt;
To give it some data - a full mirror of the existing &lt;em&gt;real&lt;/em&gt; wiki - I&amp;#039;ve used &lt;code&gt;rsync&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;html&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; rsync &lt;span class=&quot;re5&quot;&gt;-av&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--delete&lt;/span&gt; gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;gm4slv.org.uk:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;html&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; .&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
This copies the &lt;em&gt;production&lt;/em&gt; wiki into the web server root on the little &lt;em&gt;sandbox&lt;/em&gt; machine.
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteclassic&quot;&gt;&lt;strong&gt;UPDATE — &lt;em&gt;John Pumford-Green 27/04/23 05:53&lt;/em&gt;&lt;/strong&gt;
&lt;p&gt;
Added &lt;code&gt;–delete&lt;/code&gt; to the command, to remove pages in the Mirror copy that have been deleted from the VPS (production) server, to keep them properly in step.
&lt;/p&gt;

&lt;/div&gt;
&lt;p&gt;
I can then play around to my heart&amp;#039;s content.
&lt;/p&gt;

&lt;p&gt;
The same mechanism would work to retrieve/install the whole wiki from a  &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:dokuwiki_backup&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:dokuwiki_backup&quot; data-wiki-id=&quot;public:computers:archive:dokuwiki_backup&quot;&gt;backup&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve put it in a shell script:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;WEBDIR&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;html&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;SERVERDIR&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;html&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;SERVER&lt;/span&gt;=gm4slv.org.uk
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt;  rsync &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ssh -l gm4slv -i /home/gm4slv/.ssh/id_rsa&amp;quot;&lt;/span&gt;  &lt;span class=&quot;re5&quot;&gt;-av&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$SERVER&lt;/span&gt;:&lt;span class=&quot;re1&quot;&gt;$SERVERDIR&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$WEBDIR&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
This means I can automate the mirroring with &lt;code&gt;crontab&lt;/code&gt; of I wanted to, but it would mean the &lt;em&gt;sandbox&lt;/em&gt; will lose any local modifications I&amp;#039;ve done. Perhaps it&amp;#039;s best to keep the option to &lt;em&gt;revert to production version&lt;/em&gt; as something I do from time to time, rather then automatically.
&lt;/p&gt;

&lt;p&gt;
(UPDATE — &lt;em&gt;John Pumford-Green 30/05/22 19:37&lt;/em&gt; )
&lt;/p&gt;

&lt;p&gt;
Encrypted Password Plugin…. see &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:sandbox_server&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:sandbox_server&quot; data-wiki-id=&quot;public:computers:archive:sandbox_server&quot;&gt;Sandbox Server&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dokuwiki Mirror&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki_mirror&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-1693&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;page_info&quot;&gt;Page Info&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 30/05/22 13:37&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Page last updated: 04/06/26 08:17 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dokuwiki&amp;amp;do=showtag&amp;amp;tag=dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;tag:dokuwiki&quot; rel=&quot;tag&quot;&gt;dokuwiki&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:linux&amp;amp;do=showtag&amp;amp;tag=linux&quot; class=&quot;wikilink1&quot; title=&quot;tag:linux&quot; rel=&quot;tag&quot;&gt;linux&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Page Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;page_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1694-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 07:17:18 +0000</pubDate>
        </item>
        <item>
            <title>Code &amp; Command Snippets</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:gists</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:start&quot; data-wiki-id=&quot;public:computers:archive:start&quot;&gt;Archive&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;code_command_snippets&quot;&gt;Code &amp;amp; Command Snippets&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Code &amp;amp; Command Snippets&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;code_command_snippets&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-55&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;windows_wifi_disconnect&quot;&gt;Windows WiFi Disconnect&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Windows will disconnect a WIFI connection when it discovers there&amp;#039;s no WAN internet - presumably Windows thinks ALL networks are connected to the Internet and this prevents using WIFI for an isolated LAN, and also throws you off the WLAN whenever the ADSL connection fails, even when you&amp;#039;re busy using only internal LAN sessions. 
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;THIS IS WRONG BEHAVIOUR.&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
I found a solution, and typically it&amp;#039;s a REGEDIT task:
&lt;/p&gt;

&lt;p&gt;
From : &lt;a href=&quot;https://superuser.com/questions/1650052/how-to-keep-windows-10-connected-to-wifi-without-internet&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://superuser.com/questions/1650052/how-to-keep-windows-10-connected-to-wifi-without-internet&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://superuser.com/questions/1650052/how-to-keep-windows-10-connected-to-wifi-without-internet&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Add a Registry DWORD “NoActiveProbe” value “1” at &lt;code&gt;Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\NetworkConnectivityStatusIndicator&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Job Done. You stay on your LAN even when the interwebs is down. 
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Acomputers%3Aarchive%3Agists&amp;amp;media=public:computers:screenshot_2024-03-26_20.19.56.png&quot; class=&quot;media&quot; title=&quot;public:computers:screenshot_2024-03-26_20.19.56.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=409612&amp;amp;media=public:computers:screenshot_2024-03-26_20.19.56.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Windows WiFi Disconnect&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;windows_wifi_disconnect&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;56-902&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;chrome_redirects&quot;&gt;Chrome redirects&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To remove a “permanent redirect” - e.g. from an &lt;code&gt;http&lt;/code&gt; to an &lt;code&gt;https&lt;/code&gt; URL - I found the answer here:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.neilwithdata.com/chrome-redirect-forget&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.neilwithdata.com/chrome-redirect-forget&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.neilwithdata.com/chrome-redirect-forget&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Open the Chrome Developer Tools (F12)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Go to the Network tab and make sure Disable cache is ticked&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Reload (or navigate to) the page you no longer want to be redirected while keeping the dev tools open.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 27/04/23 06:12&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Chrome redirects&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;chrome_redirects&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;903-1351&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;vim_pasting&quot;&gt;Vim Pasting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I recently had problems pasting text into Vim by the traditional &lt;kbd class=&quot;__keyboard&quot;&gt;RIGHT&lt;/kbd&gt; click method. Vim would enter &lt;code&gt;Insert(VISUAL)&lt;/code&gt; mode instead.
&lt;/p&gt;

&lt;p&gt;
One solution when using &lt;code&gt;Putty&lt;/code&gt; is to use its own mechanism :
&lt;/p&gt;

&lt;p&gt;
&lt;kbd class=&quot;__keyboard&quot;&gt;SHIFT&lt;/kbd&gt;+&lt;kbd class=&quot;__keyboard&quot;&gt;INS&lt;/kbd&gt;
&lt;/p&gt;

&lt;p&gt;
I prefer to use &lt;kbd class=&quot;__keyboard&quot;&gt;RIGHT&lt;/kbd&gt; click, as it&amp;#039;s more natural so I found the solution is to add
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;set&lt;/span&gt; mouse-=a&lt;/pre&gt;

&lt;p&gt;
to &lt;code&gt;~/.vimrc&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
This solves the problem, and I don&amp;#039;t need to use &lt;code&gt;nano&lt;/code&gt; when editing text files on my remote server via &lt;code&gt;SSH&lt;/code&gt; using Putty.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Vim Pasting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vim_pasting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1352-1885&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;raspberry_pi_stuff&quot;&gt;Raspberry Pi Stuff&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; find Raspberry Pi Model : &lt;code&gt;cat /sys/firmware/devicetree/base/model&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; mount a raspberry pi image&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;piimg $ &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; losetup &lt;span class=&quot;re5&quot;&gt;-Pf&lt;/span&gt; igate.img
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;piimg $ lsblk
NAME      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0       &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;   4.3G  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; loop
├─loop0p1 &lt;span class=&quot;nu0&quot;&gt;259&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;   256M  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; part
└─loop0p2 &lt;span class=&quot;nu0&quot;&gt;259&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;     4G  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; part
sda         &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 298.1G  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; disk
├─sda1      &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 235.1G  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; part &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
├─sda2      &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;     1K  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; part
├─sda3      &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;  50.9G  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; part
└─sda5      &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;  12.1G  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; part &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;SWAP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
sr0        &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;  1024M  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; rom
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;piimg $ &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;mount&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;loop0p2 &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mnt&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; remove mounted image&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;piimg $ &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;umount&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mnt
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;piimg $ &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; losetup &lt;span class=&quot;re5&quot;&gt;-D&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Raspberry Pi Stuff&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;raspberry_pi_stuff&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1886-2710&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;git&quot;&gt;Git&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
 Basic Workflow
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; do all changes to code&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;git add .&lt;/code&gt; to add changed files to staging&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;git commit -m “commit message” &lt;/code&gt; to do the commit&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;git push&lt;/code&gt; to push new commits to &lt;code&gt;github&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Git&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;git&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2711-2930&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;windows_host_file&quot;&gt;Windows Host File&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Start  → Windows Accessories → Notepad → &amp;lt;right click&amp;gt; … more…Run as Administrator&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; edit &lt;code&gt;C:\Windows\System32\drivers\etc\hosts&lt;/code&gt; (set &lt;code&gt;All files&lt;/code&gt; rather than &lt;code&gt;txt&lt;/code&gt; to be able to see the &lt;code&gt;hosts&lt;/code&gt; file in the file chooser)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Save&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Windows Host File&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;windows_host_file&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2931-3213&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;auto_ssh_tunnels&quot;&gt;Auto SSH Tunnels&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Used on remote installations to create persistent SSH &lt;code&gt;reverse&lt;/code&gt; tunnels. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Auto SSH Tunnels&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;auto_ssh_tunnels&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;3214-3320&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;an_example&quot;&gt;An example&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:svx&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:svx&quot; data-wiki-id=&quot;public:radio:topics:svxlink:svx&quot;&gt;svxlink hotspot&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;An example&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;an_example&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;3321-3380&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;page_info&quot;&gt;Page Info&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Page created Thu May 26 14:00:21 2022 by John Pumford-Green
&lt;/p&gt;

&lt;p&gt;
Page last updated: 04/06/26 21:03 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:linux&amp;amp;do=showtag&amp;amp;tag=linux&quot; class=&quot;wikilink1&quot; title=&quot;tag:linux&quot; rel=&quot;tag&quot;&gt;linux&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:pi&amp;amp;do=showtag&amp;amp;tag=pi&quot; class=&quot;wikilink1&quot; title=&quot;tag:pi&quot; rel=&quot;tag&quot;&gt;pi&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Page Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;page_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;3381-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 20:03:26 +0000</pubDate>
        </item>
        <item>
            <title>Pure Blog</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:pureblog</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:start&quot; data-wiki-id=&quot;public:computers:archive:start&quot;&gt;Archive&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;pure_blog&quot;&gt;Pure Blog&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; I&amp;#039;ve installed Pure Blog &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
After trying the Blog Plugin in dokuwiki and Chyrp-Lite PHP/SQLite blogging platform I switched to Pure Blog.
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s just what I need, and nothing extra to make it big and bloated.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pure Blog&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pure_blog&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-256&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;installation_configuration&quot;&gt;Installation &amp;amp; Configuration&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
See &lt;a href=&quot;https://g4slv.info/installing-pure-blog&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://g4slv.info/installing-pure-blog&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://g4slv.info/installing-pure-blog&lt;/a&gt; for some info.
&lt;/p&gt;

&lt;p&gt;
Webfonts used 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:atkinson_hyperlegible_mono_woff2.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:computers:atkinson_hyperlegible_mono_woff2.zip (304.1 KB)&quot;&gt; Atkinson Hyperlegible Mono&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:atkinson_next_woff2.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:computers:atkinson_next_woff2.zip (350.4 KB)&quot;&gt; Atkinson Hyperlegible Next&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation &amp;amp; Configuration&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation_configuration&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;257-559&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;css&quot;&gt;CSS&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.tag-cloud&lt;/span&gt; a &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0.5rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;kw1&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re1&quot;&gt;.archive&lt;/span&gt; li &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.5rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.1rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;list-style-type&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;none&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
body &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.25rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
main &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;max-width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;50rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
article &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
p&lt;span class=&quot;re1&quot;&gt;.post-archive-view&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.1rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.1rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
main h1 &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2.8rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
header&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; footer&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atkinson_next&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;sans-serif&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.1rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
footer &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;3rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
main h1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; main h2&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; main h3&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; main h4&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; main h5&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; main h6 &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin-left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;-1rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atkinson_next&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;sans-serif&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re1&quot;&gt;.tag-list&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;border-top&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1px&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;solid&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re4&quot;&gt;--border-color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;padding-top&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;2rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re1&quot;&gt;.post-nav&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin-top&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;3rem&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;atkinson_next&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;/content/fonts/AtkinsonHyperlegibleNext-Regular.woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       font-display&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; swap&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;atkinson_next&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;/content/fonts/AtkinsonHyperlegibleNext-Bold.woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;bold&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       font-display&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; swap&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;atkinson_next&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;/content/fonts/AtkinsonHyperlegibleNext-RegularItalic.woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       font-display&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; swap&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;italic&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;atkinson_next&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;/content/fonts/AtkinsonHyperlegibleNext-BoldItalic.woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;bold&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       font-display&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; swap&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;italic&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;atkinson_mono&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;/content/fonts/AtkinsonHyperlegibleMono-Regular.woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       font-display&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; swap&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;atkinson_mono&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;/content/fonts/AtkinsonHyperlegibleMono-RegularItalic.woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       font-display&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; swap&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;italic&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;atkinson_mono&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;/content/fonts/AtkinsonHyperlegibleMono-Bold.woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;bold&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       font-display&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; swap&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;normal&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;@font-face&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;atkinson_mono&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  src&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;/content/fonts/AtkinsonHyperlegibleMono-BoldItalic.woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; format&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;woff2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;bold&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       font-display&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; swap&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
       &lt;span class=&quot;kw1&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;italic&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;root&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;re4&quot;&gt;--font-stack&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atkinson_mono&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; system-ui&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;monospace&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;pre&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atkinson_mono&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;monospace&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
code &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atkinson_mono&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;monospace&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CSS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;css&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;560-3229&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;addons&quot;&gt;Addons&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Kev sent me 2 PHP scripts to provide a Tag-Cloud and a full site Archive page. 
&lt;/p&gt;

&lt;p&gt;
I tweaked them a bit, and here are my current versions.
&lt;/p&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:computers:archive:pureblog&amp;amp;codeblock=1&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_php&quot;&gt;tag-cloud.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;declare&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;strict_types&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$pageTitle&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Tag Cloud&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$metaDescription&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;All tags, sized by how often they appear.&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$tagIndex&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; load_tag_index&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$tagCounts&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$tagIndex&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$tagIndex&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$slug&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$slugs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;re0&quot;&gt;$tagCounts&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$slug&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/count&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$slugs&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Collect original display names from posts (slugs alone lose capitalisation/spaces)&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$originalNames&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;get_all_posts&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$post&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$post&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;tags&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; ?? &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$tag&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;re0&quot;&gt;$slug&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; normalize_tag&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$tag&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/isset&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$originalNames&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$slug&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;re0&quot;&gt;$originalNames&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$slug&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$tag&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Sort alphabetically by display name&lt;/span&gt;
&amp;nbsp;
&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/uksort&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;uksort&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$tagCounts&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;string &lt;span class=&quot;re0&quot;&gt;$a&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; string &lt;span class=&quot;re0&quot;&gt;$b&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$originalNames&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; int &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/strcasecmp&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;strcasecmp&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$originalNames&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$a&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; ?? &lt;span class=&quot;re0&quot;&gt;$a&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$originalNames&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$b&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; ?? &lt;span class=&quot;re0&quot;&gt;$b&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$maxCount&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$tagCounts&lt;/span&gt; ? &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/max&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;max&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$tagCounts&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$minCount&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$tagCounts&lt;/span&gt; ? &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/min&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;min&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$tagCounts&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$range&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$maxCount&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$minCount&lt;/span&gt; ? &lt;span class=&quot;re0&quot;&gt;$maxCount&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$minCount&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;require&lt;/span&gt; PUREBLOG_BASE_PATH &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;/includes/header.php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
render_masthead_layout&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$config&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;page&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;nbsp;
&amp;lt;main&amp;gt;
&amp;nbsp;
    &amp;lt;h1&amp;gt;Tag Cloud&amp;lt;/h1&amp;gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$tagCounts&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;nbsp;
        &amp;lt;p&amp;gt;No tags found.&amp;lt;/p&amp;gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;nbsp;
        &amp;lt;p class=&amp;quot;tag-cloud&amp;quot;&amp;gt;
&amp;nbsp;
            &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$tagCounts&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$slug&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;     &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$originalNames&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$slug&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; ?? &lt;span class=&quot;re0&quot;&gt;$slug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;re0&quot;&gt;$ratio&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$minCount&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$range&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;re0&quot;&gt;$fontSize&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/round&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;round&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;0.85&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ratio&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu19&quot;&gt;1.4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;re0&quot;&gt;$postWord&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; ? &lt;span class=&quot;st_h&quot;&gt;&#039;post&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;posts&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;a href=&amp;quot;/tag/&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; e&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/rawurlencode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;rawurlencode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$slug&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;quot;&#039;&lt;/span&gt;
&amp;nbsp;
                   &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039; style=&amp;quot;font-size: &#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$fontSize&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;em&amp;quot;&#039;&lt;/span&gt;
&amp;nbsp;
                   &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039; title=&amp;quot;&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; e&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;string&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039; &#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$postWord&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;quot;&amp;gt;&#039;&lt;/span&gt;
&amp;nbsp;
                   &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; e&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;  &lt;span class=&quot;st_h&quot;&gt;&#039;(&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;  e&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;string&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;)&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;  &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/a&amp;gt;&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;amp;emsp;&amp;amp;emsp;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;endforeach&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;nbsp;
        &amp;lt;/p&amp;gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;endif&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;nbsp;
&amp;lt;/main&amp;gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; render_footer_layout&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$config&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;page&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;nbsp;
&amp;lt;/body&amp;gt;
&amp;nbsp;
&amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:computers:archive:pureblog&amp;amp;codeblock=2&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_php&quot;&gt;archive.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;declare&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;strict_types&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$allPosts&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_all_posts&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$postsByYear&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$allPosts&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$entry&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$year&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$entry&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;date&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ? &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/date&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;date&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;Y&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/strtotime&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;strtotime&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;string&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$entry&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;date&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Unknown&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$postsByYear&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$year&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$entry&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/krsort&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;krsort&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$postsByYear&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; SORT_NATURAL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$pageTitle&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Archive&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$metaDescription&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Browse all published posts by year.&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;require&lt;/span&gt; PUREBLOG_BASE_PATH &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;/includes/header.php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; render_masthead_layout&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$config&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;lt;main class=archive&amp;gt;
    &amp;lt;article&amp;gt;
        &amp;lt;h1&amp;gt;Archive&amp;lt;/h1&amp;gt;
        &amp;lt;p&amp;gt;&lt;span class=&quot;sy1&quot;&gt;&amp;lt;?=&lt;/span&gt; e&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;string&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/count&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$allPosts&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt; published posts.&amp;lt;/p&amp;gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$allPosts&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
            &amp;lt;p&amp;gt;No published posts yet.&amp;lt;/p&amp;gt;
        &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$postsByYear&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$year&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$yearPosts&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
                &amp;lt;h3&amp;gt;&lt;span class=&quot;sy1&quot;&gt;&amp;lt;?=&lt;/span&gt; e&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;string&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$year&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt; (&lt;span class=&quot;sy1&quot;&gt;&amp;lt;?=&lt;/span&gt; e&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;string&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/count&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$yearPosts&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;)&amp;lt;/h3&amp;gt;
                &amp;lt;ul&amp;gt;
                    &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$yearPosts&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$postItem&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
                        &amp;lt;li&amp;gt;
                            &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$postItem&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;date&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
                              &amp;lt;!--  &amp;lt;small&amp;gt; --&amp;gt;
                                    &amp;lt;time datetime=&amp;quot;&lt;span class=&quot;sy1&quot;&gt;&amp;lt;?=&lt;/span&gt; e&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;string&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$postItem&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;date&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;quot;&amp;gt;
                                        &lt;span class=&quot;sy1&quot;&gt;&amp;lt;?=&lt;/span&gt; e&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/date&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;date&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;D Y-m-d H:i&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a target=&quot;_BLANK&quot; href=&quot;http://www.php.net/strtotime&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;strtotime&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;string&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$postItem&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;date&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
                                    &amp;lt;/time&amp;gt;
			   &amp;lt;!--     &amp;lt;/small&amp;gt; --&amp;gt;
				&amp;amp;emsp;
                            &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;endif&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
                            &amp;lt;a href=&amp;quot;/&lt;span class=&quot;sy1&quot;&gt;&amp;lt;?=&lt;/span&gt; e&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;string&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$postItem&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;slug&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; ?? &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;quot;&amp;gt;
                                &lt;span class=&quot;sy1&quot;&gt;&amp;lt;?=&lt;/span&gt; e&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;string&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$postItem&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; ?? &lt;span class=&quot;st_h&quot;&gt;&#039;Untitled&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
                            &amp;lt;/a&amp;gt;
                        &amp;lt;/li&amp;gt;
                    &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;endforeach&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
                &amp;lt;/ul&amp;gt;
            &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;endforeach&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;endif&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
    &amp;lt;/article&amp;gt;
&amp;lt;/main&amp;gt;
&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; render_footer_layout&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$config&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Addons&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;addons&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3230-7349&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:pure&amp;amp;do=showtag&amp;amp;tag=pure&quot; class=&quot;wikilink1&quot; title=&quot;tag:pure&quot; rel=&quot;tag&quot;&gt;pure&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:blog&amp;amp;do=showtag&amp;amp;tag=blog&quot; class=&quot;wikilink1&quot; title=&quot;tag:blog&quot; rel=&quot;tag&quot;&gt;blog&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;
Page created  : 02/03/26 08:50 GMT
&lt;/p&gt;

&lt;p&gt;
Page updated : 03/03/26 07:32 GMT
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;7350-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 03 Mar 2026 07:32:20 +0000</pubDate>
        </item>
        <item>
            <title>R Pi Image files</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:rpi_image</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:start&quot; data-wiki-id=&quot;public:computers:archive:start&quot;&gt;Archive&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;r_pi_image_files&quot;&gt;R Pi Image files&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;R Pi Image files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;r_pi_image_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;16-47&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;various_tips_and_tricks_for_working_with_raspberry_pi_disk_images&quot;&gt;Various tips and tricks for working with Raspberry Pi Disk Images&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Various tips and tricks for working with Raspberry Pi Disk Images&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;various_tips_and_tricks_for_working_with_raspberry_pi_disk_images&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;48-126&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;taking_an_image&quot;&gt;Taking an image&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; remove SD card from Pi&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; insert into PC&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; unmount the image partitions if they get auto-mounted&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; take the image using &lt;code&gt;dd&lt;/code&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;dd&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;if&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mmblahblah &lt;span class=&quot;re2&quot;&gt;of&lt;/span&gt;=name_of_image.img &lt;span class=&quot;re2&quot;&gt;bs&lt;/span&gt;=4M&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; wait….. and wait….&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; this can now be either&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; saved as it is (possibly a big file)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; compressed with gzip &lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;gzip&lt;/span&gt; name_of_image.img&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; an alternative is to make sure the image is as small as it needs to be, appropriate to the space actually needed by the installed OS.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Taking an image&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;taking_an_image&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;127-669&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;using_losetup_to_work_with_the_image_file&quot;&gt;Using &amp;#039;&amp;#039;losetup&amp;#039;&amp;#039; to work with the image file&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The image can be used as a &lt;em&gt;loop&lt;/em&gt; device and then mounted as a normal disk to allow access to the files etc. 
&lt;/p&gt;

&lt;p&gt;
To access the image as a &lt;em&gt;loop&lt;/em&gt; device you let &lt;code&gt;losetup&lt;/code&gt; find the partitions automatically and convert them to to loop partitions &lt;code&gt;loop0p1&lt;/code&gt; (the &lt;code&gt;/boot&lt;/code&gt; partition) and &lt;code&gt;loop0p2&lt;/code&gt; the &lt;code&gt;root&lt;/code&gt; partition. You can then mount whichever one you need. 
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;piimg $ &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; losetup &lt;span class=&quot;re5&quot;&gt;-Pf&lt;/span&gt; igate.img
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;piimg $ lsblk
NAME      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0       &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;   4.3G  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; loop
├─loop0p1 &lt;span class=&quot;nu0&quot;&gt;259&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;   256M  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; part
└─loop0p2 &lt;span class=&quot;nu0&quot;&gt;259&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;     4G  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; part
sda         &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 298.1G  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; disk
├─sda1      &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 235.1G  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; part &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
├─sda2      &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;     1K  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; part
├─sda3      &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;  50.9G  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; part
└─sda5      &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;  12.1G  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; part &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;SWAP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
sr0        &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;    &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;  1024M  &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; rom
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;piimg $ &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;mount&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;loop0p2 &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mnt
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;piimg $ &lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mnt
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mnt $ &lt;span class=&quot;kw2&quot;&gt;ls&lt;/span&gt;
bin  boot  dev  etc  home  lib  lost+found  media  mnt  opt  proc  root  run  sbin  share  srv  sys  tmp  usr  var
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mnt $ &lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mnt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc $ &lt;span class=&quot;kw2&quot;&gt;cat&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;hostname&lt;/span&gt;
igate
gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mnt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc $&lt;/pre&gt;

&lt;p&gt;
This allows you to change files (one example is to set a fixed IP address in &lt;code&gt;/etc/dhcpcd.conf&lt;/code&gt;) as required.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Using &amp;#039;&amp;#039;losetup&amp;#039;&amp;#039; to work with the image file&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;using_losetup_to_work_with_the_image_file&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;670-2037&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;shrinking_the_image&quot;&gt;Shrinking the image&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
If the OS had been expanded after install to &lt;em&gt;fill the whole SD Card space&lt;/em&gt; there is now a lot of pointless wasted space in the image that
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; takes up disk space to store&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; makes copying to a new SD card slow&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; makes it impossible to copy to a smaller card&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
The image can be shrunk to a more appropriate size.
&lt;/p&gt;

&lt;p&gt;
The gist of it is &lt;a href=&quot;https://superuser.com/questions/610819/how-to-resize-img-file-created-with-dd&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://superuser.com/questions/610819/how-to-resize-img-file-created-with-dd&quot; rel=&quot;ugc nofollow noopener&quot;&gt;here&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; unmount the loop device: &lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;umount&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mnt&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; use &lt;code&gt;gparted&lt;/code&gt; (need to be at a machine with a graphical session) to shrink the partition to a more suitable size, leaving some room for safety&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; dispose of the &lt;code&gt;loop&lt;/code&gt; device &lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; losetup &lt;span class=&quot;re5&quot;&gt;-d&lt;/span&gt; loop0&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The *.img file is still the same size, but the partitions within the file are smaller, the rest of the space needs to be stripped from the *.img file with &lt;code&gt;truncate&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Use &lt;code&gt;fdisk&lt;/code&gt; to inspect the image file to see where the partitions start and end &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;pre class=&quot;code bash&quot;&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;laptop:~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;piimg $ &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;fdisk&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-l&lt;/span&gt; igate.img
Disk igate.img: &lt;span class=&quot;nu0&quot;&gt;4.25&lt;/span&gt; GiB, &lt;span class=&quot;nu0&quot;&gt;4563402752&lt;/span&gt; bytes, &lt;span class=&quot;nu0&quot;&gt;8912896&lt;/span&gt; sectors
Units: sectors of &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;512&lt;/span&gt; = &lt;span class=&quot;nu0&quot;&gt;512&lt;/span&gt; bytes
Sector &lt;span class=&quot;kw2&quot;&gt;size&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;logical&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;physical&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span class=&quot;nu0&quot;&gt;512&lt;/span&gt; bytes &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;512&lt;/span&gt; bytes
I&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;O &lt;span class=&quot;kw2&quot;&gt;size&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;minimum&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;optimal&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span class=&quot;nu0&quot;&gt;512&lt;/span&gt; bytes &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;512&lt;/span&gt; bytes
Disklabel type: dos
Disk identifier: 0x38ea48c4
&amp;nbsp;
Device     Boot  Start     End Sectors  Size Id Type
igate.img1        &lt;span class=&quot;nu0&quot;&gt;8192&lt;/span&gt;  &lt;span class=&quot;nu0&quot;&gt;532479&lt;/span&gt;  &lt;span class=&quot;nu0&quot;&gt;524288&lt;/span&gt;  256M  c W95 FAT32 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;LBA&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
igate.img2      &lt;span class=&quot;nu0&quot;&gt;532480&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8912895&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8380416&lt;/span&gt;    4G &lt;span class=&quot;nu0&quot;&gt;83&lt;/span&gt; Linux&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The second partition ends at block &lt;strong&gt;8912895&lt;/strong&gt; so you shrink the filesystem to this point (plus one). This requires the calculation of the actual number of bytes, based on the &lt;strong&gt;block size of 512 bytes&lt;/strong&gt;. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Either calculate it yourself, or put the calculation in the command:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;pre class=&quot;code bash&quot;&gt; &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; truncate &lt;span class=&quot;re5&quot;&gt;--size&lt;/span&gt;=$&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8912895&lt;/span&gt;+&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;512&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; name_of_image.img&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Voila, a smaller image on file which uses &lt;em&gt;just enough&lt;/em&gt; space for the &lt;em&gt;already known to be working&lt;/em&gt; OS
&lt;/p&gt;

&lt;p&gt;
Page Updated: 30/12/25 09:55 GMT
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:linux&amp;amp;do=showtag&amp;amp;tag=linux&quot; class=&quot;wikilink1&quot; title=&quot;tag:linux&quot; rel=&quot;tag&quot;&gt;linux&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:pi&amp;amp;do=showtag&amp;amp;tag=pi&quot; class=&quot;wikilink1&quot; title=&quot;tag:pi&quot; rel=&quot;tag&quot;&gt;pi&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Shrinking the image&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;shrinking_the_image&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2038-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>Dokuwiki Interwiki Links</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:dokuwiki:interwiki</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:dokuwiki:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:dokuwiki:start&quot; data-wiki-id=&quot;public:computers:dokuwiki:start&quot;&gt;Dokuwiki&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dokuwiki_interwiki_links&quot;&gt;Dokuwiki Interwiki Links&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; A list of the shortcuts for interwiki linking &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Dokuwiki Interwiki Links&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki_interwiki_links&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-108&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;shortcuts&quot;&gt;1. Shortcuts&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;the standard shortcuts&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;var/www/html/dokuwiki/conf/interwiki.conf&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;wp        https://en.wikipedia.org/wiki/{NAME}
doku      https://www.dokuwiki.org/
rfc       https://tools.ietf.org/html/rfc
man       http://man.cx/
&lt;/pre&gt;

&lt;p&gt;
Some of these don&amp;#039;t actually function correctly and may be changed at some time, to more useful versions
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1. Shortcuts&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;shortcuts&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;109-481&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;use&quot;&gt;1.1 Use&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;most_commonly_used_is_the_wikipedia_shortcut&quot;&gt;Most commonly used is the Wikipedia shortcut&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;[[wp&amp;gt;dokuwiki]]&lt;/pre&gt;

&lt;p&gt;
Gives the interwiki link to Wikipedia&amp;#039;s page about &lt;code&gt;DokuWiki&lt;/code&gt;:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://en.wikipedia.org/wiki/dokuwiki&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/dokuwiki&quot;&gt;dokuwiki&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;and_dokuwiki_itself&quot;&gt;and Dokuwiki itself&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;[[doku&amp;gt; | Dokuwiki&amp;#039;s own wiki]]&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/&quot;&gt; Dokuwiki&amp;#039;s own wiki&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 05/07/22 11:06&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;1.1 Use&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;use&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;482-826&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dokuwiki&amp;amp;do=showtag&amp;amp;tag=dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;tag:dokuwiki&quot; rel=&quot;tag&quot;&gt;dokuwiki&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;827-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 29 Jan 2026 15:20:41 +0000</pubDate>
        </item>
        <item>
            <title>Bikes</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:bikes:start</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:start&quot; class=&quot;wikilink1&quot; title=&quot;public:miscellany:start&quot; data-wiki-id=&quot;public:miscellany:start&quot;&gt;Miscellany&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;bikes&quot;&gt;Bikes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;summer_2022&quot;&gt;Summer 2022&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_e3d70ffd69e86e1a793b7204025d9a0a_1&quot;&gt;We finally admitted defeat with the plan to rebuild/refurbish our old Thorn Club Tours : &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_e3d70ffd69e86e1a793b7204025d9a0a_1&quot;&gt;
&lt;p&gt;
Work Needed
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; brazing on new cable guides &amp;amp; stops&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; new brake and gear bosses&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; forks and steering stems were seized together&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; bottom brackets seized and housings looked swollen&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; bottle bosses rusted and a bolt sheered off inside at least one, needing removal and new bosses installing&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; possibly (serious?) internal corrosion after standing with tubes full of water&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
and pretty much &lt;em class=&quot;u&quot;&gt;everything&lt;/em&gt; else needed replacing too :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; front and rear derailleur gears&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; rear sprockets&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; chainwheels&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; brakes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; wheels / hubs / freewheel&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; brake and gear levers&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; saddles&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; head bearings&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; bottom brackets&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; pedals &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; etc. etc. etc… &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The only things that could have been re-used were handlebars and cranks. 
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
It &lt;em&gt;was&lt;/em&gt; a romantic idea to restore them to their former glory, but realistically it would have been unjustifiably expensive and time consuming… we just wanted to ride bikes again after several years away from them.
&lt;/p&gt;

&lt;p&gt;
So we decided to invest in 2 new modern hybrid bikes instead. 
&lt;/p&gt;

&lt;p&gt;
Two new Trek FX 2 Disc (&lt;em&gt;Equipped&lt;/em&gt;) will replace the old Club Tours.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Bikes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;bikes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;13-1255&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;new_bike_notes&quot;&gt;New Bike Notes&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;script type=&quot;text/javascript&quot;&gt; catlist_baseurl = &quot;https://www.g4slv.info/dokuwiki/&quot;; catlist_basescript = &quot;doku.php&quot;; catlist_useslash = 0; catlist_userewrite = 0; catlist_sepchar = &quot;_&quot;; catlist_deaccent = 1; catlist_pagename_sanitize = 1; &lt;/script&gt;&lt;ul class=&quot;catlist-nslist&quot; &gt;&lt;li class=&quot;catlist-page&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:bikes:john_bike&quot; class=&quot;wikilink1&quot; title=&quot;public:miscellany:bikes:john_bike&quot; data-wiki-id=&quot;public:miscellany:bikes:john_bike&quot;&gt;John&amp;#039;s Bike Notes&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;catlist-page&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:bikes:kate_bike&quot; class=&quot;wikilink1&quot; title=&quot;public:miscellany:bikes:kate_bike&quot; data-wiki-id=&quot;public:miscellany:bikes:kate_bike&quot;&gt;Kate&amp;#039;s Bike Notes&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;catlist-page&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:bikes:trek&quot; class=&quot;wikilink1&quot; title=&quot;public:miscellany:bikes:trek&quot; data-wiki-id=&quot;public:miscellany:bikes:trek&quot;&gt;Trek FX2 Purchase 2022&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;New Bike Notes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;new_bike_notes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1256-1312&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;page_info&quot;&gt;Page Info&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 13/06/22 09:35&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Page last updated: 30/12/25 09:55 GMT
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:bike&amp;amp;do=showtag&amp;amp;tag=bike&quot; class=&quot;wikilink1&quot; title=&quot;tag:bike&quot; rel=&quot;tag&quot;&gt;bike&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Page Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;page_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1313-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>Mastodon &amp; Twitter</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:random_thoughts:mastodon</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;mastodon_twitter&quot;&gt;Mastodon &amp;amp; Twitter&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 20/12/22 07:39&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
I recently tried Mastodon - the distributed, not-powered-by-advertising, not-run-by-megalomaniac-billionaires social media platform.
&lt;/p&gt;

&lt;p&gt;
This was after years of “not-using-Twitter”. I didn&amp;#039;t use Twitter for a variety of reasons. One was “what&amp;#039;s the point of it?” and another was “I don&amp;#039;t like AI and Algorithms deciding what I should see” and another was “I ABSOLUTELY HATE ADVERTISING”.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;d looked at Mastodon a few times over the last year or so, but thought “what&amp;#039;s the point of it?” and “everyone else is on Twitter anyway”.
&lt;/p&gt;

&lt;p&gt;
Then Elon Musk took over Twitter and there seemed to be a mass exodus of people, and Mastodon was where they were going. 
&lt;/p&gt;

&lt;p&gt;
So I set up a Mastodon account and started to explore.
&lt;/p&gt;

&lt;p&gt;
Initially it seemed to make sense - I had an account on an “instance” centred around the radio hobby, and most of the postings were interesting (or at least “on topic”) and it looked like it was possible to get involved, make “friends” and share experiences, and even post/read/enjoy the odd off-topic item.
&lt;/p&gt;

&lt;p&gt;
I couldn&amp;#039;t shake off the annoyance I felt that many of the posts were references to things still going on “over in the other place”, “on the Bird Site” etc. Lots of Twitter-in-jokes and references, that made no sense to people who had no interest or previous connection with Twitter, and were probably also annoying to people who had “escaped” Twitter and were enjoying the new atmosphere of Mastodon. 
&lt;/p&gt;

&lt;p&gt;
Carrying over old Twitter baggage started to dominate (as I saw things) as more and more “refugees” made the jump. 
&lt;/p&gt;

&lt;p&gt;
Endless “have I done the right thing?” or “I&amp;#039;m here now, what do I do?”, or “This doesn&amp;#039;t work like Twitter, I don&amp;#039;t like X, Y or Z”.
&lt;/p&gt;

&lt;p&gt;
… then the floods of “memes” referencing ongoing Twitter happenings…
&lt;/p&gt;

&lt;p&gt;
In my mind if you leave Twitter and join Mastodon you don&amp;#039;t need to keep dragging over Twitter-related posts, jokes, comments, memes.
&lt;/p&gt;

&lt;p&gt;
I started trying to filter out content I didn&amp;#039;t want to wade through, stuff that made no sense to me (as a non-Twitter user), then I started un-following people that persisted in filling up the timeline(s) with such stuff.
&lt;/p&gt;

&lt;p&gt;
Then I thought “What&amp;#039;s the point of this?”
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;d managed perfectly well without Twitter all these years.
&lt;/p&gt;

&lt;p&gt;
I was now spending more time trying to “clean up” my Mastodon timeline &amp;amp; home feed than I was happy with. 
&lt;/p&gt;

&lt;p&gt;
So I decide “No. It&amp;#039;s not for me”
&lt;/p&gt;

&lt;p&gt;
and Deleted my Mastodon.radio account (as well as the account I&amp;#039;d set up but not yet used on Mastodonapp.uk)
&lt;/p&gt;

&lt;p&gt;
Enough was enough. 
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;m just not a “social media microblogging” kind of person, I suppose.
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:mastodon&amp;amp;do=showtag&amp;amp;tag=mastodon%2C&quot; class=&quot;wikilink1&quot; title=&quot;tag:mastodon&quot; rel=&quot;tag&quot;&gt;mastodon,&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:twitter&amp;amp;do=showtag&amp;amp;tag=twitter&quot; class=&quot;wikilink1&quot; title=&quot;tag:twitter&quot; rel=&quot;tag&quot;&gt;twitter&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>Prepping</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:random_thoughts:prepping</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;prepping&quot;&gt;Prepping&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 21/12/22 23:07&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
We had a “weather event” on Monday December 12th 2022 - a short, sharp and vicious snow storm. Some snow fell earlier in the day, but until lunchtime it wasn&amp;#039;t really anything to get excited about….
&lt;/p&gt;

&lt;p&gt;
Then it turned nasty, and somewhat surreal.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Amiscellany%3Arandom_thoughts%3Aprepping&amp;amp;media=public:musings:2022-12-14_09.52.12.jpg&quot; class=&quot;media&quot; title=&quot;public:musings:2022-12-14_09.52.12.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=66eda3&amp;amp;media=public:musings:2022-12-14_09.52.12.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Prepping&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;prepping&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-367&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;the_shetland_power_outage_of_december_2022&quot;&gt;The Shetland Power Outage of December 2022&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The snow became heavier and had a peculiar “sticky wetness” about it, causing it to cover roads quickly. More significantly it started to cling to overhead power lines, building rapidly and freezing on the lines causing them to begin to fail as the strong wind began to blow the thickened and heavily weighted lines to break under the strain. 
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ll ignore the specific sequence of events of my day, as I&amp;#039;m more interested here in the longer term consequences of the snow storm rather then the “excitement” of the day&amp;#039;s drama.
&lt;/p&gt;

&lt;p&gt;
We eventually got home after a 4 hour journey in very poor weather, with bad roads (and not a few poor drivers, unused or unable to drive in snow) to contend with, at approx 8pm to find the power at home had failed. This is not unusual, and initially the electricity company (SSEN) were estimating 23:00 for restoration. No problem, we have wood-burning stoves for heating, in two rooms, and a gas (propane) cooker for heating water and for cooking food. 
&lt;/p&gt;

&lt;p&gt;
One evening without power is not unusual, and nothing to worry about. 
&lt;/p&gt;

&lt;p&gt;
We had our Petzl headtorches on, we lit the woodstoves and we made a meal.
&lt;/p&gt;

&lt;p&gt;
As the evening went on, the full severity of the power failures began to be known, and the repair estimate moved to “22:00 tomorrow”…. It moved further and further away with each successive update. 
&lt;/p&gt;

&lt;p&gt;
This was the start of a 6 day power outage, in sub-zero weather conditions, with snow and ice and occasional gale force winds.
&lt;/p&gt;

&lt;p&gt;
The 3 mile section of single track road connecting us to the main road network, and to shops for supplies, was almost impassable by the next morning. I certainly wasn&amp;#039;t willing to try my luck, in a 2WD van, for the next 3 days, so we were effectively trapped at home with no power, and the estimated restore time kept being extended as more and more was known of the severity of the damage to the overhead power distribution system. Many, many lines and poles were down. Crews of engineers, and materials, specialized vehicles, helicopters were mobilized from the mainland and began to arrive in the following days. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The Shetland Power Outage of December 2022&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_shetland_power_outage_of_december_2022&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;368-2506&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;short_sharp_weather_event_long_power_failure&quot;&gt;Short sharp weather event, long power failure&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The damage occurred on Monday afternoon, after approx 4 hours of heavy snowfall. 
&lt;/p&gt;

&lt;p&gt;
Our power was reconnected at 00:20 on Sunday morning, almost 6 days later. 
&lt;/p&gt;

&lt;p&gt;
In that time we had managed to get new food and other supplies on Thursday and Friday, as the road became passable, and the power remained off.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; We maintained a continuous online internet and mobile phone connection&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; we had lighting from headtorches&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; heat from multi-fuel (Morso Squirrel) stoves&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; cooking from propane gas cooker. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The water supply remained on throughout. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Food supplies were initially limited for the first few days&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
“Monday is shopping day” and we usually run-down the stores during the week and replenish the larder on a Monday. The “event” on Monday prevented the usual weekly shop.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; We don&amp;#039;t keep any emergency supplies of food. &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Short sharp weather event, long power failure&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;short_sharp_weather_event_long_power_failure&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2507-3401&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;things_that_were_helpful&quot;&gt;Things that were helpful&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; a supply of pre-charged 12V Sealed Lead Acid batteries. This allows for re-charging of USB devices (phones, headtorches, USB Battery-power-banks etc) when paired with a 12V powered USB hub, or using a quickly home-made 12V → 5V regulator (7805).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; a battery powered 4G MiFi router with an appropriate (EE) SIM card (PAYG, with plenty of Data Credit). This allows continuous connection to internet - important to keep in touch with friends, and to keep abreast of news and announcements about the progress of power repairs.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Petzel headtorches always close at hand. We each have Petzl “Actik Core” headtorches with USB rechargable battery packs. The batteries can be replaced with 3 x AAA batteries if necessary.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; a supply of fuel for the Morso Squirrel stoves. This was a recent delivery of £300 worth of softwood logs. At other times of the year we may not have a stock of firewood. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; a source of cooking and water heating that doesn&amp;#039;t rely on electricity. Propane (Calor) gas powered kitchen cooker, common in rural areas.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Things that were helpful&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;things_that_were_helpful&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3402-4482&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;things_that_could_have_been_better_with_pre-planning&quot;&gt;Things that could have been better, with pre-planning&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Food - have a dedicated supply of long-shelf-life food items, that can be relied on even if the normal food supply is at a low ebb. Keeping a slightly larger “normal” larder, by allowing a reserve to build up week by week, without going mad would also be of assistance, especially for items that wouldn&amp;#039;t be suitable for the “emergency long-shelf-life” food cache.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Hygiene and health - have a supply of toilet paper, wet wipes, pain killers, simple first aid items, batteries, candles, matches, lighters. Keep these in one box where they will only be used “in an emergency”.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Water. While this event did not involve a loss of mains water for us, it did affect water supplies elsewhere. In any future event it is not unrealistic to imagine a loss of supply. It would be worthwhile having a stock of water, for drinking, cooking, hygiene etc. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A better form of 12V power - larger capacity batteries, that were known to be fully charged. A 100Ah Leisure battery and a number of 24Ah Sealed Lead acid battery would be longer lasting and provide more confidence, than a random group of “condition unknown” smaller (3Ah?) SLABs.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A pre-prepared source of fuel for the Morso stoves. Wood is useful, but in general is not likely to be kept in sufficent quantity. A better option are smokeless Ovoids. Once the stoves are lit with Ovoids they can be kept burning continuously, 24/7 for days or weeks at a time, and only require 2 daily top ups of new fuel. One bag of ovoids, with care, can fuel 2 stoves for 2 days. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Lighting - a supply of tea-lights and candles would have allowed background room-lighting to supplement the head torches and make the long dark winter evenings more enjoyable. Perhaps a system of 12V powered LED lighting would be even better.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Batteries - have a supply of AA, AAA and CR123 batteries for torches, radios etc &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Battery powered AM/FM radio for entertainment without relying on internet/streaming.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Power for ADSL router to allow internet connection without relying on a 4G mobile phone signal. It is possible the ADSL connection may not be available, depending on the state of the power at the local exchange. Having a choice between 4G and ADSL would allow options, though.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Things that could have been better, with pre-planning&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;things_that_could_have_been_better_with_pre-planning&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4483-6781&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;thoughts_for_the_future&quot;&gt;Thoughts for the future&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Having experienced a 6-day power outage following a single afternoon of heavy snow, it&amp;#039;s now easy to imagine a much longer storm, causing much more widespread damage, and leading to a much longer period without power, and without access to the “outside world”.
&lt;/p&gt;

&lt;p&gt;
I am tending to the opinion that it is worthwhile planning for a period of 14 days. Being self-sufficient, at home, with no external assistance, for 2 weeks might never be needed, but the security and confidence of building up this level of preparedness, is liberating. It also means that we won&amp;#039;t be a burden on any support services, allowing them to concentrate on the more vulnerable and less well prepared. We can also provide assistance to others if we have a surplus of stores, supplies, tools, batteries, etc.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Thoughts for the future&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;thoughts_for_the_future&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;6782-7597&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;becoming_a_prepper&quot;&gt;Becoming a Prepper&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I&amp;#039;ve often read online prepper websites and watched Prepper You Tube videos. Many of them have a few sensible points, but often are aimed at a level of “disaster survival” that seemed of little relevance. 
&lt;/p&gt;

&lt;p&gt;
Now, after, a simple snow storm (admittedly of a peculiar type of very wet, very heavy , icy snow) led to being isolated at home for 6 days with no power, it is EASY to imagine a much worse, or longer lasting, event requiring off-grid living, at home, for a longer time period.
&lt;/p&gt;

&lt;p&gt;
I see the benefit of making some simple pre-preperations. Not to survive “the Zombie Apocalypse” or “TEOTWAWKI”, but just a failure of our utility supplies - Electricity, Water or the blockage of transport routes by snow, ice, landslide etc. 
&lt;/p&gt;

&lt;p&gt;
If you are going to lay in stores of materials, consumables, food and water, then it&amp;#039;s probably worth trying to aim for 14 days of self-sufficiency. Even if not for “natural disaster” - perhaps sudden unforseen job loss, lack of accessible cash/online payment - having enough at home to live for 2 weeks relieves some of the stress. 
&lt;/p&gt;

&lt;p&gt;
COVID, with the orders to stay at home, for shops to either be told to close, or for panic buying to rapidly empty the shelves has also shown that unusual situations can occur without warning, and the ability to sit-tight for 2 weeks allows time for a degree of normality to be restored, and shops to be restocked.
&lt;/p&gt;

&lt;p&gt;
More examples come to mind as I think of scenarios to prepare for. Until recently they would appear fanciful, but now, post COVID with climate change starting to impact even the temperate UK weather systems, it&amp;#039;s perhaps not hysterical to start planning and prepping for future events.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ll start adding more pages to the WiKi as I explore Prepping as a project, with the aim of achieving a 14 day autonomy over the course of the next few months.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Becoming a Prepper&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;becoming_a_prepper&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;7598-9458&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit8&quot; id=&quot;first_ideas&quot;&gt;First Ideas&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Some initial thoughts on what might be useful to gather in preparation&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Based on the experience from December 2022 6-day power failure. 
&lt;/p&gt;

&lt;p&gt;
Some items are already available, other things are newly listed after considering the experience and the intention to extend the autonomy period to 14 days, and including water to the requirement.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;First Ideas&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;first_ideas&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;9459-9825&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;hygiene_consumables_household&quot;&gt;Hygiene / Consumables / Household&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Toilet Rolls → 9 pack&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Candles → 4 per day → 56 → 6 x 10 pack&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tea Lights → 4 per day → 56 → 2 x 50 pack = 100&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Batteries&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; AA → 2 x 12&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; AAA → 2 x 16&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; CR123 → 2 x 4&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Matches → 4 boxes “Cooks Matches”&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Lighters → 4 x BIC/Clipper&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Medication&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Paracetamol&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ibuprofen&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Aspirin&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Prescription?&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; First Aid - plasters/dressings etc&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Wet wipes / hand sanitzer&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Hygiene \/ Consumables \/ Household&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hygiene_consumables_household&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;9826-10298&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;fuel&quot;&gt;Fuel&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
In addition to normal household supplies
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Stoves : Ovoids → 7 bags&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Firelighters → 4 boxes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Propane → 1 x 13kg&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Jet Boil → camping gas&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Fuel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fuel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;10299-10469&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;v_batteries_and_usb_power&quot;&gt;12V batteries and USB power&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 100Ah Leisure Battery x 1&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 24Ah SLAB x 3&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 3Ah &amp;amp; 7Ah &amp;amp; 18Ah SLAB - various&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 12V → USB Charging device(s)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Solar Panel for recharging batteries&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; USB Power Banks&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;12V batteries and USB power&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;v_batteries_and_usb_power&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;10470-10691&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;lighting&quot;&gt;Lighting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; personal headtorches&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; personal pocket torches&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; candle-lantern(s)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 12V LED lighting&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lighting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lighting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;10692-10810&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;food&quot;&gt;Food&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pasta → 3 x 1kg (75g per person per meal → 2 x 14 x 75g → 2.1kg)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Rice → 3 x 1kg&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Rice and Pasta combined, and with pulses, makes a meal with complete protein&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Dried Noodles&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Porrige Oats (can be made with plain water if milk not available, or dried milk powder?)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tins&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Soup x 28&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pulses x 14&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Fish x 7&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Jars&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pesto x 4&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Curry Paste x 4&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Baking Goods&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Bread Flour&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Dried Yeast&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Drinks&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Coffee&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tea Bags&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Dried Milk&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Sundries&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Olive Oil&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Stock Cubes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Marmite&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;shelf_life_esitmate&quot;&gt;Shelf Life esitmate&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tins&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pulses : 4 year&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Soup : 2 year&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Fish : 3 year&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Jars&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pesto : 3 year&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Curry Paste : 3 year&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Dried Goods&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Pasta : 2 years&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Rice : 2 years&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Food&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;food&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;10811-11609&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;water&quot;&gt;Water&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Aim for 1 gallon per person per day
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2 persons x 14 day x 1 gallon → 28 gallons →  6 x 5 gallon jerry cans.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Water&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;water&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;11610-11743&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;animals&quot;&gt;Animals&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Dog food → 15kg bag&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Animals&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;animals&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;11744-11792&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;communications&quot;&gt;Communications&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Mobile Phones with choice of SIM cards → EE or Vodafone&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 4G battery powered MiFi router&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 12V DC powered ADSL router/Wifi Access point&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Old DTMF manual dial telephone&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Investigate Ham Radio HF Email &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Marine Band VHF radio for Coastguard&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 22/12/22 09:42&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Communications&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;communications&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;11793-12122&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:prepping&amp;amp;do=showtag&amp;amp;tag=prepping&quot; class=&quot;wikilink1&quot; title=&quot;tag:prepping&quot; rel=&quot;tag&quot;&gt;prepping&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;12123-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>Typewriters</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:stationery:typewriters</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:stationery:start&quot; class=&quot;wikilink1&quot; title=&quot;public:miscellany:stationery:start&quot; data-wiki-id=&quot;public:miscellany:stationery:start&quot;&gt;Stationery&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;typewriters&quot;&gt;Typewriters&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I&amp;#039;m just starting ( 23/02/25 16:45 GMT ) to add info about my typewriters&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; I have been sadly neglecting these machines for a couple of years and now I&amp;#039;m getting them back into more regular use&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; I&amp;#039;ve ordered a couple of new ribbons since they haven&amp;#039;t been changed for many years&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; More information and photos will follow….&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Typewriters&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;typewriters&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-383&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;currently_owned_and_used&quot;&gt;Currently owned and used&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Imperial 200n&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Olympia SM2&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Currently owned and used&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;currently_owned_and_used&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;384-457&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;photos&quot;&gt;Photos&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Amiscellany%3Astationery%3Atypewriters&amp;amp;media=public:stationery:img_20250223_162741.jpg&quot; class=&quot;media&quot; title=&quot;public:stationery:img_20250223_162741.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=22b0cc&amp;amp;media=public:stationery:img_20250223_162741.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Amiscellany%3Astationery%3Atypewriters&amp;amp;media=public:stationery:img_20250223_161500.jpg&quot; class=&quot;media&quot; title=&quot;public:stationery:img_20250223_161500.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=7958df&amp;amp;media=public:stationery:img_20250223_161500.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Amiscellany%3Astationery%3Atypewriters&amp;amp;media=public:stationery:img_20250223_162731.jpg&quot; class=&quot;media&quot; title=&quot;public:stationery:img_20250223_162731.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=93f307&amp;amp;media=public:stationery:img_20250223_162731.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 23/02/25 16:38 GMT&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Photos&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;photos&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;458-685&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;686-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>Watchwinder</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:watches:watchwinder_python_code</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:watches:start&quot; class=&quot;wikilink1&quot; title=&quot;public:miscellany:watches:start&quot; data-wiki-id=&quot;public:miscellany:watches:start&quot;&gt;Watches&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;watchwinder&quot;&gt;Watchwinder&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Watchwinder&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;watchwinder&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-44&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;home_brew_winder&quot;&gt;Home Brew Winder&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I built a simple watch-winder to keep automatic watches fully wound when not being worn. Mainly as a small project to play with a &lt;a href=&quot;https://store.micropython.org/product/PYBv1.1H&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://store.micropython.org/product/PYBv1.1H&quot; rel=&quot;ugc nofollow noopener&quot;&gt;pyBoard&lt;/a&gt; and a servo motor.
&lt;/p&gt;

&lt;p&gt;
A short piece of microPython makes the servo turn, first one direction, then then other, then a pause, at a speed that makes sure a watch is fully wound overnight. The speed depends on the required number of turns to achieve full-wind, which depends on the watch movement, and whether the movement winds in one or other, or both, rotational directions.
&lt;/p&gt;

&lt;p&gt;
The watch is placed in a plastic box attached to the servo motor and the motor is simple clamped in a &lt;code&gt;panavise&lt;/code&gt;, with the axis of the servo at about 45°
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Home Brew Winder&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;home_brew_winder&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;45-793&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;photos&quot;&gt;Photos&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_start&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;&lt;div class=&quot;wrap_col2 wrap__dark plugin_wrap&quot;&gt;
&lt;p&gt;
&lt;a href=&quot;https://docs.micropython.org/en/latest/pyboard/quickref.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://docs.micropython.org/en/latest/pyboard/quickref.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;pyBoard Quick Reference&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Amiscellany%3Awatches%3Awatchwinder_python_code&amp;amp;media=public:watches:pyboard.jpg&quot; class=&quot;media&quot; title=&quot;public:watches:pyboard.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=300&amp;amp;tok=339642&amp;amp;media=public:watches:pyboard.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Amiscellany%3Awatches%3Awatchwinder_python_code&amp;amp;media=public:watches:pybv11-pinout.jpg&quot; class=&quot;media&quot; title=&quot;public:watches:pybv11-pinout.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=300&amp;amp;tok=da4bc7&amp;amp;media=public:watches:pybv11-pinout.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Amiscellany%3Awatches%3Awatchwinder_python_code&amp;amp;media=public:watches:winder_1.jpg&quot; class=&quot;media&quot; title=&quot;public:watches:winder_1.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=300&amp;amp;tok=5deab8&amp;amp;media=public:watches:winder_1.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Amiscellany%3Awatches%3Awatchwinder_python_code&amp;amp;media=public:watches:winder_2.jpg&quot; class=&quot;media&quot; title=&quot;public:watches:winder_2.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=300&amp;amp;tok=85ec50&amp;amp;media=public:watches:winder_2.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Amiscellany%3Awatches%3Awatchwinder_python_code&amp;amp;media=public:watches:winder_3.jpg&quot; class=&quot;media&quot; title=&quot;public:watches:winder_3.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=300&amp;amp;tok=224def&amp;amp;media=public:watches:winder_3.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Amiscellany%3Awatches%3Awatchwinder_python_code&amp;amp;media=public:watches:winder_4.jpg&quot; class=&quot;media&quot; title=&quot;public:watches:winder_4.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=300&amp;amp;tok=3a7fef&amp;amp;media=public:watches:winder_4.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;plugin_wrap_end&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;0-&amp;quot;} --&gt;
&lt;p&gt;
&lt;span class=&quot;todo&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;todocheckbox&quot; data-index=&quot;0&quot; data-date=&quot;1767088507&quot; data-pageid=&quot;public:miscellany:watches:watchwinder_python_code&quot; data-strikethrough=&quot;1&quot; checked=&quot;checked&quot; /&gt; &lt;span class=&quot;todouser&quot;&gt;[✓ John Pumford-Green, 2025-03-09]&lt;/span&gt;&lt;span class=&quot;todotext clickabletodo todohlght&quot;&gt;&lt;del&gt;&lt;span class=&quot;todoinnertext&quot;&gt;add some photos&lt;/span&gt;&lt;/del&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Photos&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;photos&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;794-1210&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;python_code&quot;&gt;Python Code&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
microPython  code for Pyboard to control continuous rotation servo.
&lt;/p&gt;
&lt;pre class=&quot;code python&quot;&gt;&lt;span class=&quot;co1&quot;&gt;# main.py -- put your code here!&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; pyb
&amp;nbsp;
servo1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; pyb.&lt;span class=&quot;me1&quot;&gt;Servo&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# LED colours&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# red flash = motor stopped&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# green on = manual stop for 120 seconds&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# yellow on/flash = motor running&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# blue flash = 5 seconds before a change of state&lt;/span&gt;
&amp;nbsp;
ledr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; pyb.&lt;span class=&quot;me1&quot;&gt;LED&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
ledg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; pyb.&lt;span class=&quot;me1&quot;&gt;LED&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
ledy &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; pyb.&lt;span class=&quot;me1&quot;&gt;LED&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
ledb &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; pyb.&lt;span class=&quot;me1&quot;&gt;LED&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# servo speeds to achieve approx 6 rpm in either direction.&lt;/span&gt;
ccw &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;
cw &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;
stop &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# 12 minute cycle :&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# observed turns complete per stage:&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# 2 min CW = ~11 turns&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# 4 min stop&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# 2 min CCW = ~ 12 turns&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# 4 min stop&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# 23 turns / 12 min = 115 turns / hour&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# ETA 2836-2 requires 650 turns / day for full winding &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# this would take 5.6 hours on winder per day to guarantee full wind.&lt;/span&gt;
&amp;nbsp;
period &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;120&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;# seconds&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# turn LEDs off (unneccesary?)&lt;/span&gt;
ledr.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
ledg.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
ledy.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
ledb.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# interrupt function to allow changing/removing watch&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; stop_servo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;# red LED on at start of interruption&lt;/span&gt;
	ledr.&lt;span class=&quot;me1&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	ledy.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;# turn off any flashing LEDs during interruption&lt;/span&gt;
	tim4.&lt;span class=&quot;me1&quot;&gt;callback&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;None&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;# flash blue LED to signal stop imminent&lt;/span&gt;
	flash_blue&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;# stop servo&lt;/span&gt;
	servo1.&lt;span class=&quot;me1&quot;&gt;speed&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;# red LED off and green LED on to indicate &amp;quot;safe to proceed&amp;quot;&lt;/span&gt;
	ledr.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	ledg.&lt;span class=&quot;me1&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;# pause for 2 minute&lt;/span&gt;
	pyb.&lt;span class=&quot;me1&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;120&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;# flash blue LED to signal re-start imminent&lt;/span&gt;
	flash_blue&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;# green LED off to indicate end of interruption.&lt;/span&gt;
	ledg.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
	pyb.&lt;span class=&quot;me1&quot;&gt;hard_reset&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;# after resumption from interrupt the next stage will usually be a &lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;# &amp;quot;stop&amp;quot; period, assuming the interrupt occurred during a &amp;quot;run&amp;quot; period&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;# perhaps need to look at the best way of resuming? or even quit()&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;# at the end of the stop_servo() interrupt and then manually reset via the &lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;# RST button?&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;# main programme resumes where it left off....&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; cycle_led&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
	ledb.&lt;span class=&quot;me1&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	pyb.&lt;span class=&quot;me1&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	ledy.&lt;span class=&quot;me1&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	pyb.&lt;span class=&quot;me1&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	ledg.&lt;span class=&quot;me1&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	pyb.&lt;span class=&quot;me1&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	ledr.&lt;span class=&quot;me1&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	pyb.&lt;span class=&quot;me1&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	ledb.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	ledy.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	ledg.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	ledr.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; flash_blue&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
	t &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; t &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;:
&amp;nbsp;
		ledb.&lt;span class=&quot;me1&quot;&gt;toggle&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
		pyb.&lt;span class=&quot;me1&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
		t +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
	&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; rotate_cw&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;# solid yellow LED when going CW&lt;/span&gt;
	ledy.&lt;span class=&quot;me1&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	servo1.&lt;span class=&quot;me1&quot;&gt;speed&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cw&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	pyb.&lt;span class=&quot;me1&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p * &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	flash_blue&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	ledy.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; rotate_ccw&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;# flash yellow LED when going CCW&lt;/span&gt;
	tim4.&lt;span class=&quot;me1&quot;&gt;callback&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt; t: ledy.&lt;span class=&quot;me1&quot;&gt;toggle&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	servo1.&lt;span class=&quot;me1&quot;&gt;speed&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ccw&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	pyb.&lt;span class=&quot;me1&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p * &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	flash_blue&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	tim4.&lt;span class=&quot;me1&quot;&gt;callback&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;None&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	ledy.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
	&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pause&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
	&lt;span class=&quot;co1&quot;&gt;# flash red LED during motor pause period&lt;/span&gt;
	tim4.&lt;span class=&quot;me1&quot;&gt;callback&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt; t: ledr.&lt;span class=&quot;me1&quot;&gt;toggle&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	servo1.&lt;span class=&quot;me1&quot;&gt;speed&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;stop&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	pyb.&lt;span class=&quot;me1&quot;&gt;delay&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p * &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	flash_blue&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	tim4.&lt;span class=&quot;me1&quot;&gt;callback&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;None&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
	ledr.&lt;span class=&quot;me1&quot;&gt;off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
	&lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# USR on-board switch used to pause running to allow&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# watch to be removed / changed&lt;/span&gt;
sw &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; pyb.&lt;span class=&quot;me1&quot;&gt;Switch&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# callback to run the function that pauses the operation&lt;/span&gt;
sw.&lt;span class=&quot;me1&quot;&gt;callback&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;stop_servo&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#timer to flash LEDs&lt;/span&gt;
tim4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; pyb.&lt;span class=&quot;me1&quot;&gt;Timer&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
cycle_led&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# the main loop&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;:
&amp;nbsp;
		rotate_cw&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;period&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
		pause&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; * period&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
		rotate_ccw&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;period&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
		pause&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; * period&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Python Code&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;python_code&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1211-4284&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;page_info&quot;&gt;Page Info&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Page created Sun May 22 00:52:45 2022 by John Pumford-Green
&lt;/p&gt;

&lt;p&gt;
Page last updated: 30/12/25 09:55 GMT
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:watch&amp;amp;do=showtag&amp;amp;tag=watch&quot; class=&quot;wikilink1&quot; title=&quot;tag:watch&quot; rel=&quot;tag&quot;&gt;watch&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:python&amp;amp;do=showtag&amp;amp;tag=python&quot; class=&quot;wikilink1&quot; title=&quot;tag:python&quot; rel=&quot;tag&quot;&gt;python&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Page Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;page_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4285-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>CRT SS9900</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:crt_ss9900</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:start&quot; data-wiki-id=&quot;public:radio:radio_database:start&quot;&gt;Rig and Key List&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;crt_ss9900&quot;&gt;CRT SS9900&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Multi-Mode 10m/11m/12m &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CRT SS9900&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;crt_ss9900&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-72&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;background&quot;&gt;Background&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I wanted a mobile 10m radio for use on 10m FM, and occasionally SSB, to try and re-capture the fun I had in the early days of being a ham (1983). Looking around I found a lot of choice of radios covering 12m and 10m amateur bands, and (of course) all the space in between containing the 11m/CB bands.
&lt;/p&gt;

&lt;p&gt;
I bought a CRT9900 which seemed to offer the best versatility - it&amp;#039;s more like a ham radio than a channelized CB.
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s hardly been used - I don&amp;#039;t think I&amp;#039;ve ever had a QSO with it yet - so I now intend to make a concerted effort to get some use from it,  and even looking at 11m when 10m is moribund.
&lt;/p&gt;

&lt;p&gt;
Propagation conditions should be improving as Solar Cycle 25 peaks, and (writing this in early May 2023) the summer Sporadic-E season should also bring some inter-Europe propagation too.
&lt;/p&gt;

&lt;p&gt;
p.s. I even have a CB callsign from the &lt;a href=&quot;https://charlietangodxgroup.forumotion.com/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://charlietangodxgroup.forumotion.com/&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Charlie Tango&lt;/a&gt; group : “108 CT 2182”  (108 = Scotland and I asked for 2182 as a nod to SSB marine radio) 
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://charlietangodxgroup.forumotion.com/t147-world-ct-call-signs-92-div-to-137-div&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://charlietangodxgroup.forumotion.com/t147-world-ct-call-signs-92-div-to-137-div&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://charlietangodxgroup.forumotion.com/t147-world-ct-call-signs-92-div-to-137-div&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Background&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;background&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;73-1176&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;user_manual&quot;&gt;User Manual&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:manual_crt_ss9900_eng.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:manual_crt_ss9900_eng.pdf (1.6 MB)&quot;&gt;manual_crt_ss9900_eng.pdf&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;User Manual&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;user_manual&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1177-1264&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;configurations&quot;&gt;Configurations&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;table sectionedit5&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Date&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Config files&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt; A &lt;/th&gt;&lt;th class=&quot;col3&quot;&gt; B &lt;/th&gt;&lt;th class=&quot;col4&quot;&gt; C &lt;/th&gt;&lt;th class=&quot;col5&quot;&gt; D &lt;/th&gt;&lt;th class=&quot;col6&quot;&gt; E &lt;/th&gt;&lt;th class=&quot;col7&quot;&gt; F &lt;/th&gt;&lt;th class=&quot;col8&quot;&gt; G &lt;/th&gt;&lt;th class=&quot;col9&quot;&gt; H &lt;/th&gt;&lt;th class=&quot;col10&quot;&gt; I &lt;/th&gt;&lt;th class=&quot;col11&quot;&gt; J &lt;/th&gt;&lt;th class=&quot;col12&quot;&gt; Comments &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 05/05/23 &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;  &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:ss9900_050523.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:radio:radio_database:ss9900_050523.zip (7.6 KB)&quot;&gt;ss9900_050523.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; S.S.Low &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; S.Low &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; Low  &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; Mid EU &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; High &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; S.High &lt;/td&gt;&lt;td class=&quot;col8&quot;&gt; UK40 &lt;/td&gt;&lt;td class=&quot;col9&quot;&gt; 10m? &lt;/td&gt;&lt;td class=&quot;col10&quot;&gt; 10m? &lt;/td&gt;&lt;td class=&quot;col11&quot;&gt; 10m? &lt;/td&gt;&lt;td class=&quot;col12 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 09/05/23 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:ss9900_090523.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:radio:radio_database:ss9900_090523.zip (11.7 KB)&quot;&gt;ss9900_090523.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; S.S.Low &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; S.Low &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; Low  &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; Mid EU &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; High &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; S.High &lt;/td&gt;&lt;td class=&quot;col8 leftalign&quot;&gt; UK40   &lt;/td&gt;&lt;td class=&quot;col9&quot;&gt; 28.200 - 28.590 &lt;/td&gt;&lt;td class=&quot;col10&quot;&gt; 28.910 - 29.300 &lt;/td&gt;&lt;td class=&quot;col11&quot;&gt; 29.310 - 29.700 &lt;/td&gt;&lt;td class=&quot;col12&quot;&gt; LSB mode added &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1293-1713&amp;quot;} --&gt;
&lt;p&gt;
Last Update : 04/06/26 07:39 BST
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configurations&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configurations&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1265-1741&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CB Channels - All Freeband&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Acrt_ss9900&amp;amp;media=public:radio:radio_database:freeband_cb.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:freeband_cb.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=d89664&amp;amp;media=public:radio:radio_database:freeband_cb.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; CB Channels - Legal UK&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Acrt_ss9900&amp;amp;media=public:radio:radio_database:uk_cb.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:uk_cb.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=a7af89&amp;amp;media=public:radio:radio_database:uk_cb.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 05/05/23 09:59&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1742-1984&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;further_information1&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:10m&amp;amp;do=showtag&amp;amp;tag=10m&quot; class=&quot;wikilink1&quot; title=&quot;tag:10m&quot; rel=&quot;tag&quot;&gt;10m&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:11m&amp;amp;do=showtag&amp;amp;tag=11m&quot; class=&quot;wikilink1&quot; title=&quot;tag:11m&quot; rel=&quot;tag&quot;&gt;11m&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:cb&amp;amp;do=showtag&amp;amp;tag=cb&quot; class=&quot;wikilink1&quot; title=&quot;tag:cb&quot; rel=&quot;tag&quot;&gt;cb&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:ss9900&amp;amp;do=showtag&amp;amp;tag=ss9900&quot; class=&quot;wikilink1&quot; title=&quot;tag:ss9900&quot; rel=&quot;tag&quot;&gt;ss9900&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1985-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>Yaesu FT-2980</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:ft-2980e</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:start&quot; data-wiki-id=&quot;public:radio:radio_database:start&quot;&gt;Rig and Key List&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;yaesu_ft-2980&quot;&gt;Yaesu FT-2980&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; High Power 2m Mobile &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Yaesu FT-2980&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;yaesu_ft-2980&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-74&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;purchase_details&quot;&gt;Purchase Details&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Purchase Date : April 2024&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Bought From : Martin Lynch&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Purchase Price : £149&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Serial Number : 3FB10670&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Aft-2980e&amp;amp;media=public:radio:radio_database:ft-2980r.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:ft-2980r.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=a387ec&amp;amp;media=public:radio:radio_database:ft-2980r.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Purchase Details&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;purchase_details&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;75-276&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;power_levels&quot;&gt;Power Levels&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;table sectionedit4&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Low L1&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;5W&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Low L2&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;10W&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Low L3&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;30W&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;High&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;code&gt;80W&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;303-367&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Power Levels&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;power_levels&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;277-369&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;documentation&quot;&gt;Documentation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;table sectionedit6&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; User Manual &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:ft-2980r_om_eng_eh039n111.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:ft-2980r_om_eng_eh039n111.pdf (6.8 MB)&quot;&gt;ft-2980r_om_eng_eh039n111.pdf&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;397-479&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Documentation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;documentation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;370-479&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;mods_etc&quot;&gt;Mods etc&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;change_power_levels&quot;&gt;Change power levels&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://youtu.be/P2lYjuFxAX4?si=c-7QWSaT9zeYqBG8&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://youtu.be/P2lYjuFxAX4?si=c-7QWSaT9zeYqBG8&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://youtu.be/P2lYjuFxAX4?si=c-7QWSaT9zeYqBG8&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; via hidden calibration menu &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; VFO Mode&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Turn OFF&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Hold &lt;kbd class=&quot;__keyboard&quot;&gt;DW&lt;/kbd&gt; and &lt;kbd class=&quot;__keyboard&quot;&gt;MW&lt;/kbd&gt; and power ON&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Rotate TUNE knob anticlockwise to select L1&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Press &lt;kbd class=&quot;__keyboard&quot;&gt;MW&lt;/kbd&gt; to tune L1.. Transmit and turn knob to set wanted power&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Press &lt;kbd class=&quot;__keyboard&quot;&gt;MW&lt;/kbd&gt; to fix new value&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Rotate TUNE knob to select L2…. etc…&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; When finished press &lt;kbd class=&quot;__keyboard&quot;&gt;DW&lt;/kbd&gt; to store new values and exit Calibration menu&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;80W&lt;/code&gt; &lt;strong&gt;High&lt;/strong&gt; is a bit too much and would rarely be used&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Check of factory settings:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;L1&lt;/code&gt; = &lt;code&gt;4A&lt;/code&gt; → 4W&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;L2&lt;/code&gt; = &lt;code&gt;5F&lt;/code&gt; → 9W&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;L3&lt;/code&gt; = &lt;code&gt;98&lt;/code&gt; → 27W&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;HP&lt;/code&gt; = &lt;code&gt;EE&lt;/code&gt; → ?? (Power not measured)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Changed to:&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;L1&lt;/code&gt; = &lt;code&gt;40&lt;/code&gt; → 2.5W&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;L2&lt;/code&gt; = &lt;code&gt;62&lt;/code&gt; → 10W&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;L3&lt;/code&gt; = &lt;code&gt;93&lt;/code&gt; → 25W&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;HP&lt;/code&gt; = &lt;code&gt;C5&lt;/code&gt; → 50W&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; 08/04/25 : New Values&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;L1&lt;/code&gt; = &lt;code&gt;35&lt;/code&gt; → 1W&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;L2&lt;/code&gt; = &lt;code&gt;50&lt;/code&gt; → 5W&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;L3&lt;/code&gt; = &lt;code&gt;86&lt;/code&gt; → 20W&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;HP&lt;/code&gt; = &lt;code&gt;C4&lt;/code&gt; → 50W&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 02/05/24 07:08 BST&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mods etc&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mods_etc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;480-1576&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:ft2980&amp;amp;do=showtag&amp;amp;tag=ft2980&quot; class=&quot;wikilink1&quot; title=&quot;tag:ft2980&quot; rel=&quot;tag&quot;&gt;ft2980&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;1577-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>Yaesu FT-891</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:ft_891</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:start&quot; data-wiki-id=&quot;public:radio:radio_database:start&quot;&gt;Rig and Key List&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;yaesu_ft-891&quot;&gt;Yaesu FT-891&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; HF/50MHz all mode &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Yaesu FT-891&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;yaesu_ft-891&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-69&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;information&quot;&gt;Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Date : March 2025&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Purchased from : Martin Lynch &lt;a href=&quot;https://www.hamradio.co.uk/amateur-radio/mobile-radio/yaesu-mobile-radio/yaesu-ft-891-hf-50mhz-100w-all-mode-transceiver-pd-6839&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.hamradio.co.uk/amateur-radio/mobile-radio/yaesu-mobile-radio/yaesu-ft-891-hf-50mhz-100w-all-mode-transceiver-pd-6839&quot; rel=&quot;ugc nofollow noopener&quot;&gt; FT-891 &lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Price : £639&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; plus Wideband TX Mod : £25&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Firmware Versions&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Main : &lt;code&gt;V01-10&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; DSP : &lt;code&gt;V02-05&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; LCD : &lt;code&gt;V01-01&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; These appear to be the current, most up to date versions&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;70-500&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;ssb_tx_eq&quot;&gt;SSB TX EQ&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I&amp;#039;m not naturally a &amp;#039;phone operator and avoid playing with audio settings as much as possible. I prefer simple “communications quality” audio when I use SSB. As the FT-891 is intended to be my “phone mode radio” and I&amp;#039;ve done some initial adjustments to try and achieve a clean, basic communications-quality setup.
&lt;/p&gt;

&lt;p&gt;
From what I can work out, the “bandwidth” settings of the EQ refer to Q - the smaller the number the lower the Q and the wider the affected bandwidth. I&amp;#039;m aiming for gentle shaping of the voice band to cut the low-end boomy bass and lift the high end “articulation” so I&amp;#039;ve set a low-Q on each pole of the EQ filter. I&amp;#039;ve set both the non-Compression and the Compression EQ settings to the same values - I want the audio to sound the same with and without the processor. The Mic&amp;#039;s rear “tone” switch can be used to give a slight increase in low frequencies by switching → 1 if I ever feel the need.
&lt;/p&gt;

&lt;p&gt;
Here are the settings I&amp;#039;ve got on the FT-891
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MH31 Fist Mic rear switch → 2&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;deep_menu_settings&quot;&gt;Deep Menu Settings&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;div class=&quot;table sectionedit4&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;11-09 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;SSB TX Bandwidth&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 300-2700 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;16-07 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;SSB Mic Gain&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 15 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1549-1612&amp;quot;} --&gt;
&lt;/div&gt;

&lt;h5 id=&quot;eq_values_for_processor_off&quot;&gt;EQ values for &amp;quot;Processor OFF&amp;quot;&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;div class=&quot;table sectionedit5&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-01 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;EQ 1 Freq &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 300 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-02 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;EQ 1 Level&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; -10 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-03 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;EQ 1 Bandwidth &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 1 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1651-1732&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit6&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-04 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;EQ 2 Freq &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 1200 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-05 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;EQ 2 Level &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 3 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-06 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;EQ 2 Bandwidth &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 1 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1734-1814&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit7&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-07 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;EQ 3 Freq &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 2500 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-08 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;EQ 3 Level &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 10 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-09 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;EQ 3 Bandwidth &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 1 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;1816-1897&amp;quot;} --&gt;
&lt;/div&gt;

&lt;h5 id=&quot;eq_values_for_processor_on&quot;&gt;EQ values for &amp;quot;Processor ON&amp;quot;&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;div class=&quot;table sectionedit8&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-10 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;P-EQ 1 Freq &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 300 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-11 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;P-EQ 1 Level&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; -10 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-12 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;P-EQ 1 Bandwidth &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 1 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table4&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;1935-2022&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit9&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-13 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;P-EQ 2 Freq &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 1200 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-14 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;P-EQ 2 Level &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 3 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-15 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;P-EQ 2 Bandwidth &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 1 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table5&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;2024-2110&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit10&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-16 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;P-EQ 3 Freq &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 2500 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-17 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;P-EQ 3 Level &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 10 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;15-18 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;P-EQ 3 Bandwidth &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 1 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table6&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;2112-2199&amp;quot;} --&gt;
&lt;/div&gt;

&lt;h4 id=&quot;function_menu_settings&quot;&gt;Function Menu settings&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;div class=&quot;table sectionedit11&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;MEQ &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; ON &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;PRC &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; ON &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 30 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table7&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;2235-2265&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SSB TX EQ&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssb_tx_eq&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;501-2265&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;user_manuals&quot;&gt;User Manuals&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Basic Manual &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:ft-891_om_eng_eh065h201_1611a-bo-2.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:ft-891_om_eng_eh065h201_1611a-bo-2.pdf (19.7 MB)&quot;&gt;ft-891_om_eng_eh065h201_1611a-bo-2.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Advanced Manual &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:ft-891_advance_manual_eng_1806-f.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:ft-891_advance_manual_eng_1806-f.pdf (13.6 MB)&quot;&gt;ft-891_advance_manual_eng_1806-f.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 27/03/25 13:21 GMT&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;User Manuals&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;user_manuals&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;2266-2526&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:ft891&amp;amp;do=showtag&amp;amp;tag=ft891&quot; class=&quot;wikilink1&quot; title=&quot;tag:ft891&quot; rel=&quot;tag&quot;&gt;ft891&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;2527-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>GPO Brass Key</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:gpo_brass</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:start&quot; data-wiki-id=&quot;public:radio:radio_database:start&quot;&gt;Rig and Key List&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;gpo_brass_key&quot;&gt;GPO Brass Key&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; An old brass GPO key &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Agpo_brass&amp;amp;media=public:radio:radio_database:img_20230629_091528_7.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:img_20230629_091528_7.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=e80d99&amp;amp;media=public:radio:radio_database:img_20230629_091528_7.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
A bog-standard brass GPO key, I think. I can&amp;#039;t remember where it came from, I picked it up somewhere
along my radio journey. 
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Agpo_brass&amp;amp;media=public:radio:radio_database:img_20230629_091552_1.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:img_20230629_091552_1.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=b8f572&amp;amp;media=public:radio:radio_database:img_20230629_091552_1.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s quite a nice little key, but I find it a bit “hard” - there&amp;#039;s no springiness to the contact closure whatsoever. My HK-708 has a little give, mainly I think due to the spring-loaded ball bearings holding the trunnion rods - but this GPO key is very “rigid”. It sends nicely, once I get used to the feel. I&amp;#039;ve got it adjusted to my liking, and can happily send at 20+ wpm, but I have to be in the right mood to enjoy using it. If I had to use only one key, and it was this one, I&amp;#039;m sure I&amp;#039;d be happy, but while I have a choice I tend to pick something else.
&lt;/p&gt;

&lt;p&gt;
Seeing how different keys feel &lt;strong&gt;does&lt;/strong&gt; make me wonder about obtaining more, just for the interesting variety of sending feel that&amp;#039;s there to be sampled!
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 20/06/23 05:46&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;GPO Brass Key&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;gpo_brass_key&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-1094&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:key&amp;amp;do=showtag&amp;amp;tag=key&quot; class=&quot;wikilink1&quot; title=&quot;tag:key&quot; rel=&quot;tag&quot;&gt;key&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:cw&amp;amp;do=showtag&amp;amp;tag=cw&quot; class=&quot;wikilink1&quot; title=&quot;tag:cw&quot; rel=&quot;tag&quot;&gt;cw&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1095-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 06 Jul 2026 20:50:10 +0000</pubDate>
        </item>
        <item>
            <title>Hi-Mound HK-708 Key</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:himound_708</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:start&quot; data-wiki-id=&quot;public:radio:radio_database:start&quot;&gt;Rig and Key List&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;hi-mound_hk-708_key&quot;&gt;Hi-Mound HK-708 Key&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; My original key from 1982 &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Ahimound_708&amp;amp;media=public:radio:radio_database:img_20230629_091417_5.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:img_20230629_091417_5.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=e608a9&amp;amp;media=public:radio:radio_database:img_20230629_091417_5.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt; My HK-708 in all its glory
&lt;/p&gt;

&lt;p&gt;
I got this key while I was still at school, in around 1982, to use for learning to send CW. It was all I could afford at the time, and must have been quite cheap. I&amp;#039;ve had it, and used it, for over 40 years now, and it&amp;#039;s still my main straight key for most QSOs.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Ahimound_708&amp;amp;media=public:radio:radio_database:img_20230629_091222_762.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:img_20230629_091222_762.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=7bd285&amp;amp;media=public:radio:radio_database:img_20230629_091222_762.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt; Inscribed with my original callsign in about 1983
&lt;/p&gt;

&lt;p&gt;
(and if the recently announced OFCOM licence review goes through unchanged I&amp;#039;ll be allowed to revert to &lt;strong&gt;G4SLV&lt;/strong&gt; again, despite living in Scotland. And I can&amp;#039;t wait to go back to my “real” callsign!)
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Ahimound_708&amp;amp;media=public:radio:radio_database:img_20230629_091435_0.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:img_20230629_091435_0.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=98336e&amp;amp;media=public:radio:radio_database:img_20230629_091435_0.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I didn&amp;#039;t like the original small plastic disc-like knob and at some point, at University in around 1985, I exchanged it for the channel select knob from a Decca Voyager HF SSB Marine transceiver that I had stripped for parts. This is a much larger and heavier aluminium knob which make the key feel much more solid.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Ahimound_708&amp;amp;media=public:radio:radio_database:img_20230629_091402_0.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:img_20230629_091402_0.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=2defd6&amp;amp;media=public:radio:radio_database:img_20230629_091402_0.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt; The replacement Decca Voyager knob mounting details
&lt;/p&gt;

&lt;p&gt;
The axle (trunnion?) ends are supported by ball bearings, tensioned with springs and the key, for all its cheapness, feels nice and smooth. I&amp;#039;ve often toyed with getting rid of it and getting something “proper” (a Marconi 365, a PS213, a Junkers, a NATO, or something modern and handmade and brass) but I keep coming back to it and don&amp;#039;t see the need to replace it. Of course a small collection of keys is still an option, for interest and variety, but not a necessity while I have this one. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Hi-Mound HK-708 Key&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hi-mound_hk-708_key&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-1756&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;modern_version&quot;&gt;Modern version&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I noticed recently that the currently available version of the HK-708 is significantly different to my old one from 40 years ago.
&lt;/p&gt;

&lt;p&gt;
The new one has the same small disc-like knob (which I didn&amp;#039;t like) but the main lever is straight, not curved downwards at the knob and I see that the tension spring is forward of the axle, towards the front of the key, so it must be in compression, rather than tension. Whether that makes a difference to the feel, I don&amp;#039;t know. I also don&amp;#039;t know if the pivots are still ball-bearings or simple bushes. I don&amp;#039;t think I&amp;#039;ll risk getting a new one to keep on hand in case of need!
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 20/06/23 05:45&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Modern version&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;modern_version&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1757-2438&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:key&amp;amp;do=showtag&amp;amp;tag=key&quot; class=&quot;wikilink1&quot; title=&quot;tag:key&quot; rel=&quot;tag&quot;&gt;key&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:cw&amp;amp;do=showtag&amp;amp;tag=cw&quot; class=&quot;wikilink1&quot; title=&quot;tag:cw&quot; rel=&quot;tag&quot;&gt;cw&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2439-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 06 Jul 2026 20:50:34 +0000</pubDate>
        </item>
        <item>
            <title>Icom IC-M710</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:ic-m710</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:start&quot; data-wiki-id=&quot;public:radio:radio_database:start&quot;&gt;Rig and Key List&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;icom_ic-m710&quot;&gt;Icom IC-M710&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Icom IC-M710&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;icom_ic-m710&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-46&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;repairs_mods&quot;&gt;Repairs / Mods&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;no_transmit_output_power&quot;&gt;2023 : No Transmit Output Power.&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Receive functions normally&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; trace to - pre-drive TX buffer amp transistor - Q1 Main PCB&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; No Drive to PA from Main Board&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; TX signal present at base of Q1 but no signal at collector&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Q1 2SC4673 sourced from eBay &lt;a href=&quot;https://www.ebay.co.uk/itm/322993473692&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.ebay.co.uk/itm/322993473692&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.ebay.co.uk/itm/322993473692&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 07/02/23 : Replaced Q1 and full transmit power restored.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Aic-m710&amp;amp;media=public:radio:radio_database:m710_q1.png&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:m710_q1.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=293f46&amp;amp;media=public:radio:radio_database:m710_q1.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Aic-m710&amp;amp;media=public:radio:radio_database:m710_q1_pcb.png&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:m710_q1_pcb.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=469dfa&amp;amp;media=public:radio:radio_database:m710_q1_pcb.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Aic-m710&amp;amp;media=public:radio:radio_database:img_20230207_203238_357_3.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:img_20230207_203238_357_3.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=48dee2&amp;amp;media=public:radio:radio_database:img_20230207_203238_357_3.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Aic-m710&amp;amp;media=public:radio:radio_database:m710_transistor.png&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:m710_transistor.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=a2b0aa&amp;amp;media=public:radio:radio_database:m710_transistor.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Repairs \/ Mods&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;repairs_mods&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;47-692&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;remote_control&quot;&gt;Remote Control&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Python module for &lt;a href=&quot;https://github.com/gm4slv/netradio&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/gm4slv/netradio&quot; rel=&quot;ugc nofollow noopener&quot;&gt;netradio&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Some functions aren&amp;#039;t needed for receive only, and should be removed (ptt_on ptt_off etc.). This module originally came from another project (not “object oriented”) and I had to add lots of &lt;em&gt;self&lt;/em&gt; statements to the needed functions, ignoring the ones not used for “netradio”. I&amp;#039;ll trim it, later, if I remember.
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_ad221df420592d0af135b06aaca2a45d_35&quot;&gt;m710.py code &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_ad221df420592d0af135b06aaca2a45d_35&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:radio_database:ic-m710&amp;amp;codeblock=0&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_py&quot;&gt;m710.py&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&#039;&#039;
Python NMEA Radio Functions module for Icom IC-M710 Marine HF SSB Transceiver
&amp;nbsp;
    Copyright (C) 2015  John Pumford-Green
&amp;nbsp;
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
&amp;nbsp;
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
&amp;nbsp;
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.
&#039;&#039;&#039;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# serial port for Icom IC-M710 Rig Control&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; serial
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
version &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;v0.1&amp;quot;&lt;/span&gt;
&amp;nbsp;
sport &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;/dev/ttyUSB0&#039;&lt;/span&gt;
sbaud &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4800&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#ser = serial.Serial(sport, 4800, timeout=1)&lt;/span&gt;
lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# NMEA Codes&lt;/span&gt;
preamble &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;$PICOA,&amp;quot;&lt;/span&gt;
controller &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;90&amp;quot;&lt;/span&gt;
radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;01&amp;quot;&lt;/span&gt; 
cr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;0d&amp;quot;&lt;/span&gt;
lf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;0a&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# Commands are sent as NMEA private sentences:&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# $PICOA,controller_id,radio_id,command,&amp;lt;parameter&amp;gt;,*HH&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# where HH is the 2 digit ECC value below:&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# The protocol document states that for messages FROM the controller TO the radio&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# the ECC bytes are optional, and may be omitted. This appears to be false information, and&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# the ECC bytes seem to be necessary.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# The ECC checksum, is a two-digit hex value found by XORing the hex values of the characters &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# between &amp;quot;$&amp;quot; and &amp;quot;*&amp;quot; (but not including the $ or *)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# The first part of the message is always:&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# &amp;quot;PICOA,90,01,&amp;quot; and this has an XOR value of (decimal) 112&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# we then XOR this with each character&#039;s decimal ASCII value, in the required command&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# and convert the result to a 2-digit hex value&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; m710&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; model&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; serial.&lt;span class=&quot;me1&quot;&gt;Serial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sport&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sbaud&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; timeout&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;model&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; model
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;model&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; model
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;112&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; c &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; command:
            ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ^ ecc
        hecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;{0:02x}&#039;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ecc&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; hecc
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# we must force the radio into &amp;quot;Remote&amp;quot; mode before sending any other commands.    &lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; remote_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;REMOTE,ON&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;remote_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# we can leave the radio in &amp;quot;Remote&amp;quot; mode for as long as we want to control it remotely&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# but we must close the &amp;quot;Remote&amp;quot; mode when finished. The previous radio settings (channel/power etc) are&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# restored after Remote mode is closed.&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; remote_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;REMOTE,OFF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;co1&quot;&gt;#ser.close()&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;remote_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; ptt_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;TRX,TX&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; ptt_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; ptt_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;TRX,RX&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; ptt_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        fkhz &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_rxfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#fkhz = &amp;quot;%.3f&amp;quot; % (float(f) * 1000)&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; fkhz
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_rxfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_txfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Set freq success&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_rxfreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;RXF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            fkhz &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%.3f&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; fkhz
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_rxfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_txfreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;TXF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            fkhz &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%.3f&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; fkhz
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_txfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;MODE&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; mode
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; mode.&lt;span class=&quot;me1&quot;&gt;upper&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;MODE,&amp;quot;&lt;/span&gt;+mode
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;in set_mode with &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sendStr
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_rxfreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        fmhz &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;
        f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fmhz&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;RXF,&amp;quot;&lt;/span&gt;+f
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_rxfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_txfreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        fmhz &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;
        f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fmhz&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;TXF,&amp;quot;&lt;/span&gt;+f
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_txfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_txpower&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;TXP&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            power &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; power
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; get_txpower&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_txpower&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;TXP,&amp;quot;&lt;/span&gt;+p
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; set_txpower&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_smeter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;SIGM&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            smeter &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; smeter
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_smeter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; speaker_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;SP,ON&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; speaker_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; speaker_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;SP,OFF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; speaker_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; sql_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;SQLC,ON&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; sql_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; sql_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;SQLC,OFF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; sql_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; nb_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NB,ON&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; nb_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; nb_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NB,OFF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; nb_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; dim_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;DIM,ON&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; dim_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; dim_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;DIM,OFF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; dim_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; agc_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AGC,ON&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; agc_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; agc_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AGC,OFF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; agc_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_vol&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AFG&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            vol &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; vol
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; get_vol&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_vol&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AFG,&amp;quot;&lt;/span&gt;+v
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; set_vol&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_rfg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;RFG&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            rf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; rf
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; get_rfg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_att&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_pre&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_rfg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;RFG,&amp;quot;&lt;/span&gt;+v
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; set_rfg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# The message FROM the radio may be corrupted so we do a check on the received ECC versus our calculated cECC&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# from the received characters - which are everything AFTER the &amp;quot;$&amp;quot; and BEFORE the &amp;quot;*&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# starting the ECC calculation at message[1] ignores the &amp;quot;$&amp;quot; and we iterate through the message XORing each &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# character&#039;s ASCII (decimal) value until we have the final cECC which is converted by formatting it&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# into a two-digit hex value. This is then compared to the received (rECC) value from the radio&#039;s message. &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# If they match the message is acceptable and check_ecc() returns True to tx_rx(), &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# otherwise check_ecc() function returns &amp;quot;False&amp;quot; to tx_rx()&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# the True/False value is tested in tx_rx(). &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# If True then tx_rx() returns the incoming string to the calling function&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# otherwise it returns &amp;quot;False&amp;quot;. &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# The calling function then checkS the boolean state of the returned value. &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# If True (ie it has the radio&#039;s message and the ECC was good) the message &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# is sent back to the client. &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# If False the function calls itself again, and attempts to get an error-free reply from the radio, via tx_rx()&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; check_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;message&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; recc&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        i &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        cecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; i &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;message&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
            cecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;message&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ^ cecc
            i +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;  
&amp;nbsp;
        cecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;{0:02x}&#039;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cecc&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; cecc &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; recc:   
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;: 
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;in tx_rx, sendStr =  &amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sendStr
        lock.&lt;span class=&quot;me1&quot;&gt;acquire&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;readline&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; result
        reply &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; reply&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;lower&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        message &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; reply&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;check_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;message&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ecc&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Remote Control&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;remote_control&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;693-14752&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;documentation&quot;&gt;Documentation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:ic-m710.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:ic-m710.pdf (5.7 MB)&quot;&gt;ic-m710.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:ic-m710-sm.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:ic-m710-sm.pdf (8.5 MB)&quot;&gt;ic-m710-sm.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:nmea_instruction_for_the_ic-m710..pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:nmea_instruction_for_the_ic-m710..pdf (2.9 MB)&quot;&gt;nmea_instruction_for_the_ic-m710..pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Documentation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;documentation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;14753-14965&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;page_info&quot;&gt;Page Info&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Page created Tue May 24 23:59:35 2022 by John Pumford-Green
&lt;/p&gt;

&lt;p&gt;
Page last updated: 04/06/26 07:39 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:icm710&amp;amp;do=showtag&amp;amp;tag=icm710&quot; class=&quot;wikilink1&quot; title=&quot;tag:icm710&quot; rel=&quot;tag&quot;&gt;icm710&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Page Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;page_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;14966-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>Icom IC-R75</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:ic-r75</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:start&quot; data-wiki-id=&quot;public:radio:radio_database:start&quot;&gt;Rig and Key List&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;icom_ic-r75&quot;&gt;Icom IC-R75&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Icom IC-R75&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;icom_ic-r75&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-43&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;details&quot;&gt;Details&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Details&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;details&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;44-66&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;repairs_mods&quot;&gt;Repairs / Mods&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; -5V DC/DC converter&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; various capacitor failures&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; “Turn Off” fault - due to overheating of 13V regulator&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Cured by &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Reduce input voltage to 13.8V&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Improve heatsinking of regulator IC to chassis&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Repairs \/ Mods&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;repairs_mods&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;67-322&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;remote_control&quot;&gt;Remote Control&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:netradio.png&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:netradio.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=e5e348&amp;amp;media=public:radio:radio_database:netradio.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; connected to &lt;code&gt;shack&lt;/code&gt; server via RS232&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;shack&lt;/code&gt; server running Python netradio &lt;code&gt;server.py&lt;/code&gt; to give TCP/IP network control&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;laptop&lt;/code&gt; PC running Python netradio &lt;code&gt;client.py&lt;/code&gt; to give user access&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Available controls: &lt;pre class=&quot;code&quot;&gt;gm4slv@laptop:~/Python/PythonProjects/netradio $ python2 client.py
There are currently 1 radios connected.
=================================
Status of Radio 1 (IC-R75)

Frequency : 391.000 kHz
Mode: CW
S-Meter: -113.0dBm
1 : 0
=================================

Please choose a radio

There are currently 1 radios connected.
Radio 1 is IC-R75
Choose a radio number from the list : 1

The available commands are:
lr   : List Radios
sr   : Select the Radio to control
gr   : Get currently selected Radio name
gm   : Get Mode
sm   : Set Mode
gf   : Get Freq
sf   : Set Freq
gs   : Get S-meter
gp   : Get Pre-amp
pon  : Set Pre-amp On
poff : Set Pre-amp Off
gatt : Get Attn
aton : Set Attn On
atoff: Set Attn Off
ga   : Get All (status of all radios)
sync : Sync freq/mode on two radios
log  : Setup background logging to file
h    : Help (show this command list)
q    : quit

IC-R75 &amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; audio via network using &lt;code&gt;PicoPhone&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; running on shack &lt;code&gt;laptop&lt;/code&gt; via &lt;code&gt;Wine&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; running on Windows laptop &lt;em&gt;natively&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Remote control is achieved via a SSH connection to shack &lt;code&gt;laptop&lt;/code&gt; to run the netradio &lt;code&gt;client.py&lt;/code&gt; and the RX audio can be heard via PicoPhone.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Remote Control&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;remote_control&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;323-1830&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;documentation&quot;&gt;Documentation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:icr75_instructionmanual.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:icr75_instructionmanual.pdf (1.7 MB)&quot;&gt;icr75_instructionmanual.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:icom_ic_r75_service_manual.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:icom_ic_r75_service_manual.pdf (2.6 MB)&quot;&gt;icom_ic_r75_service_manual.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Documentation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;documentation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1831-1999&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;further_reading&quot;&gt;Further Reading&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Python code for the remote control at &lt;code&gt;github&lt;/code&gt; &lt;a href=&quot;https://github.com/gm4slv/netradio&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/gm4slv/netradio&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/gm4slv/netradio&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Reading&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_reading&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2000-2122&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;serverpy&quot;&gt;server.py&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_1ee9a7271f5baf96f28df45de6079287_25&quot;&gt;Code.... &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_1ee9a7271f5baf96f28df45de6079287_25&quot;&gt;&lt;pre class=&quot;code python&quot;&gt;&lt;span class=&quot;co1&quot;&gt;#from aor import *&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; icom &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; conf &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;co1&quot;&gt;#from m710 import *&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;readline&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
radios &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#r1 = m710(n4)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#radios.append(n4)&lt;/span&gt;
&amp;nbsp;
r1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Icom&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; a1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cal1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
radios.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#r2 = Icom(n2, a2, cal2)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#radios.append(n2)&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#r3 = Ar7030(n3)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#radios.append(n3)&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; radios
&lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; r1.&lt;span class=&quot;me1&quot;&gt;digi_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    radiolist &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; n &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radios&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        r &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; radios&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        radiolist +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;r + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; radiolist
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    filename &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;commandlog.txt&#039;&lt;/span&gt;
    f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filename&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# a+ is &amp;quot;append to file, create it if it doesn&#039;t exist&amp;quot;&lt;/span&gt;
    timenow &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d/%m/%Y %H:%M:%S&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;gmtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;timenow&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# make an entry for the log by joining the timestamp with the text passed in&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; write_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    filename &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;conlog.txt&#039;&lt;/span&gt;
    f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filename&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# a+ is &amp;quot;append to file, create it if it doesn&#039;t exist&amp;quot;&lt;/span&gt;
    timenow &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d/%m/%Y %H:%M:%S&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;gmtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;timenow&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# make an entry for the log by joining the timestamp with the text passed in&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# The Server&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; ThreadedRequestHandler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;StreamRequestHandler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; handle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;# we find the current thread for the client connection just set up, to&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# use in the log file&lt;/span&gt;
        cur_thread &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;currentThread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# log the new connection details&lt;/span&gt;
        write_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Connect from %s using %s &lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;client_address&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cur_thread.&lt;span class=&quot;me1&quot;&gt;getName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# print to the server&#039;s console the new connection IP address/port&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;client_address&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# loop to handle client requests....&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;:
            &lt;span class=&quot;co1&quot;&gt;# using StreamRequestHandler means our input from the client&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# is  &amp;quot;file-like&amp;quot; and can be read with &amp;quot;file-like&amp;quot; commands&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we read a line at a time, using readline()&lt;/span&gt;
            &lt;span class=&quot;kw3&quot;&gt;cmd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;rfile&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;readline&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;lower&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# to keep things clean, we remove any characters that aren&#039;t&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# &amp;quot;printable&amp;quot; simple ASCII&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# these are between 32 and 127 in the ASCII table&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we look at each character, and then make a new word by&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# .join()ing each accepted character with no space in between&lt;/span&gt;
            asccmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; x &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;cmd&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we make a list called &amp;quot;words&amp;quot; holding the received words which&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# will be inspected by various functions&lt;/span&gt;
            words &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; asccmd.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# If a client uses sock.close() itself, to disconnect, it appears that&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we read a continuous stream of &amp;quot;&amp;quot; on the dead&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# socket, which puts CPU to 100%.&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# The &amp;quot;While&amp;quot; loop is probably responsible, but I can&#039;t see another&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# way to keep the connection up for multiple commands.&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# Further connection are accepted due to the Threaded nature of the server.&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# The CPU load is unacceptable though&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# HACK ?&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# Looking for &amp;quot;&amp;quot; and then breaking&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# the connection from the server end (even though the client has&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# gone) cures this.&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;cmd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;:
                &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
                &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# if the words list is empty, go back and get more input&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; words:
                &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we have input....&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# filter based on the first word - these are the&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# pre-set commands the server will accept&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# the client wants to know the currently available&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# radio names - held in the variable &amp;quot;rnames&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getnames&amp;quot;&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rnames&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# words[-1] (the last word in the list) will always be the&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# radio name. We give the variable &amp;quot;my_radio&amp;quot; this value, for&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# identifying which radio object to apply the method to&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
                freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;setmode&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
                newmode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;newmode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                newfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;newfreq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getsmeter&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                smeter &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;my_radio.&lt;span class=&quot;me1&quot;&gt;get_smeter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smeter&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gets&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_s&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;listradios&amp;quot;&lt;/span&gt;:
                radios &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radios&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getpreamp&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_pre&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;preampon&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;pre_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;preampoff&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;pre_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getatt&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_att&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atton&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;att_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;attoff&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;att_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;tune&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                tune &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;tune&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tune&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getpwr&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                pwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;setpwr&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                spwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
                pwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;set_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;spwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;:
                write_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Got quit from {}&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;client_address&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# log it&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Goodbye! &lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# say Goodbye&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:  &lt;span class=&quot;co1&quot;&gt;# nothing in words[0] matches a pre-set command....&lt;/span&gt;
                write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Received %s&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; % words&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# log it, it&#039;s unusual&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Command not recognized&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# inform the client&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; ThreadedIcomServer&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ThreadingMixIn&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;TCPServer&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; __name__ &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;__main__&#039;&lt;/span&gt;:
    &lt;span class=&quot;co1&quot;&gt;# define the lock to be used on the serial port access&lt;/span&gt;
    lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# address (&#039;&#039; = all available interfaces) to listen on, and port number&lt;/span&gt;
    address &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9999&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    server &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; ThreadedIcomServer&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;address&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ThreadedRequestHandler&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    server.&lt;span class=&quot;me1&quot;&gt;allow_reuse_address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# define that the server will be threaded, and will serve &amp;quot;forever&amp;quot; ie. not quit after the client disconnects&lt;/span&gt;
    t &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;target&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;server.&lt;span class=&quot;me1&quot;&gt;serve_forever&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# start the server thread&lt;/span&gt;
    t.&lt;span class=&quot;me1&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    write_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;Server loop running in thread: %s&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; % &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;t.&lt;span class=&quot;me1&quot;&gt;getName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;server.py&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;serverpy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2123-10186&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;icompy&quot;&gt;icom.py&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_1ee9a7271f5baf96f28df45de6079287_26&quot;&gt;Code ... &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_1ee9a7271f5baf96f28df45de6079287_26&quot;&gt;&lt;pre class=&quot;code python&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; serial
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; conf &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#sport = &amp;quot;COM1&amp;quot;&lt;/span&gt;
sport &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/dev/ttyS0&amp;quot;&lt;/span&gt;
sbaud &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9600&lt;/span&gt;
&amp;nbsp;
lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; Icom&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; model&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio_address&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cal&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; serial.&lt;span class=&quot;me1&quot;&gt;Serial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sport&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sbaud&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; timeout&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;model&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; model
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; radio_address
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cal&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; cal
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; digi_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + digi_off_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_pre&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_pre_cmd + eom
&amp;nbsp;
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;01&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_pwr&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + pwr_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        p1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        p2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        p3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        p4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        pwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; * &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * p3 + p4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * p1 + p2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr*&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;/&lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_pwr&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#if pwr == &amp;quot;25&amp;quot;:&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#    spwr = &amp;quot;\x00&amp;quot; + &amp;quot;\x63&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#elif pwr == &amp;quot;50&amp;quot;:&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#    spwr = &amp;quot;\x01&amp;quot; + &amp;quot;\x27&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#elif pwr == &amp;quot;75&amp;quot;:&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#    spwr = &amp;quot;\x01&amp;quot; + &amp;quot;\x91&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#elif pwr == &amp;quot;100&amp;quot;:&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#    spwr = &amp;quot;\x02&amp;quot; + &amp;quot;\x55&amp;quot;&lt;/span&gt;
        rigpwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rigpwr &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rigpwr
        pwr1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rigpwr / &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
        pwr2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rigpwr % &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
        spwr1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr1 / &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        spwr2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr1 % &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        spwr3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr2 / &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        spwr4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr2 % &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        spwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;spwr1+spwr2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;spwr3+spwr4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;spwr &amp;quot;, spwr&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + pwr_cmd + spwr + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pre_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_pre_cmd + set_pre_on + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pre_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_pre_cmd + set_pre_off + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; ptt_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + ptt_on_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print result[5]&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ptt on&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Error&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; ptt_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + ptt_off_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print result[5]&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ptt off&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Error&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_att&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_att_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;20&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_att_cmd + set_att_on + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_att_cmd + set_att_off + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        fdig &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%010d&amp;quot;&lt;/span&gt; % &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq * &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        bcd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
            bcd +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq_bcd&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fdig&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fdig&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        set_freq_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; byte &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; bcd:
            set_freq_val +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_freq_cmd + set_freq_val + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Set Freq success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received / Freq not supported&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + get_freq_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; k &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;:
            f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * f + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;nib&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; k&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%.3f&amp;quot;&lt;/span&gt; % &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;in set_mode() with &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lsb&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;usb&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;01&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;am&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;02&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;03&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rtty&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;04&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;fm&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;05&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw-r&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;07&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rtty-r&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;08&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;s-am&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;11&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Mode not recognized&amp;quot;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_mode_cmd + set_mode_val + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Set Mode Success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received / Mode not supported&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + get_mode_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lsb&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;01&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;usb&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;02&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;am&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;03&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;04&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rtty&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;05&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;fm&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;08&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rtty-r&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;07&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw-r&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;11&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;s-am&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; mode
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;upper&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_s&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + get_smeter_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        sm1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        sm2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        sm3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        sm4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; * &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * sm3 + sm4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * sm1 + sm2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; s
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_swr&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + get_swr_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        sm1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        sm2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        sm3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        sm4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        swr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; * &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * sm3 + sm4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * sm1 + sm2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; swr
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_smeter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_s&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        cal &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cal&lt;/span&gt;
        s1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s1 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s2 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s3 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s5 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s4 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s6 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s5 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s7 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s6 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; s1 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s2 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;113&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s1 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s3 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;103&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s2 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s4 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;93&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s3 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s5 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;83&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s4 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s6 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;73&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s5 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s7 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s6 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;43&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s7 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_name&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;model&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; tune&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;tuning&amp;quot;&lt;/span&gt;
        curmode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;lower&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;Current Mode &amp;quot;,curmode&lt;/span&gt;
&amp;nbsp;
        curpwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; curpwr &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;98&lt;/span&gt;:
            curpwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; curpwr + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;Current Power &amp;quot;, curpwr&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;Current percent power &amp;quot;, curpwr&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;rtty&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;Tuning power &amp;quot;, self.get_pwr()&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;PTT On&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ptt_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        swr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;  &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_swr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;SWR :&amp;quot;, swr&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ptt_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;PTT Off&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;curmode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;Mode reset &amp;quot;,self.get_mode()&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;curpwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Tuned : (ref pwr : %s)&amp;quot;&lt;/span&gt; % swr
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Tuned : (ref pwr : %s)&amp;quot;&lt;/span&gt; % swr
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        lock.&lt;span class=&quot;me1&quot;&gt;acquire&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        echo &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;echo&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        count &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; byte &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; eom:
            byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;%#02x&amp;quot; % ord(byte)&lt;/span&gt;
            result +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; byte
            count +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; count &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;:
                &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;
        lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; nib&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; s&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        k &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;s&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i / &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; i % &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            k &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; k &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; k &amp;amp; &lt;span class=&quot;nu0&quot;&gt;0xf&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; freq_bcd&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; d1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; d2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt; * d1 + d2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;icom.py&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;icompy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;10187-20896&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;confpy&quot;&gt;conf.py&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_1ee9a7271f5baf96f28df45de6079287_27&quot;&gt;Code .... &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_1ee9a7271f5baf96f28df45de6079287_27&quot;&gt;&lt;pre class=&quot;code python&quot;&gt;&lt;span class=&quot;co1&quot;&gt;# header&lt;/span&gt;
preamble &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;fe&amp;quot;&lt;/span&gt;
controller &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;e0&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# commands/requests&lt;/span&gt;
set_freq_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;05&amp;quot;&lt;/span&gt;
set_mode_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;06&amp;quot;&lt;/span&gt;
get_freq_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;03&amp;quot;&lt;/span&gt;
get_mode_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;04&amp;quot;&lt;/span&gt;
get_smeter_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;15&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;02&amp;quot;&lt;/span&gt;
get_swr_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;15&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;12&amp;quot;&lt;/span&gt;
digi_off_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;1a&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;04&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;
&amp;nbsp;
set_pre_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;16&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;02&amp;quot;&lt;/span&gt;
&amp;nbsp;
set_pre_off &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;
set_pre_on &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;01&amp;quot;&lt;/span&gt;
&amp;nbsp;
set_att_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;11&amp;quot;&lt;/span&gt;
set_att_on &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;20&amp;quot;&lt;/span&gt;
set_att_off &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;
&amp;nbsp;
ptt_on_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;1c&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;01&amp;quot;&lt;/span&gt;
ptt_off_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;1c&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;
&amp;nbsp;
pwr_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;14&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;0a&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# end of message&lt;/span&gt;
eom &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;fd&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# controller responses&lt;/span&gt;
ack &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;fb&amp;quot;&lt;/span&gt;
nak &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;fa&amp;quot;&lt;/span&gt;
&amp;nbsp;
a1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;5A&amp;quot;&lt;/span&gt;
n1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;IC-R75&amp;quot;&lt;/span&gt;
cal1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;47&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;35&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
a2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;5e&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# a2 = &amp;quot;\x01&amp;quot;&lt;/span&gt;
n2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;IC-718&amp;quot;&lt;/span&gt;
cal2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;27&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;28&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;58&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;35&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
n3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AR7030&amp;quot;&lt;/span&gt;
&amp;nbsp;
n4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;IC-M710&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;conf.py&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;confpy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;20897-21735&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;clientpy&quot;&gt;client.py&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_1ee9a7271f5baf96f28df45de6079287_28&quot;&gt;Code .... &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_1ee9a7271f5baf96f28df45de6079287_28&quot;&gt;&lt;pre class=&quot;code python&quot;&gt;__author__ &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;gm4slv&#039;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# client to work with server_oo.py&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# &lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# # v0.1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;readline&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ImportError&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
HOST&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; PORT &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;shack&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9999&lt;/span&gt;
&amp;nbsp;
smlog &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;pymon.txt&amp;quot;&lt;/span&gt;
log_active &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; make_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; sock
    sock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;AF_INET&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;SOCK_STREAM&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    sock.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;HOST&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; PORT&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; num
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; radios
&amp;nbsp;
    names &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;listradios&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    radios &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; names.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radios&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; num
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    r &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; radios&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; r
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; radio
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;There are currently %d radios connected.&amp;quot;&lt;/span&gt; % num
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        r &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Radio %d is %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_lradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    lradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Select radio to log: &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; lradio:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Please select a radio&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; num:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Selected radio not recognized&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; lradio
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_radio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# global radio&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; radio_num
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; rname
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;There are currently %d radios connected.&amp;quot;&lt;/span&gt; % num
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        r &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Radio %d is %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Choose a radio number from the list : &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; radio:
            &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Please select a radio&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; num:
            &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Selected radio not recognized&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ValueError&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Please enter a number&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
        radio_num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; radio_num&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; prompt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;The available commands are:&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lr   : List Radios&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sr   : Select the Radio to control&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gr   : Get currently selected Radio name&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gm   : Get Mode&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sm   : Set Mode&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gf   : Get Freq&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sf   : Set Freq&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gs   : Get S-meter&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gp   : Get Pre-amp&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;pon  : Set Pre-amp On&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;poff : Set Pre-amp Off&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gatt : Get Attn&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;aton : Set Attn On&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atoff: Set Attn Off&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ga   : Get All (status of all radios)&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sync : Sync freq/mode on two radios&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;log  : Setup background logging to file&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;h    : Help (show this command list)&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;q    : quit&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; radio_num
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; rname
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; sock
&amp;nbsp;
    data &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;lower&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;only one command at a time please&amp;quot;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lr&amp;quot;&lt;/span&gt;:
        list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sr&amp;quot;&lt;/span&gt;:
&amp;nbsp;
        radio_num&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; set_radio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; radio_num:
            radio_num&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; set_radio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gr&amp;quot;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Radio selected is %s&amp;quot;&lt;/span&gt; % rname
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gm&amp;quot;&lt;/span&gt;:
        mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sm&amp;quot;&lt;/span&gt;:
        smode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Enter mode: &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + smode + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gf&amp;quot;&lt;/span&gt;:
        freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s kHz&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sf&amp;quot;&lt;/span&gt;:
        sfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Enter freq (kHz): &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + sfreq + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gs&amp;quot;&lt;/span&gt;:
        smeter &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getsmeter&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %sdBm&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; smeter&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gp&amp;quot;&lt;/span&gt;:
        preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getpreamp&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;pon&amp;quot;&lt;/span&gt;:
        preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;preampon&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;poff&amp;quot;&lt;/span&gt;:
        preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;preampoff&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gatt&amp;quot;&lt;/span&gt;:
        preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getatt&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;aton&amp;quot;&lt;/span&gt;:
        att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;atton&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atoff&amp;quot;&lt;/span&gt;:
        att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;attoff&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ga&amp;quot;&lt;/span&gt;:
        get_all&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;log&amp;quot;&lt;/span&gt;:
        fname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Enter a filename (or &lt;span class=&quot;es0&quot;&gt;\&amp;quot;&lt;/span&gt;Return&lt;span class=&quot;es0&quot;&gt;\&amp;quot;&lt;/span&gt; for default) :&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; fname &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;:
            fname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; smlog
        &lt;span class=&quot;co1&quot;&gt;# check file is valid&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            f.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;IOError&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;File/path not valid&amp;quot;&lt;/span&gt;
            start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        lradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_lradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; lradio:
            lradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_lradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        rname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; lradio &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; log_active:
            &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Logging already active on &amp;quot;&lt;/span&gt; + rname
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            tlog &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Enter a polling interval (seconds) :&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            p &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;target&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;log&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lradio&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; tlog&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fname&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            p.&lt;span class=&quot;me1&quot;&gt;setDaemon&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            p.&lt;span class=&quot;me1&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            log_active.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sync&amp;quot;&lt;/span&gt;:
        sync_result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; sync&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; sync_result
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;h&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;or&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;help&amp;quot;&lt;/span&gt;:
        prompt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;q&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;or&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;:
        rx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Server says: %s &amp;quot;&lt;/span&gt; % rx
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
        prompt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_all&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; radio
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;There are currently %d radios connected.&amp;quot;&lt;/span&gt; % num
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;=&amp;quot;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        r &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        n &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        smeter &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getsmeter&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getpreamp&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getatt&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Status of Radio %d (%s) &lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Frequency : %s kHz&amp;quot;&lt;/span&gt; % freq
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Mode: %s&amp;quot;&lt;/span&gt; % mode
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;S-Meter: %sdBm&amp;quot;&lt;/span&gt; % smeter
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s : %s &amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;preamp&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;=&amp;quot;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; log&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; f&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;
    tlog &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t
    sradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    sr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            frequency &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + sr + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            smeter &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getsmeter&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + sr + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + sr + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sradio&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; frequency&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; smeter&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tlog&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;finally&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_mradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    mradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Choose Master radio number from the list: &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; mradio:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Please select a radio&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; num:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Selected radio not recognized&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; mradio
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_sradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    sradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Choose Slave radio number from the list: &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; sradio:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Please select a radio&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; num:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Selected radio not recognized&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; sradio
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; sync&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Set SLAVE to the same Frequency and Mode as MASTER.&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Currently connected radios are:&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        r &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%d is %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    mradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_mradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; mradio:
        mradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_mradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    sradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_sradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; sradio:
        sradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_sradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    sr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    mr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    mfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + mr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    mmode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + mr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    sfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + mfreq + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + sr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    smode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + mmode + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + sr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sfreq + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; + smode + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# Try to send and receive in one-go, to prevent the logging thread and the main prog&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# getting the wrong receive data&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
        lock.&lt;span class=&quot;me1&quot;&gt;acquire&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; sock
        sock.&lt;span class=&quot;me1&quot;&gt;sendall&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        received &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; sock.&lt;span class=&quot;me1&quot;&gt;recv&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;finally&lt;/span&gt;:
        lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; received
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; smeter&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    filename &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fname
    f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filename&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    timenow &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d/%m/%Y %H:%M:%S&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;gmtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;timenow&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; smeter&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
make_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
get_all&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Please choose a radio&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;
radio_num&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; set_radio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; radio_num:
    radio_num&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; set_radio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
prompt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;client.py&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;clientpy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;21736-31171&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;page_info&quot;&gt;Page Info&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Page created Wed May 25 00:06:01 2022 by John Pumford-Green
&lt;/p&gt;

&lt;p&gt;
Page last updated: 04/06/26 07:39 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:icr75&amp;amp;do=showtag&amp;amp;tag=icr75&quot; class=&quot;wikilink1&quot; title=&quot;tag:icr75&quot; rel=&quot;tag&quot;&gt;icr75&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Page Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;page_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;31172-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>Kenwood TH-D72</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:th-d72</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:start&quot; data-wiki-id=&quot;public:radio:radio_database:start&quot;&gt;Rig and Key List&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;kenwood_th-d72&quot;&gt;Kenwood TH-D72&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Kenwood TH-D72&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kenwood_th-d72&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-48&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;remote_control&quot;&gt;Remote Control&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The TH-D72 can be used to remotely control a &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:tm-d710&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:tm-d710&quot; data-wiki-id=&quot;public:radio:radio_database:tm-d710&quot;&gt; TM-D710&lt;/a&gt;. This allows remote control of VHF Frequency/Memory Channel, TX power, CTCSS/DCS tones and to enable/disable cross-band repeat.
&lt;/p&gt;

&lt;p&gt;
The remote control function uses specific DTMF sequences to instruct the TM-D710. 
&lt;/p&gt;

&lt;p&gt;
To enable “Remote Ctrl” mode :
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Select the correct UHF uplink frequency to match the TM-D710&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Turn off the TH-D72&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Hold &lt;code&gt;MR&lt;/code&gt; and &lt;code&gt;PTT&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Turn on the TH-D72&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
The display will show “Mobile Ctrl”
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Ath-d72&amp;amp;media=public:radio:radio_database:2024-03-29_08.46.00.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:2024-03-29_08.46.00.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=1532ca&amp;amp;media=public:radio:radio_database:2024-03-29_08.46.00.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The TM-D710 must also be put in Remote Control mode.
&lt;/p&gt;

&lt;p&gt;
On the TM-D710
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; select VHF mode on both sides&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; turn off the APRS TNC if it&amp;#039;s on&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; set the left side to the wanted VHF Frequency&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; set the right side to the UHF Uplink/control frequency to match the TH-D72&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; the first steps are done by selecting &lt;code&gt;PM5&lt;/code&gt; on my TM-D710&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;span style=&#039;color:#ed1c24; &#039;&gt;&lt;strong&gt;make sure the left side/VHF is the “active” side by clicking the left volume knob&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; turn off&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; hold &lt;code&gt;Rev&lt;/code&gt; button &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; turn on&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
The TM-D710 should now be in remote mode.
&lt;/p&gt;

&lt;p&gt;
To restore normal operation repeat the same sequence of 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Turn off&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Hold &lt;code&gt;Rev&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Turn on&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Successful commands sent to the TM-D710 will receive a “pip pip pip” revertive.
&lt;/p&gt;

&lt;p&gt;
The commands are send using the TH-D72 keypad, remapped as:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit3&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;1 = DCS On &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 2 = Tone On &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 3 = CTCSS On &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; A = Enter &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;4 = DCS Off &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;5 = Tone Off &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 6 = CTCSS Off &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; B = CTCSS/DCS Tone &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;7 = Call Ch. Mode &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;8 = VFO Mode &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;9 = Memory Mode &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; C = Repeater On&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;* = Down &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;0 = Power &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; # = Up &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;D = Repeater Off &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1435-1674&amp;quot;} --&gt;&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; to change VHF Frequency to 145.500&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 8 (VFO Mode)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; A (Enter) 145500 A (Enter)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; to change to memory channel 2&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 9 (Memory Mode)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; A (Enter) 002 A (enter)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; To turn on Cross-Band Repeat&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; C &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; To turn off Cross-Band Repeat&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; D&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Once the TM-D710 is in the correct condition - VHF Frequency, tone, power, cross-band repeat - it&amp;#039;s possible to restore the TH-D72 to normal operation and use it to access the cross-band repeater and use DTMF tones as normal (eg. to control another system via the repeater). Just exit “Mobile Ctrl” mode on the TH-D72
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Turn off&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; hold &lt;code&gt;MR&lt;/code&gt; and &lt;code&gt;PTT&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Turn on&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
You should be back in normal operation mode.
&lt;/p&gt;

&lt;p&gt;
Obviously, to control the TM-D710 again (eg to disable cross-band repeat) simply go back to &lt;code&gt;Mobile Ctrl&lt;/code&gt; mode in the same way, and send the required commands.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Remote Control&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;remote_control&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;49-2523&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;documentation&quot;&gt;Documentation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:th-d72_all_e.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:th-d72_all_e.pdf (7.2 MB)&quot;&gt;th-d72_all_e.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:radio_database:th-d72ae_idm.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:radio_database:th-d72ae_idm.pdf (5.9 MB)&quot;&gt;th-d72ae_idm.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Documentation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;documentation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2524-2665&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;page_info&quot;&gt;Page Info&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Page created Wed May 25 00:01:26 2022 by John Pumford-Green
&lt;/p&gt;

&lt;p&gt;
Page last updated: 04/06/26 07:39 BST
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Page Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;page_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2666-2779&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;tags&quot;&gt;tags&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:thd72&amp;amp;do=showtag&amp;amp;tag=thd72&quot; class=&quot;wikilink1&quot; title=&quot;tag:thd72&quot; rel=&quot;tag&quot;&gt;thd72&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tags&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tags&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2780-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>Vibroplex Presentation Bug</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:vibroplex_presentation</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:start&quot; data-wiki-id=&quot;public:radio:radio_database:start&quot;&gt;Rig and Key List&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;vibroplex_presentation_bug&quot;&gt;Vibroplex Presentation Bug&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; 1957 Presentation Model &lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Bought : ? , eBay&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Cost : ?&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Serial Number : 198474&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Date : 1957&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Plate : D6&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Features the “La Hiff” adjustable mainspring, which was only used on the original “genuine” Presentation models.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Vibroplex Presentation Bug&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vibroplex_presentation_bug&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-297&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;photos&quot;&gt;Photos&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Avibroplex_presentation&amp;amp;media=public:radio:radio_database:img_20230623_223320_3.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:img_20230623_223320_3.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=7c3033&amp;amp;media=public:radio:radio_database:img_20230623_223320_3.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Avibroplex_presentation&amp;amp;media=public:radio:radio_database:img_20230623_223330_8.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:img_20230623_223330_8.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=6df1d7&amp;amp;media=public:radio:radio_database:img_20230623_223330_8.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Photos&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;photos&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;298-445&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;details&quot;&gt;Details&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
This was my first bug key and has had to have some work to repair damage to the frame. The tapped holes for the screws that hold the frame to the base were stripped, and the frame couldn&amp;#039;t be tightened sufficiently to the base. I found the easiest (although not invisible) way to fix it was to drill through the original holes, all the way, and then tap a new thread (M6) and use longer screws to secure the frame to the base. This has spoiled the key&amp;#039;s “original” appearance, but made it actually useable as a bug key, which to my mind is much more important. I&amp;#039;m sure old-time professional bug users would make whatever repairs were necessary to keep their favourite keys in operation, caring little of maintaining “originality”. You can see one of the protruding bolts here:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Aradio_database%3Avibroplex_presentation&amp;amp;media=public:radio:radio_database:img_20230623_223320_3_detail.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:img_20230623_223320_3_detail.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=22cbdd&amp;amp;media=public:radio:radio_database:img_20230623_223320_3_detail.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 20/06/23 05:43&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Details&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;details&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;446-1364&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:bug&amp;amp;do=showtag&amp;amp;tag=bug&quot; class=&quot;wikilink1&quot; title=&quot;tag:bug&quot; rel=&quot;tag&quot;&gt;bug&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:cw&amp;amp;do=showtag&amp;amp;tag=cw&quot; class=&quot;wikilink1&quot; title=&quot;tag:cw&quot; rel=&quot;tag&quot;&gt;cw&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1365-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 06 Jul 2026 20:49:09 +0000</pubDate>
        </item>
        <item>
            <title>60m</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:60m</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:start&quot; data-wiki-id=&quot;public:radio:topics:start&quot;&gt;Radio Topics&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;m&quot;&gt;60m&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; A return to 60m in earnest &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve been active on 60m since it was first available (with a NOV) - and mostly in Digimodes on &lt;strong&gt;FK / 5366.5kHz&lt;/strong&gt;, along with a bit of CW and very little SSB. For many years 60m digimodes was the &lt;em&gt;only&lt;/em&gt; activity I did on the radio. In recent years I&amp;#039;ve been largely QRT, or having the odd spell on CW, but I still have an interest in 60m as a place for experimentation and for inter-UK communications. 2024 will be my year of 60m, with more SSB operating.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;60m&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;m&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-528&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;band_utilization&quot;&gt;Band Utilization&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Captured well by G3NRW&amp;#039;s chart &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:uk_60m_5_mhz_band_utilization_chart_band_plan_by_g3nrw.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:uk_60m_5_mhz_band_utilization_chart_band_plan_by_g3nrw.pdf (115 KB)&quot;&gt;uk_60m_5_mhz_band_utilization_chart_band_plan_by_g3nrw.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Since this chart was first produced &lt;strong&gt;many more European countries have access to 60m&lt;/strong&gt; - mostly using the &lt;strong&gt;WARC&lt;/strong&gt; allocation &lt;strong&gt;5351.5 → 5366.5&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The UK was first to have access to 60m but we are now out of touch with how the band is developing, locked in our unique set of &lt;em&gt;bandlets&lt;/em&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Digimodes among UK stations still takes place on 5366.5kHz (USB Dial) which is an RF centre frequency of 5368.0. This is therefore &lt;strong&gt;out of the WARC allocation&lt;/strong&gt;.&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Many Eu hams choose to ignore this - the WARC allocation goes to &lt;em&gt;5366.5kHz&lt;/em&gt; and if they set their radios to &lt;em&gt;5366.5kHz&lt;/em&gt; they operate there ignoring the fact that their actual signal is out of band. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; I tend to just work them and leave them to juggle the legalities.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I still see the band as interesting mainly for it&amp;#039;s use as quiet, mostly channelized band for inter-UK experiments, rather than a band for “working DX”.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; The WARC band has evolved its own internal band-plan.   &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; IARU Bandplan including 5MHz WARC &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:2024:hf_r1_bandplan.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:2024:hf_r1_bandplan.pdf (61.9 KB)&quot;&gt;hf_r1_bandplan.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;table sectionedit3&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; 5351.5 → 5354.0 &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; 5354.0 → 5358.0 &lt;/th&gt;&lt;th class=&quot;col2&quot;&gt; 5358.0 → 5362.0 &lt;/th&gt;&lt;th class=&quot;col3&quot;&gt; 5362.0 → 5366.0 &lt;/th&gt;&lt;th class=&quot;col4&quot;&gt; 5366.0 → 5366.5 &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;strong&gt;CW&lt;/strong&gt; &lt;br/&gt;
&lt;strong&gt;NOT UK&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;strong&gt;All Modes&lt;/strong&gt; &lt;br/&gt;
UK OK&lt;br/&gt;
FT8 @ dial 5357&lt;br/&gt;
UK Beware band edge&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;strong&gt;All Modes&lt;/strong&gt;&lt;br/&gt;
 &lt;strong&gt;NOT UK&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;strong&gt;All Modes&lt;/strong&gt;&lt;br/&gt;
UK OK&lt;br/&gt;
SSB 5363 Common &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;strong&gt;Weak Signal&lt;/strong&gt;&lt;br/&gt;
UK OK&lt;br/&gt;
WSPR @dial 5364.7 &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1726-2029&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Band Utilization&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;band_utilization&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;529-2033&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;usa&quot;&gt;USA&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit5&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Channel&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Dial&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Centre&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Comments&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 1 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5330.5 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 5332.0 &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 2 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5346.5 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 5348.0 &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 3 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5357.0 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 5358.5 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; In WARC : FT8 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 4 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5371.5 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 5373.0 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;strong&gt;Shared UK&lt;/strong&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 5 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5403.5 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 5405.0 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;strong&gt;Shared UK&lt;/strong&gt; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2049-2253&amp;quot;} --&gt;&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 100W PEP ERP&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Data &amp;amp; CW &lt;strong&gt;must be on centre frequency of channel&lt;/strong&gt; (FT8 on 5357.0 + 1.5kHz ONLY??)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;USA&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;usa&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2034-2361&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;canada&quot;&gt;Canada&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Same channels as USA&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Also WARC Band 5351.5 → 5366.5&lt;/strong&gt; at 100W ERP &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Canada&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;canada&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2362-2457&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;ukoccupancy_versus_bandlet_channel&quot;&gt;UK : Occupancy versus Bandlet/channel&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; I plan to investigate which bandlets are used for amateur QSOs and where/when any non-ham, commercial, military and UNID activity blocks access to our allocated spectrum.&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Which bandlets are clobbered regularly?&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Which bandlets have clear SSB channels most of the time?&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Where are the regular amateur nets, QSOs, CQ calls?&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;UK : Occupancy versus Bandlet\/channel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ukoccupancy_versus_bandlet_channel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2458-2851&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;uk_bandlet_list&quot;&gt;UK Bandlet List&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;table sectionedit9&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;No.&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Start → Stop &lt;/th&gt;&lt;th class=&quot;col2&quot;&gt; Width&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Comments&lt;br/&gt;
(&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;Centre of Activity&lt;/em&gt;&lt;/strong&gt;)&lt;/th&gt;&lt;th class=&quot;col4&quot;&gt;SSB Dial range&lt;/th&gt;&lt;th class=&quot;col5&quot;&gt;Utilization 2024&lt;/th&gt;&lt;th class=&quot;col6&quot;&gt;CQ?&lt;/th&gt;&lt;th class=&quot;col7&quot;&gt;Non Ham Occupancy&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 1 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5258.5 → 5264.0 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 5.5 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;strong&gt;FA&lt;/strong&gt; 5258.5&lt;br/&gt;
&lt;strong&gt;&lt;em class=&quot;u&quot;&gt;UK CW @ 5260.0&lt;/em&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt;&lt;strong&gt;CW @ 5260.0&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; CQ &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 2 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5276.0 → 5284.0 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 8.0 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;strong&gt;FB&lt;/strong&gt; 5278.5 &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt;5276.0 → 5281.0  &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt;&lt;strong&gt;5279.0&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col6 leftalign&quot;&gt;   &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; Fishfone &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 3 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5288.5 → 5292.0 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 3.5 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;strong&gt;FC&lt;/strong&gt; 5288.5&lt;br/&gt;
BEACONS &amp;amp; WSPR ONLY &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt;Beacons&lt;br/&gt;
&lt;strong&gt;W @ 5287.2&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 4 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5298.0 → 5307.0 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 9.0 &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 5298.0 → 5304.0 &lt;/td&gt;&lt;td class=&quot;col5 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt;5298.0→5303.0 data@night&lt;br/&gt;
5304.0 clear &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 5 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5313.0 → 5323.0 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 10.0 &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt; &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;UK AM @ 5317.0&lt;/em&gt;&lt;/strong&gt;  &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 5313.0 → 5320.0 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt;&lt;strong&gt;5320.0&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 6 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5333.0 → 5338.0 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 5.0 &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt; 5333.0 → 5335.0  &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; &lt;strong&gt;5335.0&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col6 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt;5333.0→5335.0 data@night &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 7 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5354.0 → 5358.0 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 4.0 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;em&gt;WARC&lt;/em&gt;&lt;br/&gt;
FT8 @ 5357.0 USA Ch. 3&lt;br/&gt;
&lt;strong&gt;UK beware band edge&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 5354.0 → 5355.0 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 8 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5362.0 → 5374.5 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 12.5&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;em&gt;WARC→5366.5&lt;/em&gt;,&lt;br/&gt;
WSPR&lt;br/&gt;
5363.0 SSB&lt;br/&gt;
&lt;strong&gt;FK &lt;em class=&quot;u&quot;&gt;UK DIGI @ 5366.5&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;
&lt;strong&gt;FL&lt;/strong&gt; 5371.5 USA Ch. 4&lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 5362.0 → 5371.5 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; &lt;strong&gt;5363.0&lt;/strong&gt;&lt;br/&gt;
&lt;strong&gt;W @ 5364.7&lt;/strong&gt;&lt;br/&gt;
&lt;strong&gt;D @ 5366.5&lt;/strong&gt;&lt;br/&gt;
&lt;strong&gt;5371.5&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;col6 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; 9 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5378.0 → 5382.0 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 4.0 &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt;  &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 5378.0 → 5379.0 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col7 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;10 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5395.0 → 53401.5 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 6.5 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;strong&gt;FE &lt;em class=&quot;u&quot;&gt;UK SSB @ 5398.5&lt;/em&gt;&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 5395.0 → 5398.5 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt; &lt;strong&gt;5395.0&lt;/strong&gt;&lt;br/&gt;
&lt;strong&gt;5398.5&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; CQ &lt;/td&gt;&lt;td class=&quot;col7&quot;&gt; 5395→5397 data@night&lt;br/&gt;
FE Clear &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;11 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5403.5 → 5406.5 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 3.0 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;strong&gt;FM&lt;/strong&gt; 5403.5 USA Ch. 5&lt;br/&gt;
DX &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; 5403.5 &lt;/td&gt;&lt;td class=&quot;col5&quot;&gt;&lt;strong&gt;5403.5&lt;/strong&gt; &lt;/td&gt;&lt;td class=&quot;col6&quot;&gt; CQ &lt;/td&gt;&lt;td class=&quot;col7 leftalign&quot;&gt;   &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;2881-4207&amp;quot;} --&gt;
&lt;p&gt;
SSB and “Dial Frequency” unless specified
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; W = WSPR&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; WL = Winlink &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; D = Digi (Olivia, MFSK, Contesia, PSK31 etc.)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DV = Digital Voice (FreeDV?)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;UK Bandlet List&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;uk_bandlet_list&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2852-4369&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;other_60m_users&quot;&gt;Other 60m Users&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;table sectionedit11&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;User&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Frequency&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Location&lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;Comments&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;UK Cadets&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;5245&lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;Various  &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; NRN - Replacement for 5345?&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;RAF Volmet  &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;5450 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;England &lt;/td&gt;&lt;td class=&quot;col3 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Shannon Volmet &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5505 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Ireland &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;UK Rescue &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5680 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Various &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; Based at NMOC Fareham?&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;DRA5 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 5195 &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Germany &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; CW Beacon → &lt;a href=&quot;https://www.dk0wcy.de/schedule_en.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.dk0wcy.de/schedule_en.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt; DK0WCY&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Aero &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Various &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;Various  &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:swl:hf_frequencies&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:swl:hf_frequencies&quot; data-wiki-id=&quot;public:radio:swl:hf_frequencies&quot;&gt;HF Utilities&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;4400-4769&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Other 60m Users&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;other_60m_users&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;4370-4773&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;4774-4807&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;exercise_blue_ham_2024&quot;&gt;Exercise Blue Ham 2024&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 60m is shared in the UK with the Primary User - military - and we are allowed to have 2-way communication with Cadet Stations.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; While they do appear occasionally on our shared &lt;em&gt;bandlets&lt;/em&gt; they tend to be more active on their own specific cadet frequencies&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Once or twice a year there is a better opportunity to work Cadet Stations - Exercise Blue Ham&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;the_next_blue_ham_is&quot;&gt;The next Blue Ham is&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; June 17 - June 21 2024&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; All 5MHz UK SSB slots and data on 5366.5&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; See Alpha Charlie &lt;a href=&quot;https://alphacharlie.org.uk/exercise-blue-ham/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://alphacharlie.org.uk/exercise-blue-ham/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://alphacharlie.org.uk/exercise-blue-ham/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; See M0PLT &lt;a href=&quot;https://www.m0plt.me.uk/blueham.php&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.m0plt.me.uk/blueham.php&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.m0plt.me.uk/blueham.php&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Callsigns:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Air Cadets : MRxyy&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Sea Cadets : MFxyy&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Army Cadets : (tbc)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; CCF : (tbc)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
For other cadet radio info, as I find it, see &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:swl:cadets&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:swl:cadets&quot; data-wiki-id=&quot;public:radio:swl:cadets&quot;&gt;Cadet Radio Info&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Exercise Blue Ham 2024&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;exercise_blue_ham_2024&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;4808-5620&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;m_band_wikipedia_page&quot;&gt;60m band Wikipedia Page&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/60-meter_band#&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://en.wikipedia.org/wiki/60-meter_band#&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://en.wikipedia.org/wiki/60-meter_band#&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 31/03/24 18:50&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Page Updated: 04/06/26 07:58 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:60m&amp;amp;do=showtag&amp;amp;tag=60m&quot; class=&quot;wikilink1&quot; title=&quot;tag:60m&quot; rel=&quot;tag&quot;&gt;60m&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:ssb&amp;amp;do=showtag&amp;amp;tag=ssb&quot; class=&quot;wikilink1&quot; title=&quot;tag:ssb&quot; rel=&quot;tag&quot;&gt;ssb&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;60m band Wikipedia Page&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;m_band_wikipedia_page&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;5621-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:58:36 +0000</pubDate>
        </item>
        <item>
            <title>CW - 2023</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:cw_2023</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:start&quot; data-wiki-id=&quot;public:radio:topics:start&quot;&gt;Radio Topics&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;cw_-_2023&quot;&gt;CW - 2023&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; CW always was my main mode of operation &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve spent a lot of time with Digimodes (mainly on 60m) and recently even tried SSB on the HF bands (and might use SSB more often in future) but CW is really where I feel happiest. For a long time it was my &lt;strong&gt;only&lt;/strong&gt; mode of operation on HF. Even now, at times when I&amp;#039;m out of practice, and my sending gets a bit wobbly, I feel comfortable with CW. There&amp;#039;s something magical about communicating over the airwaves without speaking, without typing, just using a series of dits and dahs controlled by your own hand and turned from sound into meaning in your own brain. 
&lt;/p&gt;

&lt;p&gt;
When I started my current (Summer 2023) resurgence of interest in radio I thought I&amp;#039;d push myself to use SSB, to speak to people, and this would be the “novelty” I was looking for to kick start my interest in the hobby. 
&lt;/p&gt;

&lt;p&gt;
After a few weeks of getting things up and running I find I&amp;#039;m gravitating towards the CW end of the bands again, I&amp;#039;ve wired up all my keys, including my Vibroplex bug which has seen very little use on the air since I bought it. I &lt;strong&gt;&lt;em&gt;did&lt;/em&gt;&lt;/strong&gt; use it a few times in 2021 during a previous spell of on-air activity, but I let it lie dormant for the next 2 years, until &lt;strong&gt;NOW&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Let the CW-fest begin.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CW - 2023&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cw_-_2023&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-1279&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;current_setup&quot;&gt;Current Setup&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Vibroplex “Presentation” bug : Serial No 198474, Plate “Patented 833 Broadway” (D6 Plate). The Serial Number list &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:ww7p-serial-number-list.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:active:ww7p-serial-number-list.pdf (92 KB)&quot;&gt;ww7p-serial-number-list.pdf&lt;/a&gt; indicates &lt;strong&gt;1957&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Hi-Mound HK-708 (the same one I&amp;#039;ve had since 1982)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; GPO brass key&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; “Russian army” key&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Vibroplex “Champion” bug : Serial No 211617, Plate “Patented 833 Broadway” (D6 Plate), date 1960&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Acw_2023&amp;amp;media=public:radio:active:img_20230612_163125_736.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:active:img_20230612_163125_736.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=0babac&amp;amp;media=public:radio:active:img_20230612_163125_736.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Acw_2023&amp;amp;media=public:radio:radio_database:img_20230623_223354_0.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:radio_database:img_20230623_223354_0.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=bef7c1&amp;amp;media=public:radio:radio_database:img_20230623_223354_0.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Icom IC-7200 main HF radio  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Icom IC-706 second HF&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Current Setup&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;current_setup&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1280-1883&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;plans&quot;&gt;Plans&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; No Iambic/electronic keyers&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I enjoy straight key sending and have occasionally used my Vibroplex on the air for faster QSOs than I&amp;#039;m able to manage with a straight key. The bug is taking some time to feel comfortable, and all I can do is practice, practice and more practice.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ll try to do most of my QSOs on the bug, currently set at 18wpm (according to my spots on RBN) which is a comfortable speed for me at the moment, both for sending and receiving. I had my first “new” CW QSO using the bug today (June 12th) on 40m with Lada, OK2PAY who I remember working before, some years ago. In fact here&amp;#039;s a video of the QSO on my You Tube &lt;a href=&quot;https://youtu.be/9LJE8Ys6FAk&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://youtu.be/9LJE8Ys6FAk&quot; rel=&quot;ugc nofollow noopener&quot;&gt; OK2PAY 30m CW &lt;/a&gt; - the QSO was 16 July 2016 on 30m…. wow, 7 years ago!
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve re-joined the &lt;a href=&quot;https://fists.co.uk/index.htm&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://fists.co.uk/index.htm&quot; rel=&quot;ugc nofollow noopener&quot;&gt; FISTS CW club&lt;/a&gt;  with my old member number &lt;code&gt;17686&lt;/code&gt; - and I see my &lt;a href=&quot;http://www.skccgroup.com/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.skccgroup.com/&quot; rel=&quot;ugc nofollow noopener&quot;&gt; SKCC &lt;/a&gt;
 old membership number is still listed as &lt;code&gt;3214&lt;/code&gt;. I&amp;#039;ll try to take part in more activities by these clubs. 
&lt;/p&gt;

&lt;p&gt;
Have QSOs → rag-chews, rubber-stamp, all sorts…..
&lt;/p&gt;

&lt;p&gt;
I hope to get enough air-time and enjoyment that perhaps I can justify a new key or even a new bug (I have been looking in wonder at the &lt;a href=&quot;http://www.i2rtf.com/intrepid.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.i2rtf.com/intrepid.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt; Begali Intrepid&lt;/a&gt; )……
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Update 23/6/23 : New (to me) bug…. 1960 Vibroplex Champion from eBay &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:vibroplex_champion&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:vibroplex_champion&quot; data-wiki-id=&quot;public:radio:radio_database:vibroplex_champion&quot;&gt;Vibroplex Champion Bug&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Plans&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;plans&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1884-3310&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;receive_practice&quot;&gt;Receive Practice&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
One of my favourite sources of material for “head copy” practice is the ARRL&amp;#039;s Code Practice Archive
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.arrl.org/code-practice-files&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://www.arrl.org/code-practice-files&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://www.arrl.org/code-practice-files&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Here you can download MP3 files of their Code Practice recordings, which are extracts from QST magazine, sent at various speeds from 5 wpm to 40 wpm.
&lt;/p&gt;

&lt;p&gt;
I have put a lot of the 25, 30, 35 and 40 wpm files on a USB stick to play in the van and on my phone to play whenever/wherever. 
&lt;/p&gt;

&lt;p&gt;
I find it is good to just let the CW flow and to grasp as much as you can, in bursts, and then let the “meaning” sink in - even when you miss the odd letter or word. In “conversational” CW it&amp;#039;s best to let go of mistakes and just concentrate on making sense of what you&amp;#039;re hearing. Exact “carbon copy” is only needed for formal messages (telegrams, RAYNET etc). Just letting the CW flow in through the ears and the “meaning” of the message condense in your brain makes you feel more comfortable about glitches and missing parts. In a QSO nobody is going to know how much you actually copied, as long as you get the important bits - name, QTH etc - which are usually sent more than once. If you don&amp;#039;t respond to a question (because you missed it being asked) they can always ask again, and assume you just forgot. The key is to not care too much about 100% accurate copy, and the more you have QSOs, the easier it becomes and the more you copy, a virtuous circle.
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 12/06/23 13:22&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Acw_2023&amp;amp;media=public:radio:bug_cert.png&quot; class=&quot;media&quot; title=&quot;public:radio:bug_cert.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=2dd6b8&amp;amp;media=public:radio:bug_cert.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Receive Practice&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;receive_practice&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3311-4816&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The Art and Skill of Radio Telegraphy : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:tasrt.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:active:tasrt.pdf (1.8 MB)&quot;&gt;tasrt.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Articles by Tom McElroy (thanks to Ian IK4EWX)&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:hints_on_improving_keying_tmcelroy-_qst_nov35.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:active:hints_on_improving_keying_tmcelroy-_qst_nov35.pdf (223.8 KB)&quot;&gt;hints_on_improving_keying_tmcelroy-_qst_nov35.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:mcelroy-part1_radio_1935-01.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:active:mcelroy-part1_radio_1935-01.pdf (531.8 KB)&quot;&gt;mcelroy-part1_radio_1935-01.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:mcelroy-part2_-_radio_1935-02.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:active:mcelroy-part2_-_radio_1935-02.pdf (306.4 KB)&quot;&gt;mcelroy-part2_-_radio_1935-02.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:mcelroy-part3_-_radio_1935-05.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:active:mcelroy-part3_-_radio_1935-05.pdf (709.3 KB)&quot;&gt;mcelroy-part3_-_radio_1935-05.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:cw&amp;amp;do=showtag&amp;amp;tag=cw&quot; class=&quot;wikilink1&quot; title=&quot;tag:cw&quot; rel=&quot;tag&quot;&gt;cw&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4817-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 06 Jun 2026 21:16:55 +0000</pubDate>
        </item>
        <item>
            <title>DMR HotSpots</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:dmr_hotspot</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:start&quot; data-wiki-id=&quot;public:radio:topics:start&quot;&gt;Radio Topics&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dmr_hotspots&quot;&gt;DMR HotSpots&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Pi-Star and DVMega or MMDVM_HS Raspberry Pi “hat”
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:screenshot_2022-05-05_19.30.43.png&quot; class=&quot;media&quot; title=&quot;public:radio:screenshot_2022-05-05_19.30.43.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=35e7d1&amp;amp;media=public:radio:screenshot_2022-05-05_19.30.43.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Currently connected to &lt;em&gt;Brandmeister&lt;/em&gt; directly.
&lt;/p&gt;

&lt;p&gt;
Previously it has used &lt;code&gt;DMRGateway&lt;/code&gt; to control connections to &lt;strong&gt;three&lt;/strong&gt; DMR networks:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Brandmeister&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Phoenix / DMR+&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; TGIF&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DMR HotSpots&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dmr_hotspots&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;11-342&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;update_3_10_22&quot;&gt;Update 3/10/22&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Hotspot active again, using DMR Gateway and 3 networks:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:screenshot_at_2022-10-03_15-09-24.png&quot; class=&quot;media&quot; title=&quot;public:radio:screenshot_at_2022-10-03_15-09-24.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=d86e1c&amp;amp;media=public:radio:screenshot_at_2022-10-03_15-09-24.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_c1f22f7d343b6fd45b0749c95e546482_2&quot;&gt;DMR Gateway Config &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_c1f22f7d343b6fd45b0749c95e546482_2&quot;&gt;&lt;pre class=&quot;code&quot;&gt;
[General]
RptAddress=127.0.0.1
RptPort=62032
LocalAddress=127.0.0.1
LocalPort=62031
RuleTrace=0
Daemon=1
Debug=0
RFTimeout=20
NetTimeout=20

[Log]
DisplayLevel=0
FileLevel=1
FilePath=/var/log/pi-star
FileRoot=DMRGateway

[Voice]
Enabled=1
Language=en_GB
Directory=/usr/local/etc/DMR_Audio

[Info]
Enabled=0
RXFrequency=438800000
TXFrequency=438800000
Power=1
Latitude=60.2885
Longitude=-1.4252
Height=0
Location=&amp;quot;Shetland&amp;quot;
Description=&amp;quot;UK&amp;quot;
URL=https://www.qrz.com/db/GM4SLV

[XLX Network]
Startup=950
Enabled=0
File=/usr/local/etc/XLXHosts.txt
Port=62030
Password=passw0rd
ReloadTime=60
Slot=2
TG=6
Base=64000
Relink=60
Debug=0
Id=2354429
UserControl=1

[DMR Network 1]
Enabled=1
Address=2341.master.brandmeister.network
Port=62031
TGRewrite0=2,9,2,9,1
PCRewrite0=2,94000,2,4000,1001
TypeRewrite0=2,9990,2,9990
SrcRewrite0=2,4000,2,9,1001
PassAllPC0=1
PassAllTG0=1
PassAllPC1=2
PassAllTG1=2
Password=&amp;quot;&amp;lt;Brandmeister Hotspot Password&amp;quot;
Debug=0
Id=&amp;lt;DMRID and SSID&amp;gt;
Name=BM_2341_United_Kingdom
Location=1

[DMR Network 2]
Enabled=1
Address=78.129.135.43
Port=55555
TGRewrite0=2,8001,2,1,999
TGRewrite1=2,82000,2,2000,999
TGRewrite2=2,823000,2,23000,999
TGRewrite3=2,89900,2,9900,99
PCRewrite0=2,84000,2,8009,1
PCRewrite1=1,85057,2,5057,1
Password=&amp;quot;PASSWORD&amp;quot;
Debug=0
Id=235442901
Name=DMR+_IPSC2-PhoenixF
Location=0
Options=&amp;quot;StartRef=4000;UserLink=1;TS1_1=235;&amp;quot;

[DMR Network 3]
Enabled=0
Name=HBLink
Address=1.2.3.4
Port=5555
TGRewrite=2,11,2,11,1
Password=&amp;quot;PASSWORD&amp;quot;
Location=0
Debug=0
TGRewrite0=2,11,2,11,1

[DMR Network 4]
Enabled=1
Name=TGIF
PCRewrite1=1,4009990,1,9990,1
PCRewrite2=2,4009990,2,9990,1
TGRewrite1=1,4000001,1,1,999999
TGRewrite2=2,4000001,2,1,999999
SrcRewrite1=1,9990,1,4009990,1
SrcRewrite2=2,9990,2,4009990,1
SrcRewrite3=1,1,1,4000001,999999
SrcRewrite4=2,1,2,4000001,999999
Address=tgif.network
Password=&amp;lt;TGIF Hotspot Access Key&amp;gt;
Port=62031
Location=0
Debug=0
Id=&amp;lt;DMRID and SSID&amp;gt;

[GPSD]
Enable=0
Address=127.0.0.1
Port=2947

[APRS]
Enable=1
Address=127.0.0.1
Port=8673
Description=APRS for DMRGateway
Suffix=DMR

[Dynamic TG Control]
Enabled=1
Port=3769
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Update 3\/10\/22&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;update_3_10_22&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;343-2623&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;see_also&quot;&gt;See Also&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Part of the &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:rpi_farm&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:rpi_farm&quot; data-wiki-id=&quot;public:radio:topics:rpi_farm&quot;&gt;Raspberry Pi Farm&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Page Updated: 05/06/26 08:19 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:pi&amp;amp;do=showtag&amp;amp;tag=pi&quot; class=&quot;wikilink1&quot; title=&quot;tag:pi&quot; rel=&quot;tag&quot;&gt;pi&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dv&amp;amp;do=showtag&amp;amp;tag=dv&quot; class=&quot;wikilink1&quot; title=&quot;tag:dv&quot; rel=&quot;tag&quot;&gt;dv&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:pistar&amp;amp;do=showtag&amp;amp;tag=pistar&quot; class=&quot;wikilink1&quot; title=&quot;tag:pistar&quot; rel=&quot;tag&quot;&gt;pistar&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dmr&amp;amp;do=showtag&amp;amp;tag=dmr&quot; class=&quot;wikilink1&quot; title=&quot;tag:dmr&quot; rel=&quot;tag&quot;&gt;dmr&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;See Also&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;see_also&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2624-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 05 Jun 2026 07:19:36 +0000</pubDate>
        </item>
        <item>
            <title>Netradio Control</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:netradio_control</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:start&quot; data-wiki-id=&quot;public:radio:topics:start&quot;&gt;Radio Topics&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;netradio_control&quot;&gt;Netradio Control&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Python code for TCP/IP control of multiple radios &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Netradio Control&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;netradio_control&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-105&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;server&quot;&gt;Server&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
This provides TCP/IP access to one or more radios, allowing control of Frequency, Mode, Pre-amp and Attenuator. It also gives remote access to S-meter readings.
&lt;/p&gt;

&lt;p&gt;
There are separate rig-dependant command modules that then provide a standard interface for commands sent by a client, regardless of the particular radio connected.
&lt;/p&gt;

&lt;p&gt;
There are modules for
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Icom C-IV radios such as IC-R75, IC-718, IC-7200 etc.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; AOR AR7030&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Icom IC-M710 marine &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Server&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;server&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;106-575&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;server1&quot;&gt;Server&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_5f491c71348427373a57bc76d46bbc18_9&quot;&gt;server.py &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_5f491c71348427373a57bc76d46bbc18_9&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:topics:netradio_control&amp;amp;codeblock=0&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_py&quot;&gt;server.py&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; aor &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; icom &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; conf &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; m710 &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;readline&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
radios &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
r1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Icom&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; a1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cal1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
radios.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n1&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
r2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; m710&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
radios.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#r2 = Icom(n2, a2, cal2)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#radios.append(n2)&lt;/span&gt;
&amp;nbsp;
r3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Ar7030&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
radios.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n3&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; radios
&lt;span class=&quot;co1&quot;&gt;#print r1.digi_off()&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#print r2.remote_on()&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; count_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    count &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radios&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; count
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    radiolist &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; n &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radios&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        r &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; radios&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        radiolist +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;r + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; radiolist
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    filename &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;commandlog.txt&#039;&lt;/span&gt;
    f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filename&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# a+ is &amp;quot;append to file, create it if it doesn&#039;t exist&amp;quot;&lt;/span&gt;
    timenow &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d/%m/%Y %H:%M:%S&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;gmtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;timenow&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# make an entry for the log by joining the timestamp with the text passed in&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; write_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    filename &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;conlog.txt&#039;&lt;/span&gt;
    f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filename&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# a+ is &amp;quot;append to file, create it if it doesn&#039;t exist&amp;quot;&lt;/span&gt;
    timenow &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d/%m/%Y %H:%M:%S&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;gmtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;timenow&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# make an entry for the log by joining the timestamp with the text passed in&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# The Server&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; ThreadedRequestHandler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;StreamRequestHandler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; handle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;# we find the current thread for the client connection just set up, to&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# use in the log file&lt;/span&gt;
        cur_thread &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;currentThread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# log the new connection details&lt;/span&gt;
        write_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Connect from %s using %s &lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;client_address&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cur_thread.&lt;span class=&quot;me1&quot;&gt;getName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# print to the server&#039;s console the new connection IP address/port&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;client_address&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# loop to handle client requests....&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;:
            &lt;span class=&quot;co1&quot;&gt;# using StreamRequestHandler means our input from the client&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# is  &amp;quot;file-like&amp;quot; and can be read with &amp;quot;file-like&amp;quot; commands&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we read a line at a time, using readline()&lt;/span&gt;
            &lt;span class=&quot;kw3&quot;&gt;cmd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;rfile&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;readline&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;lower&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# to keep things clean, we remove any characters that aren&#039;t&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# &amp;quot;printable&amp;quot; simple ASCII&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# these are between 32 and 127 in the ASCII table&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we look at each character, and then make a new word by&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# .join()ing each accepted character with no space in between&lt;/span&gt;
            asccmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; x &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;cmd&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;128&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we make a list called &amp;quot;words&amp;quot; holding the received words which&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# will be inspected by various functions&lt;/span&gt;
            words &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; asccmd.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# If a client uses sock.close() itself, to disconnect, it appears that&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we read a continuous stream of &amp;quot;&amp;quot; on the dead&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# socket, which puts CPU to 100%.&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# The &amp;quot;While&amp;quot; loop is probably responsible, but I can&#039;t see another&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# way to keep the connection up for multiple commands.&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# Further connection are accepted due to the Threaded nature of the server.&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# The CPU load is unacceptable though&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# HACK ?&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# Looking for &amp;quot;&amp;quot; and then breaking&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# the connection from the server end (even though the client has&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# gone) cures this.&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;cmd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;:
                &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
                &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# if the words list is empty, go back and get more input&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; words:
                &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# we have input....&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# filter based on the first word - these are the&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# pre-set commands the server will accept&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# the client wants to know the currently available&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# radio names - held in the variable &amp;quot;rnames&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getnames&amp;quot;&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rnames&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# words[-1] (the last word in the list) will always be the&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# radio name. We give the variable &amp;quot;my_radio&amp;quot; this value, for&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;# identifying which radio object to apply the method to&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;count&amp;quot;&lt;/span&gt;:
                count &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; count_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;count&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ident&amp;quot;&lt;/span&gt;:
                ident_text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;GM4SLV Radio Server&amp;quot;&lt;/span&gt;
                radio_list &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ident_text + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;Available : &lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; + radio_list + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
                freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;setmode&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
                newmode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;newmode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
                    freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    newfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;newfreq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ValueError&lt;/span&gt;:
                    &lt;span class=&quot;co1&quot;&gt;#freq = float(my_radio.get_freq())&lt;/span&gt;
                    &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Error in freq. %s No change&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; % words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getsmeter&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                smeter &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;my_radio.&lt;span class=&quot;me1&quot;&gt;get_smeter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;smeter&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gets&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_s&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;listradios&amp;quot;&lt;/span&gt;:
                radios &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radios&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getpreamp&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_pre&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;preampon&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;pre_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;preamp2on&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;pre_2_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;preampoff&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;pre_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getatt&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_att&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atton&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;att_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;attoff&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;att_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;tune&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                tune &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;tune&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tune&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;getpwr&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                pwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;get_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;setpwr&amp;quot;&lt;/span&gt;:
                my_radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                spwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
                pwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; my_radio.&lt;span class=&quot;me1&quot;&gt;set_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;spwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; words&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;:
                write_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Got quit from {}&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;client_address&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# log it&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Goodbye! &lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# say Goodbye&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:  &lt;span class=&quot;co1&quot;&gt;# nothing in words[0] matches a pre-set command....&lt;/span&gt;
                write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Received %s&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; % words&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# log it, it&#039;s unusual&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;wfile&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Command not recognized&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;# inform the client&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; ThreadedIcomServer&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ThreadingMixIn&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;TCPServer&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; __name__ &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;__main__&#039;&lt;/span&gt;:
    &lt;span class=&quot;co1&quot;&gt;# define the lock to be used on the serial port access&lt;/span&gt;
    lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# address (&#039;&#039; = all available interfaces) to listen on, and port number&lt;/span&gt;
    address &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9999&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    server &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; ThreadedIcomServer&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;address&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ThreadedRequestHandler&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    server.&lt;span class=&quot;me1&quot;&gt;allow_reuse_address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# define that the server will be threaded, and will serve &amp;quot;forever&amp;quot; ie. not quit after the client disconnects&lt;/span&gt;
    t &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;target&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;server.&lt;span class=&quot;me1&quot;&gt;serve_forever&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# start the server thread&lt;/span&gt;
    t.&lt;span class=&quot;me1&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    write_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;Server loop running in thread: %s&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; % &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;t.&lt;span class=&quot;me1&quot;&gt;getName&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Server&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;server1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;576-9468&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;configurtion_module&quot;&gt;Configurtion Module&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_5f491c71348427373a57bc76d46bbc18_10&quot;&gt;conf.py &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_5f491c71348427373a57bc76d46bbc18_10&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:topics:netradio_control&amp;amp;codeblock=1&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_py&quot;&gt;cpnf.py&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;&lt;span class=&quot;co1&quot;&gt;# header&lt;/span&gt;
preamble &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;fe&amp;quot;&lt;/span&gt;
controller &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;e0&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# commands/requests&lt;/span&gt;
set_freq_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;05&amp;quot;&lt;/span&gt;
set_mode_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;06&amp;quot;&lt;/span&gt;
get_freq_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;03&amp;quot;&lt;/span&gt;
get_mode_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;04&amp;quot;&lt;/span&gt;
get_smeter_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;15&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;02&amp;quot;&lt;/span&gt;
get_swr_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;15&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;12&amp;quot;&lt;/span&gt;
digi_off_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;1a&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;04&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;
&amp;nbsp;
set_pre_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;16&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;02&amp;quot;&lt;/span&gt;
&amp;nbsp;
set_pre_off &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;
set_pre_on &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;01&amp;quot;&lt;/span&gt;
set_pre_2_on &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;02&amp;quot;&lt;/span&gt;
&amp;nbsp;
set_att_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;11&amp;quot;&lt;/span&gt;
set_att_on &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;20&amp;quot;&lt;/span&gt;
set_att_off &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;
&amp;nbsp;
ptt_on_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;1c&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;01&amp;quot;&lt;/span&gt;
ptt_off_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;1c&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;
&amp;nbsp;
pwr_cmd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;14&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;0a&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# end of message&lt;/span&gt;
eom &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;fd&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# controller responses&lt;/span&gt;
ack &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;fb&amp;quot;&lt;/span&gt;
nak &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;fa&amp;quot;&lt;/span&gt;
&amp;nbsp;
a1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;5A&amp;quot;&lt;/span&gt;
n1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;IC-R75&amp;quot;&lt;/span&gt;
cal1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;36&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;47&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;35&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
a2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;5e&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# a2 = &amp;quot;\x01&amp;quot;&lt;/span&gt;
n2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;IC-718&amp;quot;&lt;/span&gt;
cal2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;27&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;28&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;58&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;35&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;42&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
n3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AR7030&amp;quot;&lt;/span&gt;
&amp;nbsp;
n4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;IC-M710&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configurtion Module&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configurtion_module&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;9469-10348&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;icom_c-iv_module&quot;&gt;Icom C-IV module&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_5f491c71348427373a57bc76d46bbc18_11&quot;&gt;icom.py &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_5f491c71348427373a57bc76d46bbc18_11&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:topics:netradio_control&amp;amp;codeblock=2&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_py&quot;&gt;icom.py&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; serial
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; conf &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#sport = &amp;quot;COM1&amp;quot;&lt;/span&gt;
sport &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/dev/ttyS0&amp;quot;&lt;/span&gt;
sbaud &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9600&lt;/span&gt;
&amp;nbsp;
lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; Icom&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; model&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio_address&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; cal&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; serial.&lt;span class=&quot;me1&quot;&gt;Serial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sport&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sbaud&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; timeout&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;model&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; model
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; radio_address
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cal&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; cal
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; digi_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + digi_off_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_pre&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_pre_cmd + eom
&amp;nbsp;
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;01&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;02&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_pwr&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + pwr_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        p1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        p2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        p3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        p4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        pwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; * &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * p3 + p4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * p1 + p2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr*&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;/&lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_pwr&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#if pwr == &amp;quot;25&amp;quot;:&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#    spwr = &amp;quot;\x00&amp;quot; + &amp;quot;\x63&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#elif pwr == &amp;quot;50&amp;quot;:&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#    spwr = &amp;quot;\x01&amp;quot; + &amp;quot;\x27&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#elif pwr == &amp;quot;75&amp;quot;:&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#    spwr = &amp;quot;\x01&amp;quot; + &amp;quot;\x91&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#elif pwr == &amp;quot;100&amp;quot;:&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#    spwr = &amp;quot;\x02&amp;quot; + &amp;quot;\x55&amp;quot;&lt;/span&gt;
        rigpwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;255&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rigpwr &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rigpwr
        pwr1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rigpwr / &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
        pwr2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; rigpwr % &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
        spwr1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr1 / &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        spwr2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr1 % &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        spwr3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr2 / &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        spwr4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pwr2 % &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        spwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;spwr1+spwr2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;spwr3+spwr4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;spwr &amp;quot;, spwr&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + pwr_cmd + spwr + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pre_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_pre_cmd + set_pre_on + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pre_2_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_pre_cmd + set_pre_2_on + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pre_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_pre_cmd + set_pre_off + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; ptt_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + ptt_on_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print result[5]&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ptt on&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Error&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; ptt_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + ptt_off_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print result[5]&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ptt off&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Error&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_att&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_att_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;20&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_att_cmd + set_att_on + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_att_cmd + set_att_off + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        fdig &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%010d&amp;quot;&lt;/span&gt; % &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq * &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        bcd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
            bcd +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq_bcd&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fdig&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fdig&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        set_freq_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; byte &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; bcd:
            set_freq_val +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_freq_cmd + set_freq_val + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Set Freq success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received / Freq not supported&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + get_freq_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; k &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;:
            f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * f + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;nib&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; k&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%.3f&amp;quot;&lt;/span&gt; % &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;in set_mode() with &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rtty&amp;quot;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lsb&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;usb&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;01&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;am&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;02&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;03&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rtty&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;04&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;fm&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;05&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw-r&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;07&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rtty-r&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;08&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;s-am&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;11&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Mode not recognized&amp;quot;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + set_mode_cmd + set_mode_val + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; ack:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Set Mode Success&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; nak:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NAK received / Mode not supported&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + get_mode_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;00&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lsb&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;01&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;usb&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;02&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;am&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;03&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;04&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rtty&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;05&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;fm&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;08&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rtty-r&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;07&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw-r&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;11&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;s-am&amp;quot;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;rtty&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; mode
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;upper&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_s&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + get_smeter_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        sm1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        sm2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        sm3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        sm4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; * &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * sm3 + sm4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * sm1 + sm2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; s
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_swr&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble + preamble + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio_address&lt;/span&gt; + controller + get_swr_cmd + eom
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        sm1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        sm2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        sm3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        sm4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;result&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;
        swr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; * &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * sm3 + sm4&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt; * sm1 + sm2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; swr
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_smeter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_s&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        cal &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cal&lt;/span&gt;
        s1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s1 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s2 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s3 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s5 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s4 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s6 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s5 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s7 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s6 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; s1 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s2 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;113&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s1 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s3 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;103&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s2 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s4 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;93&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s3 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s5 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;83&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s4 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s6 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;73&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s5 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s7 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s6 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;43&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s7 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_name&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;model&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; tune&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;tuning&amp;quot;&lt;/span&gt;
        curmode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;lower&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;Current Mode &amp;quot;,curmode&lt;/span&gt;
&amp;nbsp;
        curpwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; curpwr &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;98&lt;/span&gt;:
            curpwr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; curpwr + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;Current Power &amp;quot;, curpwr&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;Current percent power &amp;quot;, curpwr&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;rtty&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;Tuning power &amp;quot;, self.get_pwr()&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;PTT On&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ptt_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        swr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;  &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_swr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;SWR :&amp;quot;, swr&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ptt_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;PTT Off&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;curmode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;Mode reset &amp;quot;,self.get_mode()&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_pwr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;curpwr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Tuned : (ref pwr : %s)&amp;quot;&lt;/span&gt; % swr
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Tuned : (ref pwr : %s)&amp;quot;&lt;/span&gt; % swr
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        lock.&lt;span class=&quot;me1&quot;&gt;acquire&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        echo &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;echo&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        count &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; byte &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; eom:
            byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;%#02x&amp;quot; % ord(byte)&lt;/span&gt;
            result +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; byte
            count +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; count &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;:
                &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;
        lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; nib&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; s&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        k &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;s&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i / &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; i % &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            k &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; k &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; k &amp;amp; &lt;span class=&quot;nu0&quot;&gt;0xf&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; freq_bcd&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; d1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; d2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt; * d1 + d2&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Icom C-IV module&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;icom_c-iv_module&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;10349-21537&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;aor_ar7030_module&quot;&gt;AOR AR7030 module&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_5f491c71348427373a57bc76d46bbc18_12&quot;&gt;aor.py &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_5f491c71348427373a57bc76d46bbc18_12&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:topics:netradio_control&amp;amp;codeblock=3&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_py&quot;&gt;aor.py&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; serial
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#sport = &amp;quot;/dev/ttyS0&amp;quot;&lt;/span&gt;
sport &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/dev/ttyUSB1&amp;quot;&lt;/span&gt;
sbaud &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1200&lt;/span&gt;
&amp;nbsp;
lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
fract &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; ** &lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;44545&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; Ar7030&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; model&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; serial.&lt;span class=&quot;me1&quot;&gt;Serial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sport&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sbaud&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; timeout&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;model&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; model
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; check_bit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bit&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        mask &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; bit
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &amp;amp; mask&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_bit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bit&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        mask &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; bit
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; | mask
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; clear_bit&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bit&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        mask &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; bit&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &amp;amp; mask&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_ident&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;5f&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;40&#039;&lt;/span&gt;
        ident &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; ident
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_pre&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        p &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;check_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; p:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pre_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#get current 8-bit rxcon byte :&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit0 = filter FS3&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit1 = filter FS2&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit2 = filter FS1&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit3 = filter FS4&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit4 = preamp enabled&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit5 = atten 0 = 20dB / 1 = 40dB&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit6 = input filter 0 = HF / 1 = LF&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# bit7 = attenuator enabled&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
&amp;nbsp;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# set bit 4 ON = preamp ON and get the new 8-bit rxcon byte&lt;/span&gt;
        pon &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# split new rxcon byte into two 4-bit nibbles, add 48/96 (\x30 and \x60)&lt;/span&gt;
        high &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        low &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &amp;amp; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;29&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Command sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pre_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#get current 8-bit rxcon byte&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# set bit 4 OFF = preamp OFF and get the new 8-bit rxcon byte&lt;/span&gt;
        pon &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;clear_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# split new rxcon byte into two 4-bit nibbles, add 48/96 (\x30 and \x60)&lt;/span&gt;
        high &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        low &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &amp;amp; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;29&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Command sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_att&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
&amp;nbsp;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        a &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;check_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; a:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#get current 8-bit rxcon byte&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# set bit 7 ON = ATT ON and get the new 8-bit rxcon byte&lt;/span&gt;
        pon &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# split new rxcon byte into two 4-bit nibbles, add 48/96 (\x30 and \x60)&lt;/span&gt;
        high &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        low &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &amp;amp; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;29&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Command sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#get current 8-bit rxcon byte&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt;
        byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# set bit 7 OFF = att OFF and get the new 8-bit rxcon byte&lt;/span&gt;
        pon &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;clear_bit&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;# split new rxcon byte into two 4-bit nibbles, add 48/96 (\x30 and \x60)&lt;/span&gt;
        high &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        low &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;pon &amp;amp; &lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;32&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;48&#039;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;high&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;low&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;29&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Command sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; freq * fract
        &lt;span class=&quot;co1&quot;&gt;#print fval&lt;/span&gt;
        b1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;1048576&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fval % &lt;span class=&quot;nu0&quot;&gt;1048576&lt;/span&gt;
        b2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;65536&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fval % &lt;span class=&quot;nu0&quot;&gt;65536&lt;/span&gt;
        b3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;4096&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fval % &lt;span class=&quot;nu0&quot;&gt;4096&lt;/span&gt;
        b4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        fval &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fval % &lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt;
        b5 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;48&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval / &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        b6 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;96&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fval % &lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        f_tuple &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; b1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b2&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b3&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b4&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b5&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; b6 &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        freqStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; byte &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; f_tuple:
            freqStr +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;chr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;byte&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;31&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;4a&#039;&lt;/span&gt; + freqStr + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;24&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Freq Set&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;31&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;4a&#039;&lt;/span&gt;
&amp;nbsp;
        freqStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        f_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; k &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; freqStr:
            f_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; f_val * &lt;span class=&quot;nu0&quot;&gt;256&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;k&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%.3f&amp;quot;&lt;/span&gt; % &lt;span class=&quot;kw2&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f_val / fract&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lsb&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;66&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;usb&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;67&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;am&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;61&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;65&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;64&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;fm&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;63&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;s-am&amp;quot;&lt;/span&gt;:
            set_mode_val &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;62&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Mode not recognized&amp;quot;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;81&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;31&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;4d&#039;&lt;/span&gt; + set_mode_val + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;22&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;80&#039;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Mode sent&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;50&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;31&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;4d&amp;quot;&lt;/span&gt;
        m &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;01&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;am&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;02&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;s-am&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;03&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;fm&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;04&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;05&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;cw&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;06&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lsb&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; m &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;07&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;usb&amp;quot;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; mode.&lt;span class=&quot;me1&quot;&gt;upper&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_s&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;2e&#039;&lt;/span&gt;
        sraw &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sraw&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_cal&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;52&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;3f&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;44&#039;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;11&#039;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;sending getcal&amp;quot;&lt;/span&gt;
        cbytes &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        cal &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; c &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; cbytes:
            cal.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; cal
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_smeter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_s&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        cal &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_cal&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        s1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s1 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s2 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s3 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s5 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s4 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s6 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s5 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        s7 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s6 - cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; s1 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s2 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;113&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s1 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s3 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;103&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s2 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s4 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;93&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s3 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s5 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;83&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s4 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s6 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;73&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s5 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; s7 &lt;span class=&quot;sy0&quot;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;63&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s6 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; -&lt;span class=&quot;nu0&quot;&gt;43&lt;/span&gt;
            adj &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s7 / cal&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;dbm&lt;/span&gt; + adj&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sendStr&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; reply&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;# apply thread lock&lt;/span&gt;
        lock.&lt;span class=&quot;me1&quot;&gt;acquire&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; reply:  &lt;span class=&quot;co1&quot;&gt;# for reading S-meter&lt;/span&gt;
            result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; result:
                result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
&amp;nbsp;
            result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
            byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; n &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;71&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;#byte = &amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; byte:
                    byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
                result +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; byte
&amp;nbsp;
                byte &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
                n -&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
            lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;AOR AR7030 module&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;aor_ar7030_module&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;21538-29776&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;icom_ic-m710_module&quot;&gt;Icom IC-M710 module&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_5f491c71348427373a57bc76d46bbc18_13&quot;&gt;m710.py &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_5f491c71348427373a57bc76d46bbc18_13&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:topics:netradio_control&amp;amp;codeblock=4&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_0y&quot;&gt;m710.0y&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&#039;&#039;
Python NMEA Radio Functions module for Icom IC-M710 Marine HF SSB Transceiver
&amp;nbsp;
    Copyright (C) 2015  John Pumford-Green
&amp;nbsp;
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
&amp;nbsp;
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
&amp;nbsp;
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.
&#039;&#039;&#039;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# serial port for Icom IC-M710 Rig Control&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; serial
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
version &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;v0.1&amp;quot;&lt;/span&gt;
&amp;nbsp;
sport &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;/dev/ttyUSB0&#039;&lt;/span&gt;
sbaud &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4800&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#ser = serial.Serial(sport, 4800, timeout=1)&lt;/span&gt;
lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# NMEA Codes&lt;/span&gt;
preamble &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;$PICOA,&amp;quot;&lt;/span&gt;
controller &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;90&amp;quot;&lt;/span&gt;
radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;01&amp;quot;&lt;/span&gt; 
cr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;0d&amp;quot;&lt;/span&gt;
lf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\x&lt;/span&gt;0a&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# Commands are sent as NMEA private sentences:&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# $PICOA,controller_id,radio_id,command,&amp;lt;parameter&amp;gt;,*HH&amp;lt;CR&amp;gt;&amp;lt;LF&amp;gt;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# where HH is the 2 digit ECC value below:&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# The protocol document states that for messages FROM the controller TO the radio&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# the ECC bytes are optional, and may be omitted. This appears to be false information, and&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# the ECC bytes seem to be necessary.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# The ECC checksum, is a two-digit hex value found by XORing the hex values of the characters &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# between &amp;quot;$&amp;quot; and &amp;quot;*&amp;quot; (but not including the $ or *)&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# The first part of the message is always:&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# &amp;quot;PICOA,90,01,&amp;quot; and this has an XOR value of (decimal) 112&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# we then XOR this with each character&#039;s decimal ASCII value, in the required command&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# and convert the result to a 2-digit hex value&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; m710&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; model&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; serial.&lt;span class=&quot;me1&quot;&gt;Serial&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sport&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sbaud&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; timeout&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;model&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; model
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;112&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; c &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; command:
            ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;c&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ^ ecc
        hecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;{0:02x}&#039;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ecc&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; hecc
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# we must force the radio into &amp;quot;Remote&amp;quot; mode before sending any other commands.    &lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; remote_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;REMOTE,ON&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;remote_on&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# we can leave the radio in &amp;quot;Remote&amp;quot; mode for as long as we want to control it remotely&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# but we must close the &amp;quot;Remote&amp;quot; mode when finished. The previous radio settings (channel/power etc) are&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# restored after Remote mode is closed.&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; remote_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;REMOTE,OFF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;co1&quot;&gt;#ser.close()&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;remote_off&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; ptt_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;TRX,TX&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; ptt_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; ptt_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;TRX,RX&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; ptt_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        fkhz &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_rxfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#fkhz = &amp;quot;%.3f&amp;quot; % (float(f) * 1000)&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; fkhz
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_rxfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_txfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Set freq success&amp;quot;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_rxfreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;RXF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            fkhz &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%.3f&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; fkhz
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_rxfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_txfreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;TXF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            fkhz &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%.3f&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; fkhz
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_txfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;MODE&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;J2B&amp;quot;&lt;/span&gt;:
                mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;DATA&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; mode
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; mode.&lt;span class=&quot;me1&quot;&gt;upper&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; mode &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;DATA&amp;quot;&lt;/span&gt;:
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;J2B&amp;quot;&lt;/span&gt;
&amp;nbsp;
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;MODE,&amp;quot;&lt;/span&gt;+mode
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;in set_mode with &amp;quot;, sendStr&lt;/span&gt;
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_rxfreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        fmhz &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;
        f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fmhz&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;RXF,&amp;quot;&lt;/span&gt;+f
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_rxfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_txfreq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        fmhz &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; / &lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;
        f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fmhz&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;TXF,&amp;quot;&lt;/span&gt;+f
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_txfreq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_txpower&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;TXP&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            power &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; power
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; get_txpower&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_txpower&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;TXP,&amp;quot;&lt;/span&gt;+p
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; set_txpower&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_smeter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;SIGM&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;tx_rx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            smeter &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;120&lt;/span&gt; 
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; smeter
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_smeter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; speaker_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;SP,ON&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; speaker_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; speaker_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;SP,OFF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; speaker_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; sql_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;SQLC,ON&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; sql_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; sql_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;SQLC,OFF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; sql_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; nb_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NB,ON&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; nb_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; nb_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;NB,OFF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; nb_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; dim_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;DIM,ON&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; dim_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; dim_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;DIM,OFF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; dim_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; agc_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AGC,ON&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; agc_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; agc_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AGC,OFF&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; agc_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_vol&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AFG&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            vol &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; vol
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; get_vol&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_vol&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AFG,&amp;quot;&lt;/span&gt;+v
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; set_vol&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_rfg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;RFG&amp;quot;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble+controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+command+&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            rf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; rf
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; get_rfg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_att&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pre_on&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; pre_off&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_pre&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_rfg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;RFG,&amp;quot;&lt;/span&gt;+v
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        sendStr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; preamble +controller+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;+radio+&lt;span class=&quot;st0&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt; + command + &lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;+ecc+cr+lf
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; result:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; set_rfg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;v&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;# The message FROM the radio may be corrupted so we do a check on the received ECC versus our calculated cECC&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# from the received characters - which are everything AFTER the &amp;quot;$&amp;quot; and BEFORE the &amp;quot;*&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# starting the ECC calculation at message[1] ignores the &amp;quot;$&amp;quot; and we iterate through the message XORing each &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# character&#039;s ASCII (decimal) value until we have the final cECC which is converted by formatting it&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# into a two-digit hex value. This is then compared to the received (rECC) value from the radio&#039;s message. &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# If they match the message is acceptable and check_ecc() returns True to tx_rx(), &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# otherwise check_ecc() function returns &amp;quot;False&amp;quot; to tx_rx()&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# the True/False value is tested in tx_rx(). &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# If True then tx_rx() returns the incoming string to the calling function&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# otherwise it returns &amp;quot;False&amp;quot;. &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# The calling function then checkS the boolean state of the returned value. &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# If True (ie it has the radio&#039;s message and the ECC was good) the message &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# is sent back to the client. &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# If False the function calls itself again, and attempts to get an error-free reply from the radio, via tx_rx()&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; check_ecc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;message&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; recc&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        i &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        cecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; i &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;message&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
            cecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ord&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;message&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ^ cecc
            i +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;  
&amp;nbsp;
        cecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;{0:02x}&#039;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;cecc&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; cecc &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; recc:   
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;: 
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; tx_rx&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#print &amp;quot;in tx_rx, sendStr =  &amp;quot; , sendStr&lt;/span&gt;
        lock.&lt;span class=&quot;me1&quot;&gt;acquire&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sendStr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ser&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;readline&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#print result&lt;/span&gt;
        reply &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; result.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        ecc &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; reply&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;lower&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        message &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; reply&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;check_ecc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;message&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ecc&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; result
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Icom IC-M710 module&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;icom_ic-m710_module&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;29777-43713&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;text-mode_client&quot;&gt;Text-mode client&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_5f491c71348427373a57bc76d46bbc18_14&quot;&gt;client.py &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_5f491c71348427373a57bc76d46bbc18_14&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:topics:netradio_control&amp;amp;codeblock=5&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_py&quot;&gt;client.py&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;__author__ &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;gm4slv&#039;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# client to work with server_oo.py&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# &lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# # v0.1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;readline&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ImportError&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
HOST&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; PORT &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;localhost&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9999&lt;/span&gt;
&amp;nbsp;
smlog &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;pymon.txt&amp;quot;&lt;/span&gt;
log_active &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; make_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; sock
    sock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;AF_INET&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;SOCK_STREAM&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    sock.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;HOST&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; PORT&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; num
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; radios
&amp;nbsp;
    names &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;listradios&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    radios &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; names.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radios&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; num
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    r &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; radios&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; r
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; radio
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;There are currently %d radios connected.&amp;quot;&lt;/span&gt; % num
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        r &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Radio %d is %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_lradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    lradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Select radio to log: &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; lradio:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Please select a radio&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; num:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Selected radio not recognized&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; lradio
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_radio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# global radio&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; radio_num
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; rname
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;There are currently %d radios connected.&amp;quot;&lt;/span&gt; % num
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        r &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Radio %d is %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    radio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Choose a radio number from the list : &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; radio:
            &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Please select a radio&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; num:
            &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Selected radio not recognized&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ValueError&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Please enter a number&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
        radio_num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        rname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; radio_num&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; prompt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;The available commands are:&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lr   : List Radios&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sr   : Select the Radio to control&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gr   : Get currently selected Radio name&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gm   : Get Mode&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sm   : Set Mode&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gf   : Get Freq&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sf   : Set Freq&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gs   : Get S-meter&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gp   : Get Pre-amp&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;pon  : Set Pre-amp On&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;p2on : Set Pre-amp 2 On&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;poff : Set Pre-amp Off&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gatt : Get Attn&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;aton : Set Attn On&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atoff: Set Attn Off&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ga   : Get All (status of all radios)&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sync : Sync freq/mode on two radios&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;log  : Setup background logging to file&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;h    : Help (show this command list)&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;q    : quit&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; radio_num
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; rname
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; sock
    pfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    pmode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    data &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname + &lt;span class=&quot;st0&quot;&gt;&amp;quot; (&amp;quot;&lt;/span&gt; + pfreq + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + pmode + &lt;span class=&quot;st0&quot;&gt;&amp;quot;) &amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;lower&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sf&amp;quot;&lt;/span&gt;:
            sfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + sfreq + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sm&amp;quot;&lt;/span&gt;:
            smode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + smode + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;only one command at a time please&amp;quot;&lt;/span&gt;
            start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;u&amp;quot;&lt;/span&gt;:
        oldf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        newf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;oldf&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + newf + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;d&amp;quot;&lt;/span&gt;:
        oldf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        newf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;oldf&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + newf + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;lr&amp;quot;&lt;/span&gt;:
        list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sr&amp;quot;&lt;/span&gt;:
&amp;nbsp;
        radio_num&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; set_radio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; radio_num:
            radio_num&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; set_radio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gr&amp;quot;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Radio selected is %s&amp;quot;&lt;/span&gt; % rname
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gm&amp;quot;&lt;/span&gt;:
        mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sm&amp;quot;&lt;/span&gt;:
        smode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Enter mode: &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + smode + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gf&amp;quot;&lt;/span&gt;:
        freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s kHz&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sf&amp;quot;&lt;/span&gt;:
        sfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Enter freq (kHz): &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + sfreq + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gs&amp;quot;&lt;/span&gt;:
        smeter &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getsmeter&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %sdBm&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; smeter&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gp&amp;quot;&lt;/span&gt;:
        preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getpreamp&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;pon&amp;quot;&lt;/span&gt;:
        preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;preampon&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;p2on&amp;quot;&lt;/span&gt;:
        preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;preamp2on&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;poff&amp;quot;&lt;/span&gt;:
        preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;preampoff&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;gatt&amp;quot;&lt;/span&gt;:
        preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getatt&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; preamp&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;aton&amp;quot;&lt;/span&gt;:
        att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;atton&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;atoff&amp;quot;&lt;/span&gt;:
        att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;attoff&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio_num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%s replied: %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; att&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;ga&amp;quot;&lt;/span&gt;:
        get_all&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;log&amp;quot;&lt;/span&gt;:
        fname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Enter a filename (or &lt;span class=&quot;es0&quot;&gt;\&amp;quot;&lt;/span&gt;Return&lt;span class=&quot;es0&quot;&gt;\&amp;quot;&lt;/span&gt; for default) :&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; fname &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;:
            fname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; smlog
        &lt;span class=&quot;co1&quot;&gt;# check file is valid&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            f.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;IOError&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;File/path not valid&amp;quot;&lt;/span&gt;
            start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        list_radios&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        lradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_lradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; lradio:
            lradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_lradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        rname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; lradio &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; log_active:
            &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Logging already active on &amp;quot;&lt;/span&gt; + rname
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            tlog &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Enter a polling interval (seconds) :&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            p &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;target&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;log&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; args&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lradio&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; tlog&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fname&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            p.&lt;span class=&quot;me1&quot;&gt;setDaemon&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            p.&lt;span class=&quot;me1&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            log_active.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;lradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;sync&amp;quot;&lt;/span&gt;:
        sync_result &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; sync&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; sync_result
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;h&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;or&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;help&amp;quot;&lt;/span&gt;:
        prompt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;q&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;or&lt;/span&gt; data &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;:
        rx &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Server says: %s &amp;quot;&lt;/span&gt; % rx
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#prompt()&lt;/span&gt;
        start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_all&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; radio
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;There are currently %d radios connected.&amp;quot;&lt;/span&gt; % num
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;=&amp;quot;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        r &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        n &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        smeter &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getsmeter&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        preamp &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getpreamp&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        att &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getatt&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Status of Radio %d (%s) &lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Frequency : %s kHz&amp;quot;&lt;/span&gt; % freq
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Mode: %s&amp;quot;&lt;/span&gt; % mode
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;S-Meter: %sdBm&amp;quot;&lt;/span&gt; % smeter
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Preamp = %s&amp;quot;&lt;/span&gt; % preamp
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Attenuator = %s &amp;quot;&lt;/span&gt; % att
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;=&amp;quot;&lt;/span&gt; * &lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; log&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; t&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; f&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;
    tlog &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; t
    sradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    sr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;p&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            frequency &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + sr + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            smeter &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getsmeter&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + sr + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + sr + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;f&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sradio&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; frequency&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; smeter&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;tlog&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;finally&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_mradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    mradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Choose Master radio number from the list: &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; mradio:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Please select a radio&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; num:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Selected radio not recognized&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; mradio
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_sradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    sradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;raw_input&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Choose Slave radio number from the list: &amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; sradio:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Please select a radio&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; num:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Selected radio not recognized&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;False&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; sradio
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; sync&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    num &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rnum&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Set SLAVE to the same Frequency and Mode as MASTER.&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Currently connected radios are:&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; num&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        r &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_rname&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;%d is %s&amp;quot;&lt;/span&gt; % &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;i + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; r&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    mradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_mradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; mradio:
        mradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_mradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    sradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_sradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; sradio:
        sradio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; get_sradio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    sr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    mr &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mradio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    mfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + mr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    mmode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + mr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    sfreq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + mfreq + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + sr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    smode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + mmode + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + sr&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;sfreq + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt; + smode + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# Try to send and receive in one-go, to prevent the logging thread and the main prog&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# getting the wrong receive data&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
        lock.&lt;span class=&quot;me1&quot;&gt;acquire&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;global&lt;/span&gt; sock
        sock.&lt;span class=&quot;me1&quot;&gt;sendall&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        received &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; sock.&lt;span class=&quot;me1&quot;&gt;recv&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;finally&lt;/span&gt;:
        lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; received
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;fname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; smeter&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    filename &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; fname
    f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filename&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    timenow &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d/%m/%Y %H:%M:%S&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;gmtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;timenow&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; freq&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; smeter&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    f.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
make_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
get_all&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Please choose a radio&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;
radio_num&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; set_radio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;not&lt;/span&gt; radio_num:
    radio_num&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rname &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; set_radio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
prompt&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
start&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h4 id=&quot;example_session&quot;&gt;Example session&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;There are currently &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; radios connected.
=================================
Status of Radio &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IC-R75&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
&amp;nbsp;
Frequency : &lt;span class=&quot;nu0&quot;&gt;2187.500&lt;/span&gt; kHz
Mode: DATA
S-Meter: -114.2dBm
Preamp = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
Attenuator = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 
=================================
Status of Radio &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;IC-M710&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
&amp;nbsp;
Frequency : &lt;span class=&quot;nu0&quot;&gt;16804.500&lt;/span&gt; kHz
Mode: DATA
S-Meter: -120.0dBm
Preamp = None
Attenuator = None 
=================================
Status of Radio &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;AR7030&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; 
&amp;nbsp;
Frequency : &lt;span class=&quot;nu0&quot;&gt;2182.000&lt;/span&gt; kHz
Mode: USB
S-Meter: -110.3dBm
Preamp = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
Attenuator = &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; 
=================================
&amp;nbsp;
Please choose a radio
&amp;nbsp;
There are currently &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; radios connected.
Radio &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt; is IC-R75
Radio &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; is IC-M710
Radio &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt; is AR7030
Choose a radio number from the list : &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
&amp;nbsp;
The available commands are:
lr   : List Radios
sr   : Select the Radio to control
gr   : Get currently selected Radio name
gm   : Get Mode
sm   : Set Mode
gf   : Get Freq
sf   : Set Freq
&lt;span class=&quot;kw2&quot;&gt;gs&lt;/span&gt;   : Get S-meter
gp   : Get Pre-amp
pon  : Set Pre-amp On
p2on : Set Pre-amp &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt; On
poff : Set Pre-amp Off
gatt : Get Attn
aton : Set Attn On
atoff: Set Attn Off
ga   : Get All &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;status of all radios&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sync&lt;/span&gt; : Sync freq&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;mode on two radios
log  : Setup background logging to &lt;span class=&quot;kw2&quot;&gt;file&lt;/span&gt;
h    : Help &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;show this &lt;span class=&quot;kw3&quot;&gt;command&lt;/span&gt; list&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
q    : quit
&amp;nbsp;
AR7030 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2182.000&lt;/span&gt; USB&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; sf &lt;span class=&quot;nu0&quot;&gt;5680&lt;/span&gt;
AR7030 replied: Freq Set
AR7030 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5680.000&lt;/span&gt; USB&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Text-mode client&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;text-mode_client&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;43714-55814&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;gui_client&quot;&gt;GUI Client&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:screenshot_2022-07-24_15.04.52.png&quot; class=&quot;media&quot; title=&quot;public:radio:screenshot_2022-07-24_15.04.52.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=300&amp;amp;tok=5e592b&amp;amp;media=public:radio:screenshot_2022-07-24_15.04.52.png&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;GUI Client&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;gui_client&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;55815-55904&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;no_s-meter_version&quot;&gt;No S-meter version&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_5f491c71348427373a57bc76d46bbc18_15&quot;&gt;gui_nosmeter.py &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_5f491c71348427373a57bc76d46bbc18_15&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:topics:netradio_control&amp;amp;codeblock=7&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_py&quot;&gt;gui_nosmeter.py&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;&lt;span class=&quot;co1&quot;&gt;# # new class-based gui&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Tkinter&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; Network&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;make_con&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; make_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;AF_INET&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;SOCK_STREAM&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;192.168.21.107&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9999&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            lock.&lt;span class=&quot;me1&quot;&gt;acquire&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sendall&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;received&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;recv&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;finally&lt;/span&gt;:
            lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;received&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; Dash&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; master&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;master&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; master
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;s&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n1.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;getsockname&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n1.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;getpeername&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
        dash_frame &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Toplevel&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;master&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; borderwidth &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; relief &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; GROOVE&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Server&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;protocol&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;WM_DELETE_WINDOW&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;handler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;resizable&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;geometry&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;300x150+10-10&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;#self.utc_time = StringVar()&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#Label(dash_frame, textvariable = self.utc_time, fg = &#039;green&#039;, bg = &#039;black&#039;).grid(row = 0, column = 0, sticky = W)&lt;/span&gt;
&amp;nbsp;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;s&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;lt; --- &amp;gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;yellow&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; columnspan &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        q_button &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Quit&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        q_button.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; handler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; up_dash&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ident&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.utc_time.set(time.strftime(&amp;quot;%d/%m/%Y %H:%M&amp;quot;, time.gmtime(time.time())))&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; nRadio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; master&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;master&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; master
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; radio
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        radio_frame &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Frame&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;master&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; borderwidth&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; relief&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;GROOVE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        radio_frame.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Freq/kHz&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Mode&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#Label(radio_frame, text=&amp;quot;Signal/dBm&amp;quot;, width=10).grid(row=0, column=3)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#Label(radio_frame, text=&amp;quot;Max/dBm&amp;quot;, width=10, fg=&#039;red&#039;).grid(row=0, column=4)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#Label(radio_frame, text=&amp;quot;Ave/dBm&amp;quot;, width=10, fg=&#039;green&#039;).grid(row=0, column=5)&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#Label(radio_frame, text=&amp;quot;Min/dBm&amp;quot;, width=10, fg=&#039;blue&#039;).grid(row=0, column=6)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_name&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_name&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;red&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_mode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_mode&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&#039;&#039;&#039;
        self.e_mode = Entry(radio_frame, width=10, bg = &#039;white&#039;, fg = &#039;black&#039;, insertbackground = &#039;blue&#039;)
        self.e_mode.grid(row=2, column=2)
        self.e_mode.bind(&#039;&amp;lt;Return&amp;gt;&#039;, (lambda event: self.set_mode(self.num)))
        &#039;&#039;&#039;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.e_mode = StringVar()&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_usb&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;usb&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_usb&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_lsb&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;LSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;lsb&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_lsb&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_cw&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;CW&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;cw&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_cw&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_am&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AM&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;am&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_am&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_data&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Data&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_data&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_qsy_up&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;+1kHz&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;qsy_up&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_qsy_up&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_qsy_down&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;-1kHz&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;qsy_down&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_qsy_down&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_update&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Get&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;:&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_update&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_smeter&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.l_smeter.grid(row=1, column=3, sticky=E)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;max_var&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_max&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;max_var&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.l_max.grid(row=1, column=4)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ave_var&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_average&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ave_var&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.l_average.grid(row=1, column=5)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;min_var&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_min&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;min_var&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.l_min.grid(row=1, column=6)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Entry&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; insertbackground &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;blue&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;focus&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;bind&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;Return&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt; event: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pre&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; IntVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_pre&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Checkbutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pre&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp_onoff&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_pre&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_pre&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Preamp&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_pre&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;att&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; IntVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_att&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Checkbutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;att&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;att_onoff&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_att&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_att&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Att&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_att&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_log&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; IntVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_log&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Checkbutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_log&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.cb_log.grid(row = 6, column = 1, sticky = W)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_log&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Log to file...&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.l_log.grid(row = 6, column = 0, sticky = E)&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Canvas&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;260&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.c1.grid(row=2, column=3, columnspan=4, rowspan=3)&lt;/span&gt;
&amp;nbsp;
        name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_all&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.get_smeter(self.num)&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_preamp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_atten&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.graph_points()       &lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.avg()&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.max()&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.min()&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_log&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;10.0&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write_file&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;newfreq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;delete&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; END&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; qsy_up&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        oldf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        newf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;oldf&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + newf + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; qsy_down&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        oldf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        newf &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;oldf&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + newf + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#self.mode = str(self.e_mode.get())&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;newmode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + mode + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.e_mode.delete(0, END)&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_smeter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getsmeter&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;120&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; avg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;
        total &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; s:
            total +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; i
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;total / &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ave_var&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;310&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;green&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; s:
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; i
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;min_var&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;310&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;blue&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; s:
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; i
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;max_var&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;310&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;red&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_preamp&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getpreamp&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;1&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_pre&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_pre&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;deselect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; preamp_onoff&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;prestate&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pre&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;prestate&lt;/span&gt;:
            n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;preampon&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;preampoff&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_onoff&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;attstate&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;att&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;attstate&lt;/span&gt;:
            n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;atton&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;attoff&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_atten&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;atten&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getatt&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;atten&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;1&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_att&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;atten&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_att&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;deselect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_name&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; radio
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;all_names&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;listradios&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radios&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;all_names&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radios&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radios&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; graph_points&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        seq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;
        y_stretch &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        y_gap &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;
        x_stretch &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        x_width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
        x_gap &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
        height &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;delete&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ALL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;73&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;310&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;73&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; x&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; y &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;enumerate&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;seq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
            yd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; y + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt;
            x0 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; x * x_stretch + x * x_width + x_gap
            y0 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; height - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;yd * y_stretch + y_gap&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            x1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; x * x_stretch + x * x_width + x_width + x_gap
            y1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; height - y_gap
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_rectangle&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x0&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; y0&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; x1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; y1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;yellow&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filename&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name&lt;/span&gt;+&lt;span class=&quot;st0&quot;&gt;&amp;quot;.txt&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;f&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        timenow &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d/%m/%Y %H:%M:%S&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;gmtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;timenow&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;atten&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;f&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;f&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; update&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;co1&quot;&gt;#loops = 0&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
        nRadio1.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
        nRadio2.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
        nRadio3.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
        nRadio4.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
    d1.&lt;span class=&quot;me1&quot;&gt;up_dash&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;co1&quot;&gt;#loops = 0&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            nRadio1.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            nRadio2.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            nRadio3.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            nRadio4.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
        d1.&lt;span class=&quot;me1&quot;&gt;up_dash&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#loops += 1&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print threading.currentThread().name, loops&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    root.&lt;span class=&quot;me1&quot;&gt;destroy&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; __name__ &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;__main__&amp;quot;&lt;/span&gt;:
    version &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;v0.4&amp;quot;&lt;/span&gt;
    lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    root &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Tk&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#w, h = root.winfo_screenwidth(), root.winfo_screenheight()&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#root.geometry(&amp;quot;%dx%d+0+0&amp;quot; % (w, h))&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#root.geometry(&amp;quot;300x520+0+0&amp;quot;)&lt;/span&gt;
    root.&lt;span class=&quot;me1&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Netradio &amp;quot;&lt;/span&gt; + version&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#root.withdraw()&lt;/span&gt;
    n1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Network&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#radio_count = (n1.connect(&amp;quot;count&amp;quot;))&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#radio_count = 3&lt;/span&gt;
&amp;nbsp;
    radio_count &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;count&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; radio_count &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
        nRadio1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; nRadio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; radio_count &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:
        nRadio2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; nRadio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; radio_count &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;:
        nRadio3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; nRadio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; radio_count &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;:
        nRadio4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; nRadio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;4&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    d1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Dash&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;root&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;#print threading.currentThread().name&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#m1 = threading.Thread(target = main)&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#m1.setDaemon(True)&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#m1.start()&lt;/span&gt;
&amp;nbsp;
    update&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    root.&lt;span class=&quot;me1&quot;&gt;mainloop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:screenshot_2022-07-24_16.14.06.png&quot; class=&quot;media&quot; title=&quot;public:radio:screenshot_2022-07-24_16.14.06.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=200&amp;amp;tok=fd8008&amp;amp;media=public:radio:screenshot_2022-07-24_16.14.06.png&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;No S-meter version&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;no_s-meter_version&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;55905-70186&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;s-meter_display_version&quot;&gt;S-meter display version&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_5f491c71348427373a57bc76d46bbc18_16&quot;&gt;gui.py &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_5f491c71348427373a57bc76d46bbc18_16&quot;&gt;&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?do=export_code&amp;amp;id=public:radio:topics:netradio_control&amp;amp;codeblock=8&quot; title=&quot;Download Snippet&quot; class=&quot;mediafile mf_py&quot;&gt;gui.py&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file python&quot;&gt;&lt;span class=&quot;co1&quot;&gt;# # new class-based gui&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;Tkinter&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; *
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; Network&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;make_con&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; make_con&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;AF_INET&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;SOCK_STREAM&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;192.168.21.107&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9999&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; connect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            lock.&lt;span class=&quot;me1&quot;&gt;acquire&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sendall&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data + &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;received&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;recv&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2048&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;finally&lt;/span&gt;:
            lock.&lt;span class=&quot;me1&quot;&gt;release&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;received&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; Dash&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; master&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;master&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; master
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;s&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n1.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;getsockname&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n1.&lt;span class=&quot;me1&quot;&gt;sock&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;getpeername&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
        dash_frame &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Toplevel&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;master&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; borderwidth &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; relief &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; GROOVE&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Server&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;protocol&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;WM_DELETE_WINDOW&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;handler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;resizable&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;geometry&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;300x150-10+10&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        dash_frame.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;utc_time&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;utc_time&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;green&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;s&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;lt; --- &amp;gt; &amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;yellow&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; columnspan &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        q_button &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;dash_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Quit&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        q_button.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; handler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; up_dash&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;ident&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;server_msg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;utc_time&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d/%m/%Y %H:%M&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;gmtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; nRadio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; master&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;master&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; master
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; radio
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;r&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radio&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
        radio_frame &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Frame&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;master&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; borderwidth&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; relief&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;GROOVE&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        radio_frame.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Freq/kHz&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Mode&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Signal/dBm&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Max/dBm&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;red&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Ave/dBm&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;green&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Min/dBm&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;blue&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_name&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_name&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;red&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_mode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_mode&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&#039;&#039;&#039;
        self.e_mode = Entry(radio_frame, width=10, bg = &#039;white&#039;, fg = &#039;black&#039;, insertbackground = &#039;blue&#039;)
        self.e_mode.grid(row=2, column=2)
        self.e_mode.bind(&#039;&amp;lt;Return&amp;gt;&#039;, (lambda event: self.set_mode(self.num)))
        &#039;&#039;&#039;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.e_mode = StringVar()&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_usb&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;usb&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_usb&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_lsb&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;LSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;lsb&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_lsb&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_cw&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;CW&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;cw&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_cw&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_am&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AM&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;am&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_am&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_data&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Button&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Data&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;b_mode_data&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_l&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_smeter&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_l&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_smeter&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;max_var&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_max&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;max_var&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_max&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ave_var&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_average&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ave_var&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_average&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;min_var&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; StringVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_min&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; textvariable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;min_var&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_min&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Entry&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fg &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; insertbackground &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;blue&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;focus&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;bind&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;Return&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt; event: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pre&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; IntVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_pre&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Checkbutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pre&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp_onoff&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_pre&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_pre&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Preamp&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_pre&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;att&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; IntVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_att&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Checkbutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;att&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; command&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;lambda&lt;/span&gt;: &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;att_onoff&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_att&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_att&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Att&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_att&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_log&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; IntVar&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_log&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Checkbutton&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; variable &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_log&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_log&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; W&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_log&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Label&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; text &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Log to file...&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;l_log&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; sticky &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; E&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Canvas&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio_frame&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;260&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; bg&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;black&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;grid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;row&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; column&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; columnspan&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; rowspan&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        name &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_all&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_smeter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_preamp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get_atten&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;num&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;graph_points&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;       
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;avg&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;set_log&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; % &lt;span class=&quot;nu0&quot;&gt;10.0&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write_file&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_freq&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;newfreq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setfreq&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;e_freq&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;delete&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; END&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; set_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; mode&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;co1&quot;&gt;#self.mode = str(self.e_mode.get())&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;newmode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;setmode&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + mode + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#self.e_mode.delete(0, END)&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_smeter&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getsmeter&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;120&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; avg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;
        total &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; s:
            total +&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; i
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;total / &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;s&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ave_var&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;310&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;green&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;av&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;min&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; s:
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; i
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;min_var&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;310&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;blue&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mn&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        s &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; s&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; s:
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt;:
                &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; i
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;max_var&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;310&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;red&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mx&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_preamp&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getpreamp&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;1&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_pre&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_pre&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;deselect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; preamp_onoff&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;prestate&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;pre&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;prestate&lt;/span&gt;:
            n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;preampon&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;preampoff&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; att_onoff&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;attstate&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;att&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;attstate&lt;/span&gt;:
            n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;atton&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
            n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;attoff&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_atten&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;atten&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;getatt&amp;quot;&lt;/span&gt; + &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt; + radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;atten&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;1&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_att&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;atten&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;0&amp;quot;&lt;/span&gt;:
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;cb_att&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;deselect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; get_name&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; radio
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;all_names&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;listradios&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radios&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;all_names&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;print&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radios&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;radios&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;radio&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; - &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name_l&lt;/span&gt;.&lt;span class=&quot;kw2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; graph_points&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        seq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter_list&lt;/span&gt;
        y_stretch &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
        y_gap &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;
        x_stretch &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
        x_width &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
        x_gap &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
        height &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;delete&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ALL&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;73&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;310&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt; - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;73&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt; + &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;white&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; x&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; y &lt;span class=&quot;kw1&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;enumerate&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;seq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
            yd &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; y + &lt;span class=&quot;nu0&quot;&gt;123&lt;/span&gt;
            x0 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; x * x_stretch + x * x_width + x_gap
            y0 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; height - &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;yd * y_stretch + y_gap&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
            x1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; x * x_stretch + x * x_width + x_width + x_gap
            y1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; height - y_gap
            &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;c1&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;create_rectangle&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;x0&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; y0&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; x1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; y1&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; fill&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;yellow&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filename&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name&lt;/span&gt;+&lt;span class=&quot;st0&quot;&gt;&amp;quot;.txt&amp;quot;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;f&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        timenow &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strftime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;%d/%m/%Y %H:%M:%S&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;gmtime&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot; &amp;quot;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;timenow&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;freq&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;smeter&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;preamp&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;atten&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;f&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;f&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;co1&quot;&gt;#loops = 0&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;:
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            nRadio1.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            nRadio2.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            nRadio3.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;try&lt;/span&gt;:
            nRadio4.&lt;span class=&quot;me1&quot;&gt;get_all&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;except&lt;/span&gt;:
            &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
        d1.&lt;span class=&quot;me1&quot;&gt;up_dash&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#loops += 1&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;#print threading.currentThread().name, loops&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;time&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;quit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    root.&lt;span class=&quot;me1&quot;&gt;destroy&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; __name__ &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;__main__&amp;quot;&lt;/span&gt;:
    version &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;v0.3&amp;quot;&lt;/span&gt;
    lock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Lock&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    root &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Tk&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#w, h = root.winfo_screenwidth(), root.winfo_screenheight()&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#root.geometry(&amp;quot;%dx%d+0+0&amp;quot; % (w, h))&lt;/span&gt;
    root.&lt;span class=&quot;me1&quot;&gt;geometry&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;550x600+0+0&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    root.&lt;span class=&quot;me1&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;GM4SLV Radio Controller &amp;quot;&lt;/span&gt; + version&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#root.withdraw()&lt;/span&gt;
    n1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Network&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#radio_count = (n1.connect(&amp;quot;count&amp;quot;))&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;#radio_count = 3&lt;/span&gt;
&amp;nbsp;
    radio_count &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;n1.&lt;span class=&quot;me1&quot;&gt;connect&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;count&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; radio_count &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;:
        nRadio1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; nRadio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; radio_count &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;:
        nRadio2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; nRadio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; radio_count &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;:
        nRadio3 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; nRadio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; radio_count &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;:
        nRadio4 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; nRadio&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;4&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    d1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Dash&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;root&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;#print threading.currentThread().name&lt;/span&gt;
    m1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;target &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    m1.&lt;span class=&quot;me1&quot;&gt;setDaemon&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    m1.&lt;span class=&quot;me1&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
    root.&lt;span class=&quot;me1&quot;&gt;mainloop&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:screenshot_2022-07-24_15.01.43.png&quot; class=&quot;media&quot; title=&quot;public:radio:screenshot_2022-07-24_15.01.43.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=200&amp;amp;tok=55b028&amp;amp;media=public:radio:screenshot_2022-07-24_15.01.43.png&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;S-meter display version&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;s-meter_display_version&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;70187-83124&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;83125-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>QRSS</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:qrss</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:start&quot; data-wiki-id=&quot;public:radio:topics:start&quot;&gt;Radio Topics&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;qrss&quot;&gt;QRSS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
I&amp;#039;ve started playing with QRSS, inspired by getting involved with QMX and QCX and the QRP world. QRSS is something to use the equipment for while I&amp;#039;m not actively operating CW, and by either transmitting QRSS for other people to receive, or running a receive “grabber” for other people to observe, I&amp;#039;m helping with other people&amp;#039;s experimental use of the hobby (and my own). I &lt;em&gt;could&lt;/em&gt; continue using WSPR for similar ends, but I find QRSS much more human.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;QRSS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;qrss&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-494&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;first_step&quot;&gt;First Step&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I need to be able to receive - never transmit if you can&amp;#039;t receive first. I remember using Spectrum Lab in the past, on 500kHz for a grabber, and I knew it ran well under Wine on Linux. So I installed Spectrum Lab on my Linux shack laptop.
&lt;/p&gt;

&lt;p&gt;
A bit of fiddling and I got it to display QRSS nicely.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;First Step&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;first_step&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;495-815&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;grabber&quot;&gt;Grabber&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Receiving locally is nice, but the real fun comes from sharing the waterfall image via the internet…. a “grabber”
&lt;/p&gt;

&lt;p&gt;
That just required setting Spectrum Lab to make regular screen captures, and to deposit them in a directory where they can be accessed by the Linux system easily.
&lt;/p&gt;

&lt;p&gt;
And then a small bash script to send the file by SCP to my VPS webserver.
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DIR&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;g4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Screenshots
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sleep&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;scp&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-P&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2182&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$DIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;capt.jpg g4slv&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;g4slv.info:
&lt;span class=&quot;kw2&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$DIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;capt.jpg&lt;/pre&gt;

&lt;p&gt;
and on the VPS another bash script to rename the new capture to include a datestamp, and then to copy the new capture to the webserver, along with the date-stamped copy.
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;DATE&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;date&lt;/span&gt; +&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;y&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;m&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;d_&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;H&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;M&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;DIR&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;g4slv
&lt;span class=&quot;kw2&quot;&gt;sleep&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-e&lt;/span&gt; capt.jpg &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;cp&lt;/span&gt; capt.jpg capt_&lt;span class=&quot;re1&quot;&gt;$DATE&lt;/span&gt;.jpg
        &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;mv&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$DIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/*&lt;/span&gt;.jpg &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;html&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;grabs&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
This makes sure I don&amp;#039;t lose all the grabs, and can access them via the website, to look for interesting artifacts, or signals of interest.
&lt;/p&gt;

&lt;p&gt;
Both scripts run every 10 minutes via Crontab. Each script has a &lt;code&gt;sleep&lt;/code&gt; command to delay its operation to allow the correct sequence of actions, and to give time for the SCP operation to upload the new capture file to the VPS.
&lt;/p&gt;

&lt;p&gt;
On the following grab, at 12:00 UTC 8 Jul 2026 are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; GM4GKH using some Hell variant rather than QRSS CW&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; S52AB &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SO5CW&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; G0PKT&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; M0BMN&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; G0MBN&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; G4JQT&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; IK2JET&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Aqrss&amp;amp;media=public:radio:topics:capt2.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:topics:capt2.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=f46d12&amp;amp;media=public:radio:topics:capt2.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Grabber&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;grabber&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;816-2302&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;qrss_tx&quot;&gt;QRSS TX&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
To set the QMX to operate as a QRSS beacon is a bit convoluted….
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Protection&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; PA Max volts → 3V - this will give approx 1W&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Messages&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Message 1 → GM4SLV &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Keyer (from single click of Menu key in normal operation mode) → 6 (dot = 6 seconds)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Beacon&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Mode → FSKCW&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Frequency → 10,140,050&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Frame → 10 (repeat every ten minutes)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Start → 0 (start on minute zero)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Time → set to any random time, it&amp;#039;s just used to start each TX cycle every “Frame” minutes. Absolute time isn&amp;#039;t important.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Sending “GM4SLV” at 6-second dot takes about 7 minutes, and then there&amp;#039;s 3 minutes of RX to allow the PA to cool down, and the cycle repeats every 10 minutes. I don&amp;#039;t know if the RTC is accurate enough to allow for “stacking” to improve reception of my signals, without GPS time lock it might drift around a little?
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;QRSS TX&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;qrss_tx&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2303-3190&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Knights QRSS Group : &lt;a href=&quot;https://groups.io/g/qrssknights&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://groups.io/g/qrssknights&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://groups.io/g/qrssknights&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; QRSSPlus Grabber collection : &lt;a href=&quot;https://swharden.com/qrss/plus/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://swharden.com/qrss/plus/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://swharden.com/qrss/plus/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; QXM User Guide : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:topics:operation_1_03_002.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:topics:operation_1_03_002.pdf (4 MB)&quot;&gt;operation_1_03_002.pdf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Spectrum Lab Installation file obtained from &lt;a href=&quot;https://www.qsl.net/dl4yhf/spectra1.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.qsl.net/dl4yhf/spectra1.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.qsl.net/dl4yhf/spectra1.html&lt;/a&gt; : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:topics:install_speclab.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:radio:topics:install_speclab.zip (6 MB)&quot;&gt;install_speclab.zip&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Spectrum Lab usr file for the grabber : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:topics:gm4slv_30m_grabber.usr&quot; class=&quot;media mediafile mf_usr&quot; title=&quot;public:radio:topics:gm4slv_30m_grabber.usr (44.8 KB)&quot;&gt;gm4slv_30m_grabber.usr&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Page created  : 08/07/26 11:44 BST
&lt;/p&gt;

&lt;p&gt;
Page updated : 08/07/26 13:56 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:qrss&amp;amp;do=showtag&amp;amp;tag=qrss&quot; class=&quot;wikilink1&quot; title=&quot;tag:qrss&quot; rel=&quot;tag&quot;&gt;qrss&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:30m&amp;amp;do=showtag&amp;amp;tag=30m&quot; class=&quot;wikilink1&quot; title=&quot;tag:30m&quot; rel=&quot;tag&quot;&gt;30m&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:qmx&amp;amp;do=showtag&amp;amp;tag=qmx&quot; class=&quot;wikilink1&quot; title=&quot;tag:qmx&quot; rel=&quot;tag&quot;&gt;qmx&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:grabber&amp;amp;do=showtag&amp;amp;tag=grabber&quot; class=&quot;wikilink1&quot; title=&quot;tag:grabber&quot; rel=&quot;tag&quot;&gt;grabber&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3191-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 08 Jul 2026 12:56:16 +0000</pubDate>
        </item>
        <item>
            <title>Getting back into radio</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:renewed_interest</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:start&quot; data-wiki-id=&quot;public:radio:topics:start&quot;&gt;Radio Topics&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;getting_back_into_radio&quot;&gt;Getting back into radio&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; I&amp;#039;ve got the radio bug again &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Getting back into radio&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;getting_back_into_radio&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-91&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;hf&quot;&gt;HF&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; New HF antenna - simple vertical on a 10m Sota-Pole after the old Racal mast holding up the Inverted-L collapsed this winter&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; improved ground/radials (6/4/25)…. more work to be done&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Going back to “the old days” where I used &amp;#039;phone more often&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Putting aside the CW keys/bugs for a while&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; and also digimodes put to one side&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; New HF Rig : &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:ft_891&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:ft_891&quot; data-wiki-id=&quot;public:radio:radio_database:ft_891&quot;&gt;FT-891&lt;/a&gt; for SSB and 10m FM &amp;#039;phone operation&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Portable “go box” with &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:xeigu_g90&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:xeigu_g90&quot; data-wiki-id=&quot;public:radio:radio_database:xeigu_g90&quot;&gt; G90&lt;/a&gt; being re-assembled&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; New 7m Sota-Pole for portable operation&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HF&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;92-671&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;other_bands_modes&quot;&gt;Other bands/modes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; DMR back online at home&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Full Duplex 2-timeslot hotspot&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:at-d878uv&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:at-d878uv&quot; data-wiki-id=&quot;public:radio:radio_database:at-d878uv&quot;&gt; Anytone 878&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2m APRS I-Gate running again &lt;a href=&quot;https://aprs.fi/info/a/GM4SLV-2&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://aprs.fi/info/a/GM4SLV-2&quot; rel=&quot;ugc nofollow noopener&quot;&gt; GM4SLV-2 &lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; VHF and APRS mobile &lt;a href=&quot;https://aprs.fi/info/a/GM4SLV-9&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://aprs.fi/info/a/GM4SLV-9&quot; rel=&quot;ugc nofollow noopener&quot;&gt; GM4SLV-9 &lt;/a&gt; with &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:tm-d710&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:tm-d710&quot; data-wiki-id=&quot;public:radio:radio_database:tm-d710&quot;&gt; TM-D710&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 06/04/25 08:31 BST&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Other bands\/modes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;other_bands_modes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;672-1064&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1065-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>Datasheets</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:6502:datasheets</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:6502:start&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:6502:start&quot; data-wiki-id=&quot;public:computers:archive:6502:start&quot;&gt;6502 Project&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;datasheets&quot;&gt;Datasheets&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Datasheets for parts used in my 6502 project &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Datasheets&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;datasheets&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-94&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;cpu&quot;&gt;CPU&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:6502:w65c02s.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:computers:6502:w65c02s.pdf (1.6 MB)&quot;&gt; WD 65C02&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CPU&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cpu&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;95-163&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;eeprom&quot;&gt;EEPROM&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:6502:28c256.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:computers:6502:28c256.pdf (348.9 KB)&quot;&gt; 28C256 EEPROM&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;EEPROM&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;eeprom&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;164-239&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;ram&quot;&gt;RAM&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:6502:hm62256b.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:computers:6502:hm62256b.pdf (154.5 KB)&quot;&gt; 62256 RAM&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RAM&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ram&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;240-310&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;lcd&quot;&gt;LCD&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:6502:hd44780.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:computers:6502:hd44780.pdf (322.1 KB)&quot;&gt; Generic LCD&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;LCD&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lcd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;311-382&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;via&quot;&gt;VIA&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:6502:w65c22.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:computers:6502:w65c22.pdf (727.4 KB)&quot;&gt; WDC 65C22 VIA &lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;VIA&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;via&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;383-456&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;acia&quot;&gt;ACIA&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:6502:rockwell_r65c51.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:computers:6502:rockwell_r65c51.pdf (1.5 MB)&quot;&gt; Rockwell 65C51 &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:6502:w65c51n.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:computers:6502:w65c51n.pdf (1.7 MB)&quot;&gt; WDC 65C51 &lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;ACIA&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;acia&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;457-596&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;rtc&quot;&gt;RTC&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:6502:ds1306.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:computers:6502:ds1306.pdf (371.3 KB)&quot;&gt; Maxim DS1306&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RTC&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rtc&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;597-669&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;various_support_chips&quot;&gt;Various support chips&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:6502:74hc00.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:computers:6502:74hc00.pdf (79.2 KB)&quot;&gt; 74HC00 Quad NAND&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:6502:ne555.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:computers:6502:ne555.pdf (1.2 MB)&quot;&gt; NE555 &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:6502:max232.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:computers:6502:max232.pdf (1.4 MB)&quot;&gt; MAX232 TTL-RS232&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:computers:6502:sn74ls21.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:computers:6502:sn74ls21.pdf (756.6 KB)&quot;&gt; 74LS21 dual 4-input AND &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 24/09/22 13:25&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Various support chips&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;various_support_chips&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;670-985&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:6502&amp;amp;do=showtag&amp;amp;tag=6502&quot; class=&quot;wikilink1&quot; title=&quot;tag:6502&quot; rel=&quot;tag&quot;&gt;6502&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;986-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 10:10:35 +0000</pubDate>
        </item>
        <item>
            <title>Repair and Service 2022</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:watches:damasko:repair_service_2022</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:miscellany:watches:damasko:start&quot; class=&quot;wikilink1&quot; title=&quot;public:miscellany:watches:damasko:start&quot; data-wiki-id=&quot;public:miscellany:watches:damasko:start&quot;&gt;Damasko DA36&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;repair_and_service_2022&quot;&gt;Repair and Service 2022&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; A mishap leading to having it repaired and a full service at Damasko &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Repair and Service 2022&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;repair_and_service_2022&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-131&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;the_accident_9_11_22&quot;&gt;The Accident 9/11/22&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt; I dropped my watch! &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
I dropped it face down, “flat on the crystal” on a tiled floor! I was initially relieved to see, when I picked it up from its landing place, that the crystal had survived. I initially thought I&amp;#039;d been lucky, and it had escaped unscathed.
&lt;/p&gt;

&lt;p&gt;
However the shock of landing had dislodged the layer of luminous paint from the minute-hand. It came off in one single piece, and was free inside the watch, looking like another hand just rattling around inside.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:watches:damasko:img_20221109_091713_691_1.jpg&quot; class=&quot;media&quot; title=&quot;public:watches:damasko:img_20221109_091713_691_1.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=3ff740&amp;amp;media=public:watches:damasko:img_20221109_091713_691_1.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
The watch was now 6 years old and was probably due a service, the timekeeping had slowly drifted to around -2 seconds per day and appeared to be getting gradually worse month by month. 
&lt;/p&gt;

&lt;p&gt;
I emailed Isabella at Damasko to ask about the possibility of a service and the any repairs necessary, including a new hour-hand. She replied very quickly to say that a Full Service would be €260 and new hands were €25 each. The hand replacement would be done as part of the service (no additional costs beyond the part(s) themselves.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The Accident 9\/11\/22&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_accident_9_11_22&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;132-1242&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;sending_it_to_barbing_9_11_22&quot;&gt;Sending it to Barbing 9/11/22&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
We aren&amp;#039;t in the EU any more. What idiots thought that BREXIT was a good idea??
&lt;/p&gt;

&lt;p&gt;
In the past it was simple, and quick, to send something back to Germany for repair. Not this time.
&lt;/p&gt;

&lt;p&gt;
I used Royal Mail, but this time needed to declare the contents on a Customs form, and hope that the German Customs assessor didn&amp;#039;t apply import duty on the way IN to Damasko (and then hope that the UK Customs don&amp;#039;t charge me on the way back).
&lt;/p&gt;

&lt;p&gt;
The watch was &lt;strong&gt;posted on November 9th 2022&lt;/strong&gt; and arrived, after a long delay in German Customs, &lt;strong&gt;on December 1st 2022&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sending it to Barbing 9\/11\/22&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sending_it_to_barbing_9_11_22&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1243-1835&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;repair_go-ahead_5_12_22&quot;&gt;Repair go-ahead 5/12/22&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I received a full estimate, including return carriage of €100 (Brexit again!), of €385 on 5th December, after the watch had been examined by the Damasko watchmaker. This was for full strip-down, clean, inspect, lubricate, rebuild, test/regulate, water-proof check etc. as well as replacement of the hour-hand. I gave the go-ahead by return email.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Repair go-ahead 5\/12\/22&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;repair_go-ahead_5_12_22&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1836-2224&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;invoice_received_19_12_22&quot;&gt;Invoice received 19/12/22&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The repair was done, some additional parts were needed (second wheel, intermediate wheel and third wheel). 
&lt;/p&gt;

&lt;p&gt;
The invoice was received and I arranged payment via PayPal the next morning.
&lt;/p&gt;

&lt;p&gt;
The watch is on its way back via FedEx, on 20th December. Now I have to wait to see what happens on the return trip. What will UK Customs do? How long will it take.
&lt;/p&gt;

&lt;p&gt;
And how will it run?
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 22/12/22 06:58&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Invoice received 19\/12\/22&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;invoice_received_19_12_22&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2225-2683&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;watch_returns_30_12_22&quot;&gt;Watch returns... 30/12/22&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Against all expectation my DA36 came back before the end of the year. It was delivered on Friday 30th December.
&lt;/p&gt;

&lt;p&gt;
It came in a nice parcel with a Damasko Baseball Cap, Damasko pen, catalogue, Christmas Card and the old parts that were replaced in the service.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Amiscellany%3Awatches%3Adamasko%3Arepair_service_2022&amp;amp;media=public:watches:damasko:img_20221230_153703_932.jpg&quot; class=&quot;media&quot; title=&quot;public:watches:damasko:img_20221230_153703_932.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=cccb4f&amp;amp;media=public:watches:damasko:img_20221230_153703_932.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
It&amp;#039;s such a pleasure to have &lt;strong&gt;my&lt;/strong&gt; watch back on my wrist again after over 2 months. 
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ll keep track of its timekeeping now. Before the accident it was gradually slowing, and had reached the point of losing 4 seconds/day. It will be interesting to see what the rate is now, following a full service, in which 3 train wheels were replaced. I&amp;#039;ll put it on the Timegrapher tomorrow afternoon once it&amp;#039;s had 24 hours of normal wear to get fully wound. I&amp;#039;ll also start a new “WatchCheck” measurement period to observe the overall daily rate each morning, as usual.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:watches:damasko:img_20221230_154025_617.jpg&quot; class=&quot;media&quot; title=&quot;public:watches:damasko:img_20221230_154025_617.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=134d65&amp;amp;media=public:watches:damasko:img_20221230_154025_617.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Watch returns... 30\/12\/22&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;watch_returns_30_12_22&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2684-3676&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;timegrapher_data&quot;&gt;Timegrapher Data&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; First check on the Timegrapher after 2 days on the wrist.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Initial indications are that it&amp;#039;s power and positional variance is improved, rate is a little faster than expected&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;table sectionedit8&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Pos&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Amp&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Rate&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Dial Up&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;297&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;+9&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Dial Down&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;297&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;+7&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;6H&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;294&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;+6&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;3H&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;290&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;+6&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;9H&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;285&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;+9&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;12H&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;293&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;+6&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Ave&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;(293)&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;+7.2&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;D&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; -2&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;3890-4016&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Timegrapher Data&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;timegrapher_data&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3677-4017&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;4018-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 30 Dec 2025 09:55:07 +0000</pubDate>
        </item>
        <item>
            <title>DMR Bridging</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:allstar_dmr</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:start&quot; data-wiki-id=&quot;public:radio:topics:allstar:start&quot;&gt;AllStar Linking&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dmr_bridging&quot;&gt;DMR Bridging&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; First try at DVSwitch Bridging &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DMR Bridging&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dmr_bridging&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-88&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;overview_of_ip_udp_ports&quot;&gt;Overview of IP UDP ports&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;
    Asterisk              Analog_Bridge         DVSwitch
    ========              =============         MMDVM_Bridge
                                                ============
    [node]                [USPR]
    rxPort 31001 &amp;lt;------- txPort 31001
    txPort 34001 -------&amp;gt; rxPort 34001
                             ↓ ↑
                          [md380-emu]:2470
                             ↓ ↑
                          [AMBE]                [DMR]                  
                          txPort 31103 ------&amp;gt;  rxPort 31103  
                          rxPort 31100 &amp;lt;------  txPort 31100 
                                                   ↓  ↑
                                                [DMR Network]
                                                Host : xx.xx.xx.xx
                                                Port : xxxxxx&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Overview of IP UDP ports&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;overview_of_ip_udp_ports&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;89-999&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;the_main_things&quot;&gt;The main Things&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Make sure &lt;code&gt;Analog_Bridge.ini&lt;/code&gt; has the correct txPort and rxPort in its [USRP] section &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;USRP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1           ; IP address of USRP partner &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;Analog_Reflector, Allstar/Asterisk or another Analog_Bridge&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;31001&lt;/span&gt;                ; Transmit USRP frames on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;34001&lt;/span&gt;                ; Listen for USRP frames on this port&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; It should match Asterisk&amp;#039;s private node as defined in &lt;code&gt;/etc/asterisk/rpt.conf&lt;/code&gt; - in this case it&amp;#039;s [1398]&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;1398&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxchannel&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; USRP/127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;34001&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;31001&lt;/span&gt; ; Use the USRP channel driver. Must be enabled in modules.conf&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt; ; 127.0.0.1 = IP of the target application&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt; ; 34001 = UDP port the target application is listening on&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt; ; 32001 = UDP port ASL is listening on&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Make Sure &lt;code&gt;Analog_Bridge.ini&lt;/code&gt; has the correct txPort and rxPort in its [AMBE_AUDIO] section&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;AMBE_AUDIO&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1                     ; IP address of xx_Bridge&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; For DMR  - match the ports set in DVSwitch.ini&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;31103&lt;/span&gt;                          ; Transmit TLV frames to partner on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;31100&lt;/span&gt;                          ; Listen for TLV frames from partner on this port&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; FOr NXDN - match the ports set in DVSwitch.ini&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;txPort = 33103                          ; Transmit TLV frames to partner on this port&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;rxPort = 33100                          ; Listen for TLV frames from partner on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;ambeMode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; DMR                          ; DMR, DMR_IPSC, DSTAR, NXDN, P25, YSFN, YSFW &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;encode PCM to this format&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; should match the ports in &lt;code&gt;DVSwitch.ini&lt;/code&gt; [DMR] section&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;co0&quot;&gt;; Configure the DMR Partner&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Audio format is AMBE 72 bit&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DMR&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1             ; Address to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;31100&lt;/span&gt;                  ; Port to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;31103&lt;/span&gt;                  ; Port to listen on &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;import&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Enable [DMR] in &lt;code&gt;MMDVM_Bridge.ini&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DMR&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;ColorCode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;EmbeddedLCOnly&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;DumpTAData&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Enable [DMR Network] in &lt;code&gt;MMDVM_Bridge.ini&lt;/code&gt; and choose the DMR Network, password, port &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DMR Network&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; TGIF&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Address&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;tgif.network&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Port&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;62031&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;TGIF Password for 2354435&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Password=XXXXXXXXXXX&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; TGIF Password for 2354429&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Password&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;XXXXXXXXXX&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Brandmeister&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Address=2341.master.brandmeister.network&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Password=XXXXXXXXXX&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Port=62031&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re1&quot;&gt;Jitter&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;750&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Local&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;62032&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; FOR DVS_Ph F&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Address=78.129.135.43&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Port=55555&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Password=PASSWORD&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Options=StartRef=4000;RelinkTime=0;UserLink=0;TS1_1=733;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re1&quot;&gt;Slot1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Slot2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Select hotspot/repeater source ID&amp;amp;SSID (repeaterID=235442998) and your DMR ID (gatewayDmrId = 2354429), plus choice of Talkgroup in &lt;code&gt;Analog_Bridge.ini&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;co0&quot;&gt;; The metadata below is used when ASL is the source since it does not have any concept of digital modes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;gatewayDmrId&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2354429&lt;/span&gt;                  ; ID to use when transmitting from Analog_Bridge 7 digit ID&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;repeaterID&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;235442998&lt;/span&gt;                  ; ID of source repeater 7 digit ID plus 2 digit SSID &lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Talkgroup needed for DMR and NXDN.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; NXDNGateway uses Talkgroup to choose the reflector IP/Port from its Host Files&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txTg&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2354429&lt;/span&gt;                        ; TG to use for all frames sent from Analog_Bridge -&amp;gt; xx_Bridge&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txTs&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                                ; Slot to use for frames sent from Analog_Bridge -&amp;gt; xx_Bridge&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;colorCode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;                           ; Color Code to assign DMR frames&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The main Things&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_main_things&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1000-4457&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;updating_dvswitch_hostfiles&quot;&gt;Updating DVSwitch Hostfiles&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DVSwtich keep its hostfiles in &lt;code&gt;/var/lib/mmdvm&lt;/code&gt; and updates via &lt;code&gt;cron.daily/DVSM_Update&lt;/code&gt; which calls &lt;code&gt;/opt/MMDVM_Bridge/dvswitch.sh update&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; This tries to download hostfiles from various places using &lt;code&gt;curl&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; It seems to fail most of the time due to a SSL problem&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A workaround is to put “insecure” in root&amp;#039;s ~/.curlrc&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;
sudo su -

echo insecure &amp;gt;&amp;gt; ~/.curlrc

/opt/MMDVM_Bridge/dvswitch.sh update
&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Updating DVSwitch Hostfiles&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;updating_dvswitch_hostfiles&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;4458-4930&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;section_two&quot;&gt;Section Two&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 10/06/25 08:55 BST&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Section Two&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;section_two&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4931-5004&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:allstar&amp;amp;do=showtag&amp;amp;tag=AllStar&quot; class=&quot;wikilink1&quot; title=&quot;tag:allstar&quot; rel=&quot;tag&quot;&gt;AllStar&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dvswitch&amp;amp;do=showtag&amp;amp;tag=dvswitch&quot; class=&quot;wikilink1&quot; title=&quot;tag:dvswitch&quot; rel=&quot;tag&quot;&gt;dvswitch&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dmr&amp;amp;do=showtag&amp;amp;tag=dmr&quot; class=&quot;wikilink1&quot; title=&quot;tag:dmr&quot; rel=&quot;tag&quot;&gt;dmr&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;5005-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 18:42:09 +0000</pubDate>
        </item>
        <item>
            <title>Allstar &amp; Echolink</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:allstar_echolink</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:start&quot; data-wiki-id=&quot;public:radio:topics:allstar:start&quot;&gt;AllStar Linking&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;allstar_echolink&quot;&gt;Allstar &amp;amp; Echolink&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Revisiting Allstar with Node 48148 for 2024 &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Allstar &amp;amp; Echolink&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;allstar_echolink&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-101&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;node_48148&quot;&gt;Node 48148&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I&amp;#039;ve set up an Allstar node/gateway - in place of the Svxlink node I did yesterday &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:svxlink&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:svxlink&quot; data-wiki-id=&quot;public:radio:topics:svxlink:svxlink&quot;&gt;SVXLink : Install from source&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&quot;table sectionedit3&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Platform&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Rapsberry Pi&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Interface&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;CM108 Soundcard&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Radio&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;FT-8900&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Frequency&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;144.9125 MHz&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Monitor&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;a href=&quot;http://gm4slv.plus.com:42111/supermon/link.php?nodes=48148&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://gm4slv.plus.com:42111/supermon/link.php?nodes=48148&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Supermon&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;AllStar &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;http://stats.allstarlink.org/stats/48148&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://stats.allstarlink.org/stats/48148&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://stats.allstarlink.org/stats/48148&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;252-483&amp;quot;} --&gt;
&lt;p&gt;
It turned out to be not too difficult, as I already had all the correct working configs from &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:gm4slv_allstar&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:gm4slv_allstar&quot; data-wiki-id=&quot;public:radio:topics:allstar:gm4slv_allstar&quot;&gt; the last time&lt;/a&gt; I used Allstar, so I was able to copy them onto the new SD card image and have a working node straight from boot up!
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Node 48148&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;node_48148&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;102-758&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;editing_the_image&quot;&gt;Editing the image&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I downloaded the most recent V2.0 beta image for Raspberry Pi here : &lt;a href=&quot;http://downloads.allstarlink.org/ASL_Images_Beta/Raspberry_Pi2_3_4/asl-2.0.0-beta.6-kc1kcc-20210324-rpi-armhf.img.zip&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://downloads.allstarlink.org/ASL_Images_Beta/Raspberry_Pi2_3_4/asl-2.0.0-beta.6-kc1kcc-20210324-rpi-armhf.img.zip&quot; rel=&quot;ugc nofollow noopener&quot;&gt; 2.0.0-beta.6&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Once I had the &lt;code&gt;img&lt;/code&gt; file unzipped I thought it would be fun to try and add my config to the image &lt;em&gt;before&lt;/em&gt; writing it to the SD Card. I had enough information &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:rpi_image&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:rpi_image&quot; data-wiki-id=&quot;public:computers:archive:rpi_image&quot;&gt; here&lt;/a&gt; to show me how to mount an image as a block device (ie disk). Once that was done I could simply copy any files onto the mounted image and then unmount it. The image could then be &lt;code&gt;dd&lt;/code&gt; to the SD card in the usual way.
&lt;/p&gt;

&lt;p&gt;
So I retrieved the last set of config file backups and copied all the &lt;code&gt;*.conf&lt;/code&gt; files that go in &lt;code&gt;/etc/asterisk&lt;/code&gt; into the mounted image device i.e. to &lt;code&gt;/mnt/etc/asterisk/&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Unmount the image from the filesystem &lt;code&gt;sudo umount /mnt&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Then
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;sudo dd if=my_new_image.img of=/dev/mmblblahblah bs=4M&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
and wait.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Editing the image&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;editing_the_image&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;759-1741&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;it_s_alive&quot;&gt;It&amp;#039;s alive&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Once written I put the CD card into the Pi. Booted up, and heard my callsign ID on the radio - it worked, without having to go through the rigmarole of a new install configuration.
&lt;/p&gt;

&lt;p&gt;
I SSH&amp;#039;d in via the DHCP address it had been given, and to change the IP to a static one I checked the peculiar name of the Ethernet interface: &lt;code&gt;enxb827eb6f9954&lt;/code&gt; and edited &lt;code&gt;/etc/dhcpcd.conf&lt;/code&gt; to use a static IP address on this device. Using &lt;code&gt;eth0&lt;/code&gt; didn&amp;#039;t work, as the interface wasn&amp;#039;t called &lt;code&gt;eth0&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;# Example static IP configuration:&lt;/span&gt;
interface enxb827eb6f9954
static &lt;span class=&quot;re2&quot;&gt;ip_address&lt;/span&gt;=192.168.21.109&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;
static &lt;span class=&quot;re2&quot;&gt;routers&lt;/span&gt;=192.168.21.1
static &lt;span class=&quot;re2&quot;&gt;domain_name_servers&lt;/span&gt;=192.168.21.1 8.8.8.8&lt;/pre&gt;

&lt;p&gt;
Reboot again, and now I can SSH via the correct static IP address
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;It&amp;#039;s alive&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;it_s_alive&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1742-2513&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;next_steps&quot;&gt;Next Steps&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Add my own user (don&amp;#039;t want to use the built in &lt;code&gt;repeater&lt;/code&gt; user)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Add myself to the necessary groups (sudo etc.)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; change the hostname from &lt;code&gt;repeater&lt;/code&gt; → &lt;code&gt;asterisk&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; remember to edit &lt;code&gt;/etc/hosts&lt;/code&gt; as well as &lt;code&gt;/etc/hostname&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; set timezone to &lt;code&gt;Europe/London&lt;/code&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Check the RX/TX levels/deviation with &lt;code&gt;/usr/sbin/simpleusb-tune-menu &lt;/code&gt; - the levels were spot on due to using the same setup, and the same config. files as the previous incarnation.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Enable Echolink by editing &lt;code&gt;/etc/asterisk/modules.conf&lt;/code&gt; to load the Echolink Module (last time I&amp;#039;d disabled it)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Copy any necessary &lt;code&gt;allmon2&lt;/code&gt; files to &lt;code&gt;/var/www/html/allmon2/&lt;/code&gt;  &amp;amp; set up &lt;code&gt;allmon2&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Port Forward on router:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;UDP/4569&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;UDP/5198&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;UDP/5199&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; All working…!&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Next Steps&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;next_steps&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2514-3326&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;first_qso&quot;&gt;First QSO&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
 * I was called on Echolink by &lt;code&gt;G0RAS&lt;/code&gt; while I was out walking the dogs. We had a good chat, so that was a good test that it&amp;#039;s all working 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;First QSO&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;first_qso&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3327-3489&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;section_two&quot;&gt;Section Two&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; some macros as configured in &lt;code&gt;/etc/asterisk/rpt.conf&lt;/code&gt; for quick connect/disconnect&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;kbd class=&quot;__keyboard&quot;&gt;*&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;5&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;3&lt;/kbd&gt;&lt;kbd class=&quot;__keyboard&quot;&gt;1&lt;/kbd&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;macro&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;141223&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; disc. hubnet&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;241223&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; monitor hubnet&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;31&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;341223&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; transceive hubnet&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12197&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; disc Freedom Net&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;22197&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; monitor Freedom Net&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;32197&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; transceive Freedom Net&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;129332&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; disc Alaska&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;229332&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; monitor Alaska&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;33&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;329332&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; transceive Alaska&lt;/span&gt;
&amp;nbsp;
;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;154383&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; disc CQ North&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;254383&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; monitor CQ North&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;354383&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; transceive CQ North&lt;/span&gt;
&amp;nbsp;
;&lt;span class=&quot;nu0&quot;&gt;191&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;140894&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; disconnect hubnet Echo&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;391&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;340894&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# ; connect hubnet echo&lt;/span&gt;
&amp;nbsp;
;&lt;span class=&quot;nu0&quot;&gt;192&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;13009999&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#       ; dis echolink echotest&lt;/span&gt;
;&lt;span class=&quot;nu0&quot;&gt;392&lt;/span&gt; = &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;33009999&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#       ; con echolink echotest&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 07/04/24 10:03&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Section Two&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;section_two&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;3490-4318&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:allstar&amp;amp;do=showtag&amp;amp;tag=allstar&quot; class=&quot;wikilink1&quot; title=&quot;tag:allstar&quot; rel=&quot;tag&quot;&gt;allstar&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:echolink&amp;amp;do=showtag&amp;amp;tag=echolink&quot; class=&quot;wikilink1&quot; title=&quot;tag:echolink&quot; rel=&quot;tag&quot;&gt;echolink&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;4319-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 05 Jun 2026 07:46:15 +0000</pubDate>
        </item>
        <item>
            <title>The Nodes</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:allstar_nodes_built</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:start&quot; data-wiki-id=&quot;public:radio:topics:allstar:start&quot;&gt;AllStar Linking&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;the_nodes&quot;&gt;The Nodes&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The Nodes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_nodes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-41&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;vhf_gateway&quot;&gt;VHF Gateway&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;table sectionedit3&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Platform&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Raspberry Pi 2 Model B Rev 1.1 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;OS&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Raspbian GNU/Linux 10 (buster) &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;ASL Version &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 2.0.0-beta.6 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Interface&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;CM108 Soundcard - modified&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Radio&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;FT-1500M @ 5W&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Frequency&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;144.9125MHz / CTCSS : 77.0Hz&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Allstar Node &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;http://stats.allstarlink.org/stats/481480&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://stats.allstarlink.org/stats/481480&quot; rel=&quot;ugc nofollow noopener&quot;&gt; 481480&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Echolink &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; GM4SLV-L : 886089 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Dashboard&lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;a href=&quot;http://gm4slv.plus.com:42111/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://gm4slv.plus.com:42111/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;via 481481&amp;#039;s Allmon3&lt;/a&gt;  &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;68-457&amp;quot;} --&gt;
&lt;p&gt;
The initial node, described here → &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:gm4slv_allstar_2025&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:gm4slv_allstar_2025&quot; data-wiki-id=&quot;public:radio:topics:allstar:gm4slv_allstar_2025&quot;&gt;GM4SLV Allstar 2025&lt;/a&gt; got too cumbersome after adding DMR Bridging, along with handling Echolink.
&lt;/p&gt;

&lt;p&gt;
I decided, since I had a few spare Raspberry Pi boards doing nothing much, to split the DMR Bridging to a separate node.
&lt;/p&gt;

&lt;p&gt;
I removed the DVSwitch bridging from the VHF Gateway node and changed its node ID to &lt;code&gt;481480&lt;/code&gt; (NNX)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;VHF Gateway&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vhf_gateway&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;42-823&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;echolink_config&quot;&gt;Echolink Config&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_1808d928754ab110c22ab4f3bd5ecff3_1&quot;&gt;/etc/asterisk/echolink.conf &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_1808d928754ab110c22ab4f3bd5ecff3_1&quot;&gt;&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;el0&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;call&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; GM4SLV-L                          ; Change this!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;pwd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; XXXXX                           ; Change this!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; John                        ; Change this!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;qth&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; Allstar &lt;span class=&quot;nu0&quot;&gt;481480&lt;/span&gt;                           ; Change this!&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;email&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; gm4slv@gm4slv.plus.com                         ; Change this!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;node&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;886089&lt;/span&gt;                           ; Change this!&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Data for EchoLink Status Page&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;lat&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;60.2883&lt;/span&gt;                               ; Latitude in decimal degrees&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;lon&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; -&lt;span class=&quot;nu0&quot;&gt;001.42533&lt;/span&gt;                               ; Longitude in decimal degrees&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;freq&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;144.900&lt;/span&gt;                             ; not mandatory Frequency in MHz&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;tone&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;                              ; not mandatory CTCSS Tone &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0 for none&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;power&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                               ; 0&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;0W, 1&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;1W, 2&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;4W, 3&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;9W, 4&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;16W, 5&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;25W, 6&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;36W, 7&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;49W, 8&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;64W, 9&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;81W &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Power in Watts&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;height&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;                              ; 0&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;10 1&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;20 2&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;40 3&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;80 4&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;160 5&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;320 6&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;640 7&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;1280 8&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;2560 9&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;5120 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;AMSL in Feet&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;gain&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;                                ; Gain in db &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0-9&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;dir&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;                                 ; 0&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;omni 1&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;45deg 2&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;90deg 3&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;135deg 4&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;180deg 5&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;225deg 6&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;270deg 7&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;315deg 8&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;360deg &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Direction&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;maxstns&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;                            ; Max Stations&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re1&quot;&gt;rtcptimeout&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 10&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;recfile&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; /tmp/echolink_recorded.gsm    ;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;astnode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;481480&lt;/span&gt;           ; Change this!&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;context&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; radio-secure                  ; Default in code is echolink-in&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Max 3 servers&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;server1&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; server1.echolink.org&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;server2&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; server2.echolink.org&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;server3&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; server3.echolink.org&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; To deny w6xxx you would add the statement: deny = w6xxx&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; To prohibit computer-based connections you would write: permit = *-*&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; To allow access to only a select group of callsigns: permit = w6abc,w6def,...&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; permit                                ; comma delimited list of callsign, type (-r)&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; deny&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
&amp;nbsp;
; Remote text commands thru netcat:&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; o.conip &amp;lt;IPaddress&amp;gt;    (request a connect)&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; o.dconip &amp;lt;IPaddress&amp;gt;   (request a disconnect)&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; o.rec                  (turn on/off recording)&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; ipaddr&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; port&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
#includeifexists custom/echolink.conf&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Echolink Config&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;echolink_config&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;824-2916&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;dmr_bridging_node&quot;&gt;DMR Bridging Node&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;table sectionedit6&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Platform &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Raspberry Pi 4 Model B Rev 1.5 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;OS &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Debian GNU/Linux 12 (bookworm) &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;ASL Version &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;3.7.1-1.deb &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Allstar Node &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;http://stats.allstarlink.org/stats/481481&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://stats.allstarlink.org/stats/481481&quot; rel=&quot;ugc nofollow noopener&quot;&gt; 481481&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Dashboard&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;http://gm4slv.plus.com:42111/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://gm4slv.plus.com:42111/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://gm4slv.plus.com:42111/&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2948-3174&amp;quot;} --&gt;&lt;div class=&quot;plugin_note noteclassic&quot;&gt;New hardware and OS install
&lt;p&gt;
Installed OS first Pi OS 64 bit Lite →
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Pi OS Lite&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
then the ASL repository and finally ASL3 and Allmon3 following guide at:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://allstarlink.github.io/install/debian/install/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://allstarlink.github.io/install/debian/install/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://allstarlink.github.io/install/debian/install/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
I found this much nicer than the “Pi Appliance” method.
&lt;/p&gt;

&lt;/div&gt;
&lt;p&gt;
This one is for running DVSwitch to bridge to (at the moment) TGIF TG23544&lt;span style=&#039;color:red; &#039;&gt;29&lt;/span&gt; (my so-called &lt;em&gt;ID Talkgroup&lt;/em&gt; )
&lt;/p&gt;

&lt;p&gt;
I added the DVSwitch software, in the same way described here &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:gm4slv_allstar_2025&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:gm4slv_allstar_2025&quot; data-wiki-id=&quot;public:radio:topics:allstar:gm4slv_allstar_2025&quot;&gt;GM4SLV Allstar 2025&lt;/a&gt; (using &lt;code&gt;bookworm&lt;/code&gt; in place of &lt;code&gt;buster&lt;/code&gt;) and decided to bridge to &lt;code&gt;TGIF&lt;/code&gt; instead of Brandmeister.
&lt;/p&gt;

&lt;p&gt;
I also decided to use the &lt;code&gt;md380_emu&lt;/code&gt; emulator for the AMBE transcoding.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DMR Bridging Node&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dmr_bridging_node&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2917-3948&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;mmdvm_bridgeini&quot;&gt;MMDVM_Bridge.ini&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_1808d928754ab110c22ab4f3bd5ecff3_2&quot;&gt;/opt/MMDVM_Bridge/MMDVM_Bridge.ini &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_1808d928754ab110c22ab4f3bd5ecff3_2&quot;&gt;&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;General&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Callsign&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;GM4SLV&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Id&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;235442999&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Timeout&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;180&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Duplex&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Info&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RXFrequency&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;144900000&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;TXFrequency&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;144900000&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Power&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Latitude&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;60.2885&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Longitude&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;-1.4215&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Location&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;GM4SLV Bridge1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Description&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;MMDVM_Bridge&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;URL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;https://gm4slv.org.uk&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Log&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
# Logging levels, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;DisplayLevel&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;FileLevel&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;FilePath&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/var/log/mmdvm&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;FileRoot&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;MMDVM_Bridge&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DMR Id Lookup&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/var/lib/mmdvm/DMRIds.dat&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;24&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NXDN Id Lookup&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/var/lib/mmdvm/NXDN.csv&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;24&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Modem&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Port&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/dev/null&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RSSIMappingFile&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/dev/null&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Trace&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;D-Star&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Module&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;B&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DMR&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;ColorCode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;EmbeddedLCOnly&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;DumpTAData&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;System Fusion&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;P25&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;NAC&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;293&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NXDN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RAN&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Id&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;12345&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;D-Star Network&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayAddress&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;20010&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;LocalPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;20011&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DMR Network&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Address&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;tgif.network&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Port&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;62031&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Jitter=360&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Jitter&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;750&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Local&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;62032&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Password&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;XXXXXXXXXXXXXXXXXXXXx&lt;/span&gt;
# for DMR+ see https://github.com/DVSwitch/MMDVM_Bridge/blob/master/DOC/DMRplus_startup_options.md
# for XLX the syntax is: Options&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;XLX:4009&lt;/span&gt;
# Options&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Slot1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Slot2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;System Fusion Network&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;LocalAddress&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;LocalPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;3200&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayAddress&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;4200&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;P25 Network&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayAddress&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;42020&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;LocalPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;32010&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NXDN Network&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
#LocalAddress&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;LocalPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;14021&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayAddress&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;14020&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;MMDVM_Bridge.ini&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mmdvm_bridgeini&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3949-5512&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;analog_bridgeini&quot;&gt;Analog_Bridge.ini&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_1808d928754ab110c22ab4f3bd5ecff3_3&quot;&gt;/opt/Analog_Bridge/Analog_Bridge.ini &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_1808d928754ab110c22ab4f3bd5ecff3_3&quot;&gt;&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;co0&quot;&gt;; Analog_Bridge configuration file.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   This file should be placed in either /etc or it can be&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   supplied as a path on the Analog_Bridge command line.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; The best way to think of this file is that there are two main sections, the USRP (analog audio) and&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; AMBE_AUDIO (compressed audio).  Analog_Bridge will take everything sent to the USRP port and&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; encode it for transmission on the AMBE_AUDIO port.  The encoder will use the format defined in ambeMode.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; As you might expect, the reverse direction is defined too.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Analog_Bridge supports include files. More on this later...&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; dvsm.macro&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; include = asl.macro&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; General Section describes settings for Analog_Bridge itself.&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;GENERAL&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;logLevel&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                            ; Show messages and above 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Metadata management&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;exportMetadata&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; true                   ; Export metadata to USRP partner &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;transcode setups require this&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;transferRootDir&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; /tmp			; Export database files to USRP partner&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;subscriberFile&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; /var/lib/dvswitch/subscriber_ids.csv   ; DMR ID to callsign lookup data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; General vocoder setup information&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;decoderFallBack&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; true                  ; Allow software AMBE decoding if a hardware decoder is not found&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;useEmulator&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; true                     ; Use the MD380 AMBE emulator for AMBE72 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;DMR/YSFN/NXDN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;emulatorAddress&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;2470&lt;/span&gt;        ; IP address and port of the md380 server&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re1&quot;&gt;pcmPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2222&lt;/span&gt;				; UDP port to send to the WebProxy&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Information for xx_Bridge (Where xx is MMDVM, Quantar, HB, IPSC)&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;AMBE_AUDIO&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1                     ; IP address of xx_Bridge&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;31103&lt;/span&gt;                          ; Transmit TLV frames to partner on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;31100&lt;/span&gt;                          ; Listen for TLV frames from partner on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;ambeMode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; DMR                          ; DMR, DMR_IPSC, DSTAR, NXDN, P25, YSFN, YSFW &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;encode PCM to this format&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;minTxTimeMS&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2500&lt;/span&gt;                      ; Analog -&amp;gt; Digital Minimum time in MS for hang delay &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0-10000&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; The metadata below is used when ASL is the source since it does not have any concept of digital modes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;gatewayDmrId&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2354429&lt;/span&gt;                  ; ID to use when transmitting from Analog_Bridge 7 digit ID&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;repeaterID&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;235442999&lt;/span&gt;                  ; ID of source repeater 7 digit ID plus 2 digit SSID &lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txTg&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2354429&lt;/span&gt;                                ; TG to use for all frames sent from Analog_Bridge -&amp;gt; xx_Bridge&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txTs&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                                ; Slot to use for frames sent from Analog_Bridge -&amp;gt; xx_Bridge&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;colorCode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;                           ; Color Code to assign DMR frames&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Information for USRP channel driver.  This interface uses PCM to transfer audio information&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; There are two typical configurations, ASL and Transcode.  ASL (AllstarLink) is for analog clients connected&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; to a digital network.  Transcode is when Analog_Bridge actually points its PCM interfaces back at itself, &lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; causing a TLV &amp;lt;-- (pcm &amp;lt;--&amp;gt; pcm) --&amp;gt; TLV type of architecture.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   When using ASL, this matches the rpt.conf ASL file with a setting like:&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   rxchannel = usrp/127.0.0.1:34001:32001&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   When Transcoding, make two ini files and set txPort equal to the other instance rxPort (crossover).  Launch&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   each instance with its own ini file.&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;USRP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1                     ; IP address of USRP partner &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;Analog_Reflector, Allstar/Asterisk or another Analog_Bridge&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;31001&lt;/span&gt;                          ; Transmit USRP frames on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;34001&lt;/span&gt;                          ; Listen for USRP frames on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;usrpAudio&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; AUDIO_USE_GAIN                 ; Digital -&amp;gt; Analog &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_USE_AGC&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;usrpGain&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;5.0&lt;/span&gt;                         ; Gain factor when usrpAudio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; AUDIO_USE_GAIN &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0.0 to 5.0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;1.0 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; AUDIO_UNITY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;usrpAGC&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; -&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;                    ; Set the agc threshold &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;db&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, slope &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;db&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; and decay &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ms&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;tlvAudio&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; AUDIO_USE_GAIN                  ; Analog -&amp;gt; Digital &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_BPF&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;tlvGain&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;1.0&lt;/span&gt;                          ; Gain factor when tlvAudio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; AUDIO_USE_GAIN &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0.0 to 5.0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;1.0 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; AUDIO_UNITY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;MACROS&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Where the macros are&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; xxxx=yyyy&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; xxxx is the dial string to match&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; yyyy is the command line to execute&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; xxxx must be preceded by a *&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; xxxx can be any string (alphanumeric)&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; yyyy is the command to execute&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; yyyy will replace xxxx in the dial string&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; arguments follow the macro name with a # delimiter&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; For example using macro &amp;quot;5678&amp;quot; above would look like:&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; *5678#9876&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Which would invoke:&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; echo 9876&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Information for DV3000 hardware decoder&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   There are two configuration modes: IP (AMBEServer) and serial (direct connect hardware)&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   Use top server and port if using AMBEServer&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   Use bottom server/port and serial = true if using the DV3000u (thumbdv)&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   Did you run AMBETest4.py before using this?&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DV3000&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1                   ; IP address of AMBEServer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2460&lt;/span&gt;                         ; Port of AMBEServer&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; address = /dev/ttyUSB0              ; Device of DV3000U on this machine&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; baud = 460800                       ; Baud rate of the dongle (230400 or 460800)&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; serial = true                       ; Use serial=true for direct connect or serial=false for AMBEServer&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Analog_Bridge.ini&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;analog_bridgeini&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;5513-10855&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;test_node&quot;&gt;Test Node&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; See &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:test_node&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:test_node&quot; data-wiki-id=&quot;public:radio:topics:allstar:test_node&quot;&gt;Test Node 481482&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 08/06/25 18:44 BST&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Test Node&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;test_node&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;10856-10953&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:allstar&amp;amp;do=showtag&amp;amp;tag=allstar&quot; class=&quot;wikilink1&quot; title=&quot;tag:allstar&quot; rel=&quot;tag&quot;&gt;allstar&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dvswitch&amp;amp;do=showtag&amp;amp;tag=dvswitch&quot; class=&quot;wikilink1&quot; title=&quot;tag:dvswitch&quot; rel=&quot;tag&quot;&gt;dvswitch&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dmr&amp;amp;do=showtag&amp;amp;tag=dmr&quot; class=&quot;wikilink1&quot; title=&quot;tag:dmr&quot; rel=&quot;tag&quot;&gt;dmr&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:echolink&amp;amp;do=showtag&amp;amp;tag=echolink&quot; class=&quot;wikilink1&quot; title=&quot;tag:echolink&quot; rel=&quot;tag&quot;&gt;echolink&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;10954-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 18:42:09 +0000</pubDate>
        </item>
        <item>
            <title>NXDN Bridging</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:allstar_nxdn</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:start&quot; data-wiki-id=&quot;public:radio:topics:allstar:start&quot;&gt;AllStar Linking&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;nxdn_bridging&quot;&gt;NXDN Bridging&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; A change from &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:allstar_dmr&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:allstar_dmr&quot; data-wiki-id=&quot;public:radio:topics:allstar:allstar_dmr&quot;&gt; DMR!&lt;/a&gt; &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/images/smileys/fixme.svg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;NXDN Bridging&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nxdn_bridging&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-95&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;overview_of_ip_udp_ports&quot;&gt;Overview of IP UDP ports&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;
    Asterisk              Analog_Bridge           DVSwitch                  NXDNGateway
    ========              =============           MMDVM_Bridge              ===========
                                                  ============
                                                  
    [node]                [USPR]
    rxPort 31001 &amp;lt;------- txPort 31001
    txPort 34001 -------&amp;gt; rxPort 34001
                             ↓ ↑
                          [md380-emu]:2470
                             ↓ ↑
                          [AMBE]                [NXDN]
                          txPort 33103 ------&amp;gt;  rxPort 33103
                          rxPort 33100 &amp;lt;------  txPort 33100
                                                  ↓ ↑
                                                [NXDN Network]              [General]
                                                LocalPort   14021   &amp;lt;-----  RptPort   14021
                                                GatewayPort 14020   -----&amp;gt;  LocalPort 14020
                                                                                ↓ ↑
                                                                            [Network]
                                                                            Host IP/Port obtained from hostfiles
                                                                            by reference to Analog_Bridge txTG=xxxx&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Overview of IP UDP ports&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;overview_of_ip_udp_ports&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;96-1578&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;the_main_things&quot;&gt;The main Things&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Make sure &lt;code&gt;Analog_Bridge.ini&lt;/code&gt; has the correct txPort and rxPort in its [USRP] section &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;USRP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1           ; IP address of USRP partner &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;Analog_Reflector, Allstar/Asterisk or another Analog_Bridge&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;31001&lt;/span&gt;                ; Transmit USRP frames on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;34001&lt;/span&gt;                ; Listen for USRP frames on this port&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; It should match Asterisk&amp;#039;s private node as defined in &lt;code&gt;/etc/asterisk/rpt.conf&lt;/code&gt; - in this case it&amp;#039;s [1398]&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;1398&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxchannel&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; USRP/127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;34001&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;31001&lt;/span&gt; ; Use the USRP channel driver. Must be enabled in modules.conf&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt; ; 127.0.0.1 = IP of the target application&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt; ; 34001 = UDP port the target application is listening on&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt; ; 32001 = UDP port ASL is listening on&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Make Sure &lt;code&gt;Analog_Bridge.ini&lt;/code&gt; has the correct txPort and rxPort in its [AMBE] section&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;AMBE_AUDIO&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1                     ; IP address of xx_Bridge&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; For DMR  - match the ports set in DVSwitch.ini&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;txPort = 31103                          ; Transmit TLV frames to partner on this port&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;rxPort = 31100                          ; Listen for TLV frames from partner on this port&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; FOr NXDN - match the ports set in DVSwitch.ini&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;33103&lt;/span&gt;                          ; Transmit TLV frames to partner on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;33100&lt;/span&gt;                          ; Listen for TLV frames from partner on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;ambeMode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; NXDN                          ; DMR, DMR_IPSC, DSTAR, NXDN, P25, YSFN, YSFW &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;encode PCM to this format&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; should match the ports in &lt;code&gt;DVSwitch.ini&lt;/code&gt; [NXDN] section&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;co0&quot;&gt;; Configure the NXDN Partner&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Audio format is AMBE 72 bit&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NXDN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1             ; Address to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;33100&lt;/span&gt;                  ; Port to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;33103&lt;/span&gt;                  ; Port to listen on &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;import&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Disable [DMR] in &lt;code&gt;MMDVM_Bridge.ini&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DMR&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;ColorCode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;EmbeddedLCOnly&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;DumpTAData&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Enable [NXDN] in &lt;code&gt;MMDVM_Bridge.ini&lt;/code&gt; and set your own NXDN ID number&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NXDN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RAN&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Id&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;7485&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Set Fallback IDs in &lt;code&gt;DVSwitch.ini&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re1&quot;&gt;fallbackID&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2354429&lt;/span&gt;            ; In case we can not find a valid DMR id in the database, export this one&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;nxdnFallbackID&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;7485&lt;/span&gt;         ; Use this ID when the input DMR ID is not found in the database&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Set Callsign in &lt;code&gt;NXDNGateway.ini&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;General&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Callsign&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;GM4SLV&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Suffix&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;NXDN&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I don&amp;#039;t know what &lt;code&gt;Suffix&lt;/code&gt; means, I left it as found&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Set the NXDN talkgroup in &lt;code&gt;Analog_Bridge.ini&lt;/code&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; NXDN Talkgroups are listed here : &lt;a href=&quot;https://www.pistar.uk/nxdn_reflectors.php&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.pistar.uk/nxdn_reflectors.php&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.pistar.uk/nxdn_reflectors.php&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; A Talkgroup actually seems to specify a particular reflector IP address/Hostname &amp;amp; UDP port&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; These are retrieved by &lt;code&gt;NXDNGateway&lt;/code&gt; from the hostfile : &lt;code&gt;/var/lib/mmdvm/NXDNHosts.txt&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Setting the &lt;code&gt;txTG=23551&lt;/code&gt; in &lt;code&gt;Analog_Bridge.ini&lt;/code&gt; causes &lt;code&gt;NXDNGateway&lt;/code&gt; to make a connection to the relevant reflector when you send traffic by keying up. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; For example TG23551 (Scot-Multi) appears in &lt;code&gt;NXDNHosts.txt&lt;/code&gt; as:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;23551   nxdnscotland.ddns.net   41400&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Having &lt;code&gt;txTG=23551&lt;/code&gt; in &lt;code&gt;Analog_Bridge.ini&lt;/code&gt; causes DVSwitch to connect, and start to flow packets, with &lt;code&gt;nxdnscotland.ddns.net:41400&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Another source of info &lt;a href=&quot;https://dvref.com/nxdn/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://dvref.com/nxdn/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://dvref.com/nxdn/&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; TG23551 : &lt;a href=&quot;https://dvref.com/nxdn/nxdn-23551&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://dvref.com/nxdn/nxdn-23551&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://dvref.com/nxdn/nxdn-23551&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:allstar:tg23551.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:allstar:tg23551.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=353b9d&amp;amp;media=public:radio:allstar:tg23551.jpg&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The main Things&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_main_things&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1579-5093&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;updating_dvswitch_hostfiles&quot;&gt;Updating DVSwitch Hostfiles&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DVSwtich keep its hostfiles in &lt;code&gt;/var/lib/mmdvm&lt;/code&gt; and updates via &lt;code&gt;cron.daily/DVSM_Update&lt;/code&gt; which calls &lt;code&gt;/opt/MMDVM_Bridge/dvswitch.sh update&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; This tries to download hostfiles from various places using &lt;code&gt;curl&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; It seems to fail most of the time due to a SSL problem&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; A workaround is to put “insecure” in root&amp;#039;s ~/.curlrc&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;gm4slv@node481482:~$ &lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;su&lt;/span&gt; -
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;root@node481482:~# &lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; insecure &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;.curlrc
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;root@node481482:~# &lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;opt&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;MMDVM_Bridge&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dvswitch.sh update&lt;/pre&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_acf69d88260e2aa26bbfb93672b7f8a7_17&quot;&gt;DVSwitch.ini &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_acf69d88260e2aa26bbfb93672b7f8a7_17&quot;&gt;
&lt;h2&gt;DVSwitch.ini&lt;/h2&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;co0&quot;&gt;; MMDVM_Bridge export / import configuration file.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   This file should be placed along side of MMDVM_Bridge or you can supply&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   an absolute path in the DVSWITCH environment variable, e.g:&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   DVSWITCH=/etc/MMDVM_Bridge/DVSwitch.ini&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   before executing MMDVM_Bridge&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Another method to set the enviorment variable is to use the systemd unit file&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; by adding:&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Environment=DVSWITCH=/etc/MMDVM_Bridge/DVSwitch.ini&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; to /lib/systemd/system/mmdvm_bridge.service&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Configure the Quantar Repeater Partner&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Note that the TX and RX ports are already reversed for MMDVM_Bridge &amp;lt;--&amp;gt; Quantar_Bridge&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QUANTAR&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 0.0.0.0               ; Address to send IMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;34103&lt;/span&gt;                  ; Port to send IMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;34100&lt;/span&gt;                  ; Port to listen for IMBE TLV frames on &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;import&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;quantarPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;1994&lt;/span&gt;              ; HDLC frames To/From the Quantar repeater&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;debug&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;                       ; Debug 0 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; off, 1 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; on &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;adds lots of additional messages&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;logLevel&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                    ; Logging levels, 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;logFilePath&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; /var/log/dvswitch/Quantar_Bridge.log&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Configure the DMR Partner&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Audio format is AMBE 72 bit&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DMR&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1             ; Address to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;31100&lt;/span&gt;                  ; Port to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;31103&lt;/span&gt;                  ; Port to listen on &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;import&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;slot&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                        ; Export slot&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;exportTG&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;                    ; Which TG to export &lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;hangTimerInFrames&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;		; Use 50 for 3 seconds of hang time &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;3000 / 60&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;talkerAlias&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; %callsign %location %description ; Get callsign location and description from MMDVM_Bridge.ini&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Configure the D-Star Partner&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Audio format is AMBE 48 bit (DSAMBE)&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DSTAR&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1             ; Address to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;32100&lt;/span&gt;                  ; Port to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;32103&lt;/span&gt;                  ; Port to listen on &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;import&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;fallbackID&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;1234567&lt;/span&gt;            ; In case we can not find a valid DMR id in the database, export this one&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;exportTG&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;                    ; Which TG to export&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;slot&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                        ; Export slot&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RemotePort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;54321&lt;/span&gt;		; Port to send Gateway commands to&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;message&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; %location %description ; Get location and description from MMDVM_Bridge.ini&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Configure the NXDN Partner&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Audio format is AMBE 72 bit&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NXDN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1             ; Address to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;33100&lt;/span&gt;                  ; Port to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;33103&lt;/span&gt;                  ; Port to listen on &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;import&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;fallbackID&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2354429&lt;/span&gt;            ; In case we can not find a valid DMR id in the database, export this one&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;nxdnFallbackID&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;7485&lt;/span&gt;         ; Use this ID when the input DMR ID is not found in the database&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;translate&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;1234&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4321&lt;/span&gt;           ; Translate NXDN TG &amp;lt; -- &amp;gt; DMR TG &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;bidirectional&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;slot&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                        ; Export slot&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RemotePort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;6075&lt;/span&gt;		; Port to send Gateway commands to&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Configure the P25 Partner&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Audio format is IMBE 88 bit&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;P25&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1             ; Address to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;34100&lt;/span&gt;                  ; Port to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;34103&lt;/span&gt;                  ; Port to listen on &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;import&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;slot&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                        ; Export slot&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RemotePort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;6074&lt;/span&gt;		; Port to send Gateway commands to&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Configure the Yaesu Fusion Partner&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Audio format is AMBE 72 bit&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Audio format is IMBE 88 bit&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;YSF&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1             ; Address to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;35100&lt;/span&gt;                  ; Port to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;35103&lt;/span&gt;                  ; Port to listen on &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;import&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txWidePort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;35105&lt;/span&gt;		; Port to send IMBE TLV frames to for YSFw &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;fallbackID&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;1234567&lt;/span&gt;            ; In case we can not find a valid DMR id in the database, export this one&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;exportTG&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;                    ; Which TG to export&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;slot&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                        ; Export slot&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RemotePort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;6073&lt;/span&gt;		; Port to send Gateway commands to&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Configure the BrandMeister connection&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Simple Terminal Feature Update&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Audio format is AMBE 72 bit&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;STFU&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;                          ; Brandmeister Open DMR Terminal &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ODMRT&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; Protocol
&lt;span class=&quot;re1&quot;&gt;BMAddress&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;3102&lt;/span&gt;.repeater.net   ; Brandmeister ODMRT server address&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;BMPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;54006&lt;/span&gt;                  ; Brandmeister ODMRT port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;BMPassword&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; passw0rd           ; Your Brandmeister password&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1             ; Address to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;36100&lt;/span&gt;                 ; Port to send AMBE TLV frames to &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;export&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;36103&lt;/span&gt;                 ; Port to listen on &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;import&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;UserID&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;1234567&lt;/span&gt;               ; Your DMR ID&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;TalkerAlias&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; N0CALL Name City  ; Max 27 characters&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;StartTG&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;3166&lt;/span&gt;                  ; Startup talk group&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;LogLevel&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;                    ; STFU log level &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;No logging, 1&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;Debug, 2&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;Message, 3&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;Info, 4&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;Warning, 5&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;Error&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ASL&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 30100&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 30103&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_acf69d88260e2aa26bbfb93672b7f8a7_18&quot;&gt;MMDVM_Bridge.ini &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_acf69d88260e2aa26bbfb93672b7f8a7_18&quot;&gt;
&lt;h2&gt;MMDVM_Bridge.ini&lt;/h2&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;General&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Callsign&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;GM4SLV&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Id&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;235442998&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Timeout&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;180&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Duplex&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Info&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RXFrequency&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;144900000&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;TXFrequency&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;144900000&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Power&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Latitude&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;60.2885&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Longitude&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;-1.425&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Location&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;GM4SLV Bridge2&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Description&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;MMDVM_Bridge&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;URL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;https://gm4slv.org.uk&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Log&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
# Logging levels, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;DisplayLevel&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;FileLevel&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;FilePath&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/var/log/mmdvm&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;FileRoot&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;MMDVM_Bridge&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DMR Id Lookup&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/var/lib/mmdvm/DMRIds.dat&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;24&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NXDN Id Lookup&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;File&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/var/lib/mmdvm/NXDN.csv&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;24&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Modem&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Port&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/dev/null&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RSSIMappingFile&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/dev/null&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Trace&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;D-Star&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Module&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;B&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DMR&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;ColorCode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;EmbeddedLCOnly&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;DumpTAData&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;System Fusion&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;P25&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;NAC&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;293&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NXDN&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RAN&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Id&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;7485&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;D-Star Network&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayAddress&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;20010&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;LocalPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;20011&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DMR Network&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; TGIF&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Address=tgif.network&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Port=62031&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;TGIF Password for 2354435&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Password=XXXXXXXXX&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; TGIF Password for 2354429&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Password=XXXXXXXXX&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Brandmeister&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Address&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;2341.master.brandmeister.network&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Password&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;XXXXXXX&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Port&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;62031&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re1&quot;&gt;Jitter&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;750&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Local&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;62032&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; FOR DVS_Ph F&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Address=78.129.135.43&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Port=55555&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Password=PASSWORD&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;Options=StartRef=4000;RelinkTime=0;UserLink=0;TS1_1=733;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re1&quot;&gt;Slot1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Slot2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;System Fusion Network&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;LocalAddress&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;LocalPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;3200&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayAddress&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;4200&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;P25 Network&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayAddress&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;42020&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;LocalPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;32010&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NXDN Network&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
#LocalAddress&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;LocalPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;14021&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayAddress&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;GatewayPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;14020&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_acf69d88260e2aa26bbfb93672b7f8a7_19&quot;&gt;NXDNGateway.ini &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_acf69d88260e2aa26bbfb93672b7f8a7_19&quot;&gt;
&lt;h2&gt;NXDNGateway.ini&lt;/h2&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;General&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Callsign&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;GM4SLV&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Suffix&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;NXDN&lt;/span&gt;
# The next four lines are for a Kenwood repeater
# RptProtocol&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;Kenwood&lt;/span&gt;
# RptAddress&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1.2.3.4&lt;/span&gt;
# RptPort&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;64000&lt;/span&gt;
# LocalPort&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;64000&lt;/span&gt;
# The next four lines are for an Icom repeater
# RptProtocol&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;Icom&lt;/span&gt;
# RptAddress&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1.2.3.4&lt;/span&gt;
# RptPort&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;41300&lt;/span&gt;
# LocalPort&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;41300&lt;/span&gt;
# The next four lines are for an MMDVM
&lt;span class=&quot;re1&quot;&gt;RptProtocol&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;Icom&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RptAddress&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RptPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;14021&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;LocalPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;14020&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Daemon&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Info&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;RXFrequency&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;223500000&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;TXFrequency&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;223500000&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Power&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Latitude&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;41.7333&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Longitude&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;-50.3999&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Height&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Location&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;Iceberg&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Description&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;DVSwitch&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;URL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;https://groups.io/g/DVSwitch&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Voice&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enabled&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Language&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;en_GB&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Directory&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;./Audio&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;aprs.fi&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
# Server&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;noam.aprs2.net&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Server&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;euro.aprs2.net&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Port&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;14580&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Password&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;9999&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Description&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;APRS Description&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Suffix&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;N&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Id Lookup&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/var/lib/mmdvm/NXDN.csv&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;24&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Log&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
# Logging levels, &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;DisplayLevel&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;FileLevel&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;FilePath&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/var/log/mmdvm&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;FileRoot&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;NXDNGateway&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Network&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Port&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;14050&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;HostsFile1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/var/lib/mmdvm/NXDNHosts.txt&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;HostsFile2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;/var/lib/mmdvm/private_NXDNHosts.txt&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;ReloadTime&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;60&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;ParrotAddress&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;ParrotPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;42021&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;NXDN2DMRAddress&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;NXDN2DMRPort&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;42022&lt;/span&gt;
# Startup&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;10200&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;InactivityTimeout&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Debug&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Mobile GPS&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Address&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;127.0.0.1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Port&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;7834&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Remote Commands&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Enable&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;Port&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;6075&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_acf69d88260e2aa26bbfb93672b7f8a7_20&quot;&gt;Analog_Bridge.ini &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_acf69d88260e2aa26bbfb93672b7f8a7_20&quot;&gt;
&lt;h2&gt;Analog_Bridge.ini&lt;/h2&gt;
&lt;pre class=&quot;code ini&quot;&gt;&lt;span class=&quot;co0&quot;&gt;; Analog_Bridge configuration file.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   This file should be placed in either /etc or it can be&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   supplied as a path on the Analog_Bridge command line.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; The best way to think of this file is that there are two main sections, the USRP (analog audio) and&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; AMBE_AUDIO (compressed audio).  Analog_Bridge will take everything sent to the USRP port and&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; encode it for transmission on the AMBE_AUDIO port.  The encoder will use the format defined in ambeMode.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; As you might expect, the reverse direction is defined too.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Analog_Bridge supports include files. More on this later...&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; dvsm.macro&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; include = asl.macro&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; General Section describes settings for Analog_Bridge itself.&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;GENERAL&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;logLevel&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                            ; Show messages and above 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Metadata management&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;exportMetadata&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; true                   ; Export metadata to USRP partner &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;transcode setups require this&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;transferRootDir&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; /tmp			; Export database files to USRP partner&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;subscriberFile&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; /var/lib/dvswitch/subscriber_ids.csv   ; DMR ID to callsign lookup data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; General vocoder setup information&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;decoderFallBack&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; true                  ; Allow software AMBE decoding if a hardware decoder is not found&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;useEmulator&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; true                     ; Use the MD380 AMBE emulator for AMBE72 &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;DMR/YSFN/NXDN&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;emulatorAddress&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;2470&lt;/span&gt;        ; IP address and port of the md380 server&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re1&quot;&gt;pcmPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2222&lt;/span&gt;				; UDP port to send to the WebProxy&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Information for xx_Bridge (Where xx is MMDVM, Quantar, HB, IPSC)&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;AMBE_AUDIO&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1                     ; IP address of xx_Bridge&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; For DMR - set in DVSwitch.ini&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;txPort = 31103                          ; Transmit TLV frames to partner on this port&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;rxPort = 31100                          ; Listen for TLV frames from partner on this port&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; FOr NXDN - set in DVSwitch.ini&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;33103&lt;/span&gt;                          ; Transmit TLV frames to partner on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;33100&lt;/span&gt;                          ; Listen for TLV frames from partner on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;ambeMode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; NXDN                          ; DMR, DMR_IPSC, DSTAR, NXDN, P25, YSFN, YSFW &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;encode PCM to this format&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;minTxTimeMS&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2500&lt;/span&gt;                      ; Analog -&amp;gt; Digital Minimum time in MS for hang delay &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0-10000&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; The metadata below is used when ASL is the source since it does not have any concept of digital modes&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;gatewayDmrId&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2354429&lt;/span&gt;                  ; ID to use when transmitting from Analog_Bridge 7 digit ID&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;repeaterID&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;235442998&lt;/span&gt;                  ; ID of source repeater 7 digit ID plus 2 digit SSID &lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; Talkgroup needed for DMR and NXDN.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; NXDNGateway uses Talkgroup to choose the reflector IP/Port from its Host Files&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txTg&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;23551&lt;/span&gt;                        ; TG to use for all frames sent from Analog_Bridge -&amp;gt; xx_Bridge&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txTs&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;                                ; Slot to use for frames sent from Analog_Bridge -&amp;gt; xx_Bridge&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;colorCode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;                           ; Color Code to assign DMR frames&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Information for USRP channel driver.  This interface uses PCM to transfer audio information&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; There are two typical configurations, ASL and Transcode.  ASL (AllstarLink) is for analog clients connected&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; to a digital network.  Transcode is when Analog_Bridge actually points its PCM interfaces back at itself, &lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; causing a TLV &amp;lt;-- (pcm &amp;lt;--&amp;gt; pcm) --&amp;gt; TLV type of architecture.&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   When using ASL, this matches the rpt.conf ASL file with a setting like:&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   rxchannel = usrp/127.0.0.1:34001:32001&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   When Transcoding, make two ini files and set txPort equal to the other instance rxPort (crossover).  Launch&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   each instance with its own ini file.&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;USRP&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1                     ; IP address of USRP partner &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;Analog_Reflector, Allstar/Asterisk or another Analog_Bridge&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;txPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;31001&lt;/span&gt;                          ; Transmit USRP frames on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;34001&lt;/span&gt;                          ; Listen for USRP frames on this port&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;usrpAudio&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; AUDIO_USE_GAIN                 ; Digital -&amp;gt; Analog &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_USE_AGC&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;usrpGain&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;5.0&lt;/span&gt;                         ; Gain factor when usrpAudio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; AUDIO_USE_GAIN &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0.0 to 5.0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;1.0 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; AUDIO_UNITY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;usrpAGC&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; -&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;                    ; Set the agc threshold &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;db&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;, slope &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;db&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; and decay &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ms&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;tlvAudio&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; AUDIO_USE_GAIN                  ; Analog -&amp;gt; Digital &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;/span&gt;AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_BPF&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;tlvGain&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;1.0&lt;/span&gt;                          ; Gain factor when tlvAudio &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; AUDIO_USE_GAIN &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;0.0 to 5.0&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;1.0 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; AUDIO_UNITY&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;MACROS&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Where the macros are&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; xxxx=yyyy&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; xxxx is the dial string to match&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; yyyy is the command line to execute&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; xxxx must be preceded by a *&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; xxxx can be any string (alphanumeric)&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; yyyy is the command to execute&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; yyyy will replace xxxx in the dial string&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; arguments follow the macro name with a # delimiter&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; For example using macro &amp;quot;5678&amp;quot; above would look like:&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; *5678#9876&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Which would invoke:&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; echo 9876&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;
; Information for DV3000 hardware decoder&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   There are two configuration modes: IP (AMBEServer) and serial (direct connect hardware)&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   Use top server and port if using AMBEServer&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   Use bottom server/port and serial = true if using the DV3000u (thumbdv)&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;;   Did you run AMBETest4.py before using this?&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;DV3000&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&lt;span class=&quot;re2&quot;&gt; 127.0.0.1                   ; IP address of AMBEServer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;rxPort&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;2460&lt;/span&gt;                         ; Port of AMBEServer&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; address = /dev/ttyUSB0              ; Device of DV3000U on this machine&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; baud = 460800                       ; Baud rate of the dongle (230400 or 460800)&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;; serial = true                       ; Use serial=true for direct connect or serial=false for AMBEServer&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
— &lt;em&gt;John Pumford-Green 10/06/25 08:51 BST&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Updating DVSwitch Hostfiles&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;updating_dvswitch_hostfiles&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;5094-19480&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:allstar&amp;amp;do=showtag&amp;amp;tag=AllStar&quot; class=&quot;wikilink1&quot; title=&quot;tag:allstar&quot; rel=&quot;tag&quot;&gt;AllStar&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:dvswitch&amp;amp;do=showtag&amp;amp;tag=dvswitch&quot; class=&quot;wikilink1&quot; title=&quot;tag:dvswitch&quot; rel=&quot;tag&quot;&gt;dvswitch&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:nxdn&amp;amp;do=showtag&amp;amp;tag=nxdn&quot; class=&quot;wikilink1&quot; title=&quot;tag:nxdn&quot; rel=&quot;tag&quot;&gt;nxdn&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:15,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;19481-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 18:42:09 +0000</pubDate>
        </item>
        <item>
            <title>HF APRS Mobile/Portable</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:aprs:mobile_hf_aprs</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:aprs:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:aprs:start&quot; data-wiki-id=&quot;public:radio:topics:aprs:start&quot;&gt;APRS&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;hf_aprs_mobile_portable&quot;&gt;HF APRS Mobile/Portable&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HF APRS Mobile\/Portable&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hf_aprs_mobile_portable&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-56&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;initial_thoughts&quot;&gt;Initial Thoughts&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
My plan is to use either of
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; TinyTrak3 + &lt;em class=&quot;u&quot;&gt;serial&lt;/em&gt; GPS as a one-way tracker&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Netbook with &lt;code&gt;direwolf&lt;/code&gt; and a &lt;em class=&quot;u&quot;&gt;USB&lt;/em&gt; GPS&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; a tracker&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; xastir for maps etc&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Either of these will interface with a &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:xeigu_g90&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:xeigu_g90&quot; data-wiki-id=&quot;public:radio:radio_database:xeigu_g90&quot;&gt; Xiegu G90&lt;/a&gt; and some form of mobile whip.
&lt;/p&gt;

&lt;p&gt;
I may use 30m hoping to get packets directly to other iGates in Europe &lt;em&gt;or&lt;/em&gt; use 10m and run an iGate on 10m at home. It&amp;#039;s all on the drawing board at the moment. It will be interesting to compare local coverage between 30m and 10m as well as seeing how well 30m mobile with a short whip can perform.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Initial Thoughts&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;initial_thoughts&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;57-683&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;tiny_trak_3&quot;&gt;Tiny Trak 3&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Uses serial GPS to provide position data&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Only transmits, no receive/decode&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Can transmit VHF (1200bd) or HF (300bd) APRS&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Tiny Trak 3&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tiny_trak_3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;684-841&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;hf_aprs_configuration_settings&quot;&gt;HF APRS configuration settings&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit5&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; Date &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Config.&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; April 2023 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; xxxx &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;884-923&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HF APRS configuration settings&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;hf_aprs_configuration_settings&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;842-925&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;firmware_docs&quot;&gt;Firmware/Docs&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;div class=&quot;table sectionedit7&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Firmware   &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:tinytrak3_v1.42.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:radio:active:tinytrak3_v1.42.zip (7.3 KB)&quot;&gt;tinytrak3_v1.42.zip&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; User Guide &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:tinytrak3plus_v1.03.pdf&quot; class=&quot;media mediafile mf_pdf&quot; title=&quot;public:radio:active:tinytrak3plus_v1.03.pdf (1.2 MB)&quot;&gt;tinytrak3plus_v1.03.pdf&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Configuration Utility &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:active:tinytrak3_config_v1.4.6.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:radio:active:tinytrak3_config_v1.4.6.zip (509.5 KB)&quot;&gt;tinytrak3_config_v1.4.6.zip&lt;/a&gt;  &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;951-1169&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Firmware\/Docs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;firmware_docs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;926-1170&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;test_and_setup&quot;&gt;Test and Setup&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Aaprs%3Amobile_hf_aprs&amp;amp;media=public:radio:active:g90.jpg&quot; class=&quot;media&quot; title=&quot;public:radio:active:g90.jpg&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=0b61ea&amp;amp;media=public:radio:active:g90.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Aaprs%3Amobile_hf_aprs&amp;amp;media=public:radio:active:gm4slv11.png&quot; class=&quot;media&quot; title=&quot;public:radio:active:gm4slv11.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=c4747c&amp;amp;media=public:radio:active:gm4slv11.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Test and Setup&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;test_and_setup&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;1171-1279&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;first_reception&quot;&gt;First Reception&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
From aprs.fi - packets being received in Germany at DK4XI
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://aprs.fi/?c=raw&amp;amp;call=GM4SLV-11&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://aprs.fi/?c=raw&amp;amp;call=GM4SLV-11&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://aprs.fi/?c=raw&amp;amp;call=GM4SLV-11&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;2023-04-29 07:47:49 BST: GM4SLV-11&amp;gt;APT311,qAR,DK4XI-30:&amp;gt;John on HF
2023-04-29 07:47:52 BST: GM4SLV-11&amp;gt;V0QWRY,qAR,DK4XI-30:`w5Nl  j/&amp;quot;3x}
2023-04-29 07:52:50 BST: GM4SLV-11&amp;gt;V0QWSP,qAR,DK4XI-30:`w5Nl ^j/&amp;quot;4+}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;First Reception&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;first_reception&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;1280-1633&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;mobile_journey_1_on_30m&quot;&gt;Mobile Journey #1 on 30m&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
02/05/23:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; using 10m “stinger” mobile whip and G90&amp;#039;s internal ATU / 20W&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; not very encouraging local coverage between mobile and home QTH&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; large gap in coverage - journey actually went to Lerwick and back….&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; next experiment will be to use 10m - hopefully antenna is more efficient on that band&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Aaprs%3Amobile_hf_aprs&amp;amp;media=public:radio:active:gm4slv_11_aprs_30m_1.png&quot; class=&quot;media&quot; title=&quot;public:radio:active:gm4slv_11_aprs_30m_1.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=966bd8&amp;amp;media=public:radio:active:gm4slv_11_aprs_30m_1.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
03/05/12
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; found that the antenna used yesterday was tuned to 31MHz… short whip&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; swapped for 2nd whip and this is tuned to 28.2MHz…. longer whip. More efficient?&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 26/04/23 15:02&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mobile Journey #1 on 30m&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mobile_journey_1_on_30m&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;1634-2262&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; TinyTrak3 website : &lt;a href=&quot;https://www.byonics.com/tinytrak3&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.byonics.com/tinytrak3&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.byonics.com/tinytrak3&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:aprs&amp;amp;do=showtag&amp;amp;tag=aprs&quot; class=&quot;wikilink1&quot; title=&quot;tag:aprs&quot; rel=&quot;tag&quot;&gt;aprs&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;2263-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:54:52 +0000</pubDate>
        </item>
        <item>
            <title>APRS</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:aprs:start</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:start&quot; data-wiki-id=&quot;public:radio:topics:start&quot;&gt;Radio Topics&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;aprs&quot;&gt;APRS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
I&amp;#039;ve used APRS on both VHF and HF on and off for several years.
&lt;/p&gt;

&lt;p&gt;
This is a small collection of information about various APRS related projects.
&lt;/p&gt;

&lt;p&gt;
&lt;script type=&quot;text/javascript&quot;&gt; catlist_baseurl = &quot;https://www.g4slv.info/dokuwiki/&quot;; catlist_basescript = &quot;doku.php&quot;; catlist_useslash = 0; catlist_userewrite = 0; catlist_sepchar = &quot;_&quot;; catlist_deaccent = 1; catlist_pagename_sanitize = 1; &lt;/script&gt;&lt;ul style=&quot;-webkit-column-count: 3; -moz-column-count: 3; column-count: 3;&quot; class=&quot;catlist_columns catlist-nslist&quot; &gt;&lt;li class=&quot;catlist-page&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:aprs:aprs&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:aprs:aprs&quot; data-wiki-id=&quot;public:radio:topics:aprs:aprs&quot;&gt;APRS&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;catlist-page&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:aprs:hf_aprs&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:aprs:hf_aprs&quot; data-wiki-id=&quot;public:radio:topics:aprs:hf_aprs&quot;&gt;HF APRS Base Station&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;catlist-page&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:aprs:mobile_hf_aprs&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:aprs:mobile_hf_aprs&quot; data-wiki-id=&quot;public:radio:topics:aprs:mobile_hf_aprs&quot;&gt;HF APRS Mobile/Portable&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;catlist-page&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:aprs:mini_igate&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:aprs:mini_igate&quot; data-wiki-id=&quot;public:radio:topics:aprs:mini_igate&quot;&gt;Mini Igate&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 26/04/23 13:41&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;APRS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;aprs&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;14-278&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;279-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 20:35:23 +0000</pubDate>
        </item>
        <item>
            <title>SVXLink : Install from source</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:svxlink</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:start&quot; data-wiki-id=&quot;public:radio:topics:svxlink:start&quot;&gt;SVXLink&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;svxlinkinstall_from_source&quot;&gt;SVXLink : Install from source&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;cm_simplex_gateway_mb7aze&quot;&gt;70cm Simplex Gateway MB7AZE&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
SVXLink installed on Raspberry Pi - compiled from author&amp;#039;s Git repository.
&lt;/p&gt;

&lt;p&gt;
VOIP networking is achieved using the SVXReflector protocol connecting to a reflector
server run by Chris G4NAB. This connects SVXLink systems together and provides “Talkgroups”
in a similar manner to DMR. There is a web portal to observe the network in real time here:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://svxportal-uk.ddns.net:81/index.php&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://svxportal-uk.ddns.net:81/index.php&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://svxportal-uk.ddns.net:81/index.php&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Asvxlink%3Asvxlink&amp;amp;media=public:radio:screenshot_2022-05-03_22.07.17.png&quot; class=&quot;media&quot; title=&quot;public:radio:screenshot_2022-05-03_22.07.17.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=0e2620&amp;amp;media=public:radio:screenshot_2022-05-03_22.07.17.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SVXLink : Install from source&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;svxlinkinstall_from_source&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;11-545&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;install_a_current_version_of_svxlink&quot;&gt;install a current version of SVXLink&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;install a current version of SVXLink&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;install_a_current_version_of_svxlink&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;546-595&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;get_current_git_version&quot;&gt;Get current Git version&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;code&gt;git clone &lt;a href=&quot;https://github.com/sm0svx/svxlink.git&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/sm0svx/svxlink.git&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/sm0svx/svxlink.git&lt;/a&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Get current Git version&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;get_current_git_version&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;596-683&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;install_dependencies&quot;&gt;Install Dependencies&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
A lot of dependencies are required, and not all of them are obvious from the INSTALL doc in 
the source, needing a few iterations of running &lt;code&gt;cmake -DUSE_QT=no .. &lt;/code&gt; and then installing whatever 
package is highlighted as &lt;em&gt;missing&lt;/em&gt;. This might need repeating several times to grab everything required, and to successfully complete the &lt;code&gt;cmake&lt;/code&gt; phase.
&lt;/p&gt;

&lt;p&gt;
Eventually everything is installed allowing the SVXlink package to be configured
and built. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Install Dependencies&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;install_dependencies&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;684-1166&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;configure&quot;&gt;Configure&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
When configuring with &lt;code&gt;cmake&lt;/code&gt; I used a command line switch &lt;code&gt; -DUSE_QT=no&lt;/code&gt; to avoid QT dependencies and building QTel client :
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;src
&lt;span class=&quot;kw2&quot;&gt;mkdir&lt;/span&gt; build
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; build
cmake -DUSE_QT=no ..
&lt;span class=&quot;kw2&quot;&gt;make&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;make&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt;
ldconfig&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;update_to_latest_version_from_git&quot;&gt;Update to latest version from GIT&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; svxlink
&lt;span class=&quot;kw2&quot;&gt;git pull&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; src&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;build
&lt;span class=&quot;kw2&quot;&gt;make&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;make&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;install&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; ldconfig&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configure&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configure&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1167-1563&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;running_svlink&quot;&gt;Running Svlink&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Start SVXLINK from script in home directory
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;svx_ref.sh&lt;/code&gt;
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;CFG&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink.conf
&lt;span class=&quot;re2&quot;&gt;LOG&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink.log
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;killall&lt;/span&gt; svxlink
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;killall&lt;/span&gt; svxlink
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;killall&lt;/span&gt; svxlink
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; svxlink &lt;span class=&quot;re5&quot;&gt;--daemon&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--logfile&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$LOG&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--config&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$CFG&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Probably need up to date sound files, with the additional items needed for reflector use:
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/sm0svx/svxlink-sounds-en_US-heather/releases&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/sm0svx/svxlink-sounds-en_US-heather/releases&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/sm0svx/svxlink-sounds-en_US-heather/releases&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Running Svlink&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;running_svlink&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1564-2040&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;configuration_file&quot;&gt;Configuration file&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:mb7azeconf&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:mb7azeconf&quot; data-wiki-id=&quot;public:radio:topics:svxlink:mb7azeconf&quot;&gt;svxlink.conf&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration file&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_file&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2041-2103&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;crontab&quot;&gt;Crontab&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;to_start_at_reboot&quot;&gt;to start at reboot&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;@reboot sleep 30 &amp;amp;&amp;amp; sudo -u gm4slv /home/gm4slv/svx_ref.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
 &lt;em&gt;&lt;a href=&quot;mailto:&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#64;&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#46;&amp;#112;&amp;#108;&amp;#117;&amp;#115;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#64;&amp;#103;&amp;#109;&amp;#52;&amp;#115;&amp;#108;&amp;#118;&amp;#46;&amp;#112;&amp;#108;&amp;#117;&amp;#115;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;John Pumford-Green&lt;/a&gt; Tue May  3 20:56:09 2022&lt;/em&gt;#
&lt;/p&gt;

&lt;p&gt;
Page Updated : 04/06/26 20:55 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:svxlink&amp;amp;do=showtag&amp;amp;tag=svxlink&quot; class=&quot;wikilink1&quot; title=&quot;tag:svxlink&quot; rel=&quot;tag&quot;&gt;svxlink&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:mb7aze&amp;amp;do=showtag&amp;amp;tag=mb7aze&quot; class=&quot;wikilink1&quot; title=&quot;tag:mb7aze&quot; rel=&quot;tag&quot;&gt;mb7aze&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Crontab&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;crontab&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2104-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 19:55:20 +0000</pubDate>
        </item>
        <item>
            <title>Svxlink Update (Dual Gateway)</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:svxlink_update</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:start&quot; data-wiki-id=&quot;public:radio:topics:svxlink:start&quot;&gt;SVXLink&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;svxlink_update_dual_gateway&quot;&gt;Svxlink Update (Dual Gateway)&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 02/06/22 19:56&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
To allow testing and comparison between 2m and 70cm I&amp;#039;ve got &lt;strong&gt;two&lt;/strong&gt; SVXLink gateways running.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; MB7AZE : 70cm : 430.050MHz @ 3W using FT-60&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; GM4SLV : 2m : 144.625MHz @ ??W using FT-8900 &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Both feed the same dual band colinear via a duplexer.
&lt;/p&gt;

&lt;p&gt;
Both are connected to G4NAB&amp;#039;s SVXReflector &lt;a href=&quot;http://svxportal-uk.ddns.net:81/index.php&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://svxportal-uk.ddns.net:81/index.php&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://svxportal-uk.ddns.net:81/index.php&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
(&lt;strong&gt;UPDATE&lt;/strong&gt; — &lt;em&gt;John Pumford-Green 03/06/22 09:05&lt;/em&gt;)
&lt;/p&gt;

&lt;p&gt;
I now realize that the DTMF problems were due to setting &lt;code&gt;de-emphasis&lt;/code&gt; &lt;code&gt;ON&lt;/code&gt; while &lt;em&gt;actually&lt;/em&gt; using the audio feed from the FT-8900 for &lt;code&gt;1200 packet&lt;/code&gt;, which already &lt;strong&gt;has&lt;/strong&gt; de-emphasis applied. So I was doing &lt;code&gt;double-de-emphasis&lt;/code&gt;. 
&lt;/p&gt;

&lt;p&gt;
No wonder the tones were being mangled.
&lt;/p&gt;

&lt;p&gt;
The &lt;del&gt;deleted&lt;/del&gt; section below shows what steps I took to restore the tone detection in this situation, but this isn&amp;#039;t &lt;em&gt;actually&lt;/em&gt; necessary if the &lt;em class=&quot;u&quot;&gt;correct&lt;/em&gt; audio feed is used. The quick-fix is to turn SVXLink&amp;#039;s &lt;code&gt;de-emphasis&lt;/code&gt; &lt;code&gt;OFF&lt;/code&gt; and restore the DTMF &lt;code&gt;twist&lt;/code&gt; to its normal value. The better fix will be to re-wire the interface to use the flat 9600 baud audio and restore SVXLink&amp;#039;s &lt;code&gt;de-emphasis&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
Set up audio levels &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:mb7azeconf&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:mb7azeconf&quot; data-wiki-id=&quot;public:radio:topics:svxlink:mb7azeconf&quot;&gt;MB7AZE SvxLink Config&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;del&gt;
Some tweaks were necessary to get GM4SLV to work - DTMF detection was flaky on certain digits when RX &lt;code&gt;de-emphasis&lt;/code&gt; was enabled - which is necessary when using the &lt;code&gt;9600 packet&lt;/code&gt; flat-audio feed from the FT-8900. The issue seems to be the roll-off of the de-emphasis affecting the DTMF digits that use the widest spaced tone-pairs. There&amp;#039;s are configuration items that can fix the problem:

&lt;code&gt;DTMF_MAX_FWD_TWIST&lt;/code&gt; and &lt;code&gt;DTMF_MAX_REV_TWIST&lt;/code&gt; in the [Local Receiver] section.

I had to set &lt;code&gt;DTMF_MAX_FWD_TWIST&lt;/code&gt; to &lt;code&gt;15&lt;/code&gt; to fix the problem.
&lt;/del&gt;
&lt;/p&gt;

&lt;p&gt;
The &lt;code&gt;GM4SLV&lt;/code&gt; gateway now uses the FT-8900 via an unmodified CM108 sound dongle. 
&lt;/p&gt;

&lt;p&gt;
The PTT is from GPIO25 and SQL is from CTCSS.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ve swapped the Echolink service &lt;em&gt;from&lt;/em&gt; MB7AZE-L &lt;em&gt;to&lt;/em&gt; GM4SLV-L.
&lt;/p&gt;

&lt;p&gt;
For the next period of testing MB7AZE will be lower profile, and the FT-60 handheld &lt;em class=&quot;u&quot;&gt;&lt;em&gt;can not&lt;/em&gt;&lt;/em&gt; handle long periods of transmitting (e.g. when set on HUBNET or similar). 
&lt;/p&gt;

&lt;p&gt;
The start-up script that also sets up GPIO (for PTT):
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;CFG&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink.conf
&lt;span class=&quot;re2&quot;&gt;LOG&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink.log
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;killall&lt;/span&gt; svxlink
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;killall&lt;/span&gt; svxlink
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;killall&lt;/span&gt; svxlink
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;25&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sys&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;class&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gpio&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;export&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sleep&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;out&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sys&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;class&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gpio&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gpio25&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;direction
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; svxlink &lt;span class=&quot;re5&quot;&gt;--daemon&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--logfile&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$LOG&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--config&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$CFG&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
&lt;code&gt;crontab&lt;/code&gt; to start it at &lt;code&gt;reboot&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;@reboot sleep 30 &amp;amp;&amp;amp; sudo -u gm4slv /home/gm4slv/svx_ref.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_dcc18b4bf15b85fdd1823aec22a71c11_43&quot;&gt;Here is the current &amp;#039;&amp;#039;svxlink.conf&amp;#039;&amp;#039; for GM4SLV : &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_dcc18b4bf15b85fdd1823aec22a71c11_43&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;GLOBAL&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LOGICS&lt;/span&gt;=SimplexLogic,ReflectorLogic
&lt;span class=&quot;re2&quot;&gt;CFG_DIR&lt;/span&gt;=svxlink.d
&lt;span class=&quot;re2&quot;&gt;TIMESTAMP_FORMAT&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;%c&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CARD_SAMPLE_RATE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;48000&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LOCATION_INFO&lt;/span&gt;=LocationInfo
&lt;span class=&quot;re2&quot;&gt;LINKS&lt;/span&gt;=LinkToReflector
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;SimplexLogic&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Simplex
&lt;span class=&quot;re2&quot;&gt;RX&lt;/span&gt;=Rx1
&lt;span class=&quot;re2&quot;&gt;TX&lt;/span&gt;=Tx1
&lt;span class=&quot;re2&quot;&gt;MODULES&lt;/span&gt;=ModuleHelp,ModuleParrot,ModuleEchoLink	
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=GM4SLV
&lt;span class=&quot;re2&quot;&gt;SHORT_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SHORT_CW_ID_ENABLE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SHORT_VOICE_ID_ENABLE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CW_AMP&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CW_PITCH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CW_WPM&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LONG_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LONG_VOICE_ID_ENABLE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LONG_CW_ID_ENABLE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;EVENT_HANDLER&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;share&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;events.tcl
&lt;span class=&quot;re2&quot;&gt;DEFAULT_LANG&lt;/span&gt;=en_GB
&lt;span class=&quot;re2&quot;&gt;RGR_SOUND_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TX_CTCSS&lt;/span&gt;=ALWAYS
&lt;span class=&quot;re2&quot;&gt;MACROS&lt;/span&gt;=Macros
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_NORMAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_LOW&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ONLINE_CMD&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;998877&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TIME_FORMAT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;RGR_SOUND_ALWAYS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;RepeaterLogic&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ReflectorLogic&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Reflector
&lt;span class=&quot;re2&quot;&gt;HOSTS&lt;/span&gt;=svxportal-uk.ddns.net
&lt;span class=&quot;re2&quot;&gt;HOST_PORT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;5300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;change this&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUTH_KEY&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;change this too&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;JITTER_BUFFER_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DEFAULT_LANG&lt;/span&gt;=en_GB
&lt;span class=&quot;re2&quot;&gt;DEFAULT_TG&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MONITOR_TGS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;91&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;235&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2350&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;2351&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;23561&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TG_SELECT_TIMEOUT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ANNOUNCE_REMOTE_MIN_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MUTE_FIRST_TX_LOC&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MUTE_FIRST_TX_REM&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TMP_MONITOR_TIMEOUT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3600&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;EVENT_HANDLER&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;share&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;events.tcl
&lt;span class=&quot;re2&quot;&gt;NODE_INFO_FILE&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;node_info.json
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;LinkToReflector&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CONNECT_LOGICS&lt;/span&gt;=SimplexLogic:&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;:,ReflectorLogic
&lt;span class=&quot;re2&quot;&gt;DEFAULT_ACTIVE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;OPTIONS&lt;/span&gt;=DEFAULT_CONNECT,NO_DISCONNECT
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QsoRecorder&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;REC_DIR&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;spool&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;qso_recorder
&lt;span class=&quot;re2&quot;&gt;MAX_TIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3600&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SOFT_TIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MAX_DIRSIZE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Voter&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;MultiTx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NetRx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NetTx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Rx1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Local
&lt;span class=&quot;re2&quot;&gt;AUDIO_DEV&lt;/span&gt;=alsa:plughw:&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUDIO_CHANNEL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SQL_DET&lt;/span&gt;=CTCSS
&lt;span class=&quot;re2&quot;&gt;SQL_START_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SQL_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SQL_HANGTIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;VOX_FILTER_DEPTH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;VOX_THRESH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CTCSS_FQ&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;77.0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;HID_DEVICE&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;hidraw0
&lt;span class=&quot;re2&quot;&gt;HID_SQL_PIN&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;VOL_DN
&lt;span class=&quot;re2&quot;&gt;SIGLEV_SLOPE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_OFFSET&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_OPEN_THRESH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_CLOSE_THRESH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DEEMPHASIS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;PREAMP&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0.0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_DEC_TYPE&lt;/span&gt;=INTERNAL
&lt;span class=&quot;re2&quot;&gt;DTMF_MUTING&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_HANGTIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_SERIAL&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ttyS0
&lt;span class=&quot;co0&quot;&gt;#DTMF_MAX_FWD_TWIST=8&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DTMF_MAX_REV_TWIST=4&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WbRx1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Tx1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Local
&lt;span class=&quot;re2&quot;&gt;AUDIO_DEV&lt;/span&gt;=alsa:plughw:&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUDIO_CHANNEL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;PTT_TYPE&lt;/span&gt;=GPIO
&lt;span class=&quot;re2&quot;&gt;PTT_PIN&lt;/span&gt;=gpio25
&lt;span class=&quot;re2&quot;&gt;HID_DEVICE&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;hidraw0
&lt;span class=&quot;re2&quot;&gt;HID_PTT_PIN&lt;/span&gt;=GPIO3
&lt;span class=&quot;re2&quot;&gt;PTT_HANGTIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TIMEOUT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TX_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CTCSS_FQ&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;77.0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CTCSS_LEVEL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;PREEMPHASIS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_TONE_LENGTH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_TONE_SPACING&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_DIGIT_PWR&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MASTER_GAIN&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;LocationInfo&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;APRS_SERVER_LIST&lt;/span&gt;=euro.aprs2.net:&lt;span class=&quot;nu0&quot;&gt;14580&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;STATUS_SERVER_LIST&lt;/span&gt;=aprs.echolink.org:&lt;span class=&quot;nu0&quot;&gt;5199&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LON_POSITION&lt;/span&gt;=1.25.30W
&lt;span class=&quot;re2&quot;&gt;LAT_POSITION&lt;/span&gt;=60.17.18N
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=EL-GM4SLV
&lt;span class=&quot;re2&quot;&gt;FREQUENCY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;144.625&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TX_POWER&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ANTENNA_GAIN&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ANTENNA_HEIGHT&lt;/span&gt;=5m
&lt;span class=&quot;re2&quot;&gt;ANTENNA_DIR&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;BEACON_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TONE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;77&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;COMMENT&lt;/span&gt;=Connected to UK Svx Reflector
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Macros&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;=EchoLink:&lt;span class=&quot;nu0&quot;&gt;9999&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;=EchoLink:&lt;span class=&quot;nu0&quot;&gt;973498&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;=EchoLink:&lt;span class=&quot;nu0&quot;&gt;662666&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;=:&lt;span class=&quot;nu0&quot;&gt;91235&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;=:&lt;span class=&quot;nu0&quot;&gt;9123561&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;=:&lt;span class=&quot;nu0&quot;&gt;910&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;h4 id=&quot;overview_of_config&quot;&gt;overview of config&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
See &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:mb7azeconf&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:mb7azeconf&quot; data-wiki-id=&quot;public:radio:topics:svxlink:mb7azeconf&quot;&gt;MB7AZE SvxLink Config&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Svxlink Update (Dual Gateway)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;svxlink_update_dual_gateway&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-5286&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;page_info&quot;&gt;Page Info&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 02/06/22 19:56&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Page last updated: 04/06/26 20:58 BST
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:echolink&amp;amp;do=showtag&amp;amp;tag=echolink&quot; class=&quot;wikilink1&quot; title=&quot;tag:echolink&quot; rel=&quot;tag&quot;&gt;echolink&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:svxlink&amp;amp;do=showtag&amp;amp;tag=svxlink&quot; class=&quot;wikilink1&quot; title=&quot;tag:svxlink&quot; rel=&quot;tag&quot;&gt;svxlink&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Page Info&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;page_info&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;5287-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 19:58:40 +0000</pubDate>
        </item>
        <item>
            <title>Svxlink &amp; Echolink</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:svx_echolink</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:start&quot; data-wiki-id=&quot;public:radio:topics:svxlink:start&quot;&gt;SVXLink&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;svxlink_echolink&quot;&gt;Svxlink &amp;amp; Echolink&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Revisiting the Analogue FM Voice Gateway&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Svxlink &amp;amp; Echolink&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;svxlink_echolink&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-97&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;svxlink_gateway_initial_setup&quot;&gt;Svxlink Gateway Initial Setup&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Svxlink Gateway Initial Setup&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;svxlink_gateway_initial_setup&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;98-141&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;trying_not_to_re-invent_the_wheel&quot;&gt;Trying not to re-invent the wheel&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; find saved Pi Image File for a previous Svxlink system&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; copy to a new SD Card and boot a spare Raspberry Pi with it&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; find and connect a modified CM108 sound-dongle - has PTT and SQL via the dongle&amp;#039;s own GPIO&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; connect to 2m FM radio and test initial config&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; make any necessary config changes - e.g. MB7AZE → GM4SLV&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; set up audio levels using &lt;em&gt;devcal&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; change to &lt;em&gt;9600 packet interface&lt;/em&gt; on 2m radio to remove radio pre/de emphasis and apply pre/de emphasis in Svxlink&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; set up audio levels again using &lt;em&gt;devcal&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Check connectivity to Echolink&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; remember to Port Forward on ADSL router : &lt;strong&gt;UDP 5198 &amp;amp; 5199&lt;/strong&gt; → svxlink Pi&amp;#039;s IP address&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; consider using a private proxy on my VPS instead? &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:allstar:jre_echolink&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:allstar:jre_echolink&quot; data-wiki-id=&quot;public:radio:topics:allstar:jre_echolink&quot;&gt;Java JRE and Echolink Proxy&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Trying not to re-invent the wheel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;trying_not_to_re-invent_the_wheel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;142-959&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;pi_image_file_handling&quot;&gt;Pi Image File handling&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:rpi_image&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:rpi_image&quot; data-wiki-id=&quot;public:computers:archive:rpi_image&quot;&gt;R Pi Image files&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Pi Image File handling&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;pi_image_file_handling&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;960-1034&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;devcal&quot;&gt;Devcal&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:mb7azeconf#devcal&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:mb7azeconf&quot; data-wiki-id=&quot;public:radio:topics:svxlink:mb7azeconf&quot;&gt;devcal&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; remember to &lt;code&gt;sudo killall svxlink&lt;/code&gt; to ensure no daemon svxlink processes are running in the background&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; remember to adjust path to valid &lt;em&gt;svxlink.conf&lt;/em&gt; file which will be different to this old example&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Set for 3kHz deviation&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; remember to edit the config file(s) to change the RX Pre-amp and TX Master Gain settings to match those find using Deval&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; devcal &lt;span class=&quot;re5&quot;&gt;-r&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-m&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3000&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-d&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3000&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink_noel.conf Rx1&lt;/pre&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; devcal &lt;span class=&quot;re5&quot;&gt;-t&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-m&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3000&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-d&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3000&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink_noel.conf Tx1&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; add the PRE_AMP and MASTER_GAIN settings to &lt;strong&gt;both&lt;/strong&gt; &lt;code&gt;svxlink_el.conf&lt;/code&gt; and &lt;code&gt;svxlink_noel.conf&lt;/code&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Devcal&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;devcal&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1035-1723&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;config_files&quot;&gt;Config Files&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; One for &lt;strong&gt;Echolink Enabled&lt;/strong&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; One for &lt;strong&gt;Echolink Disabled&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Switch Echolink on/off via DTMF commands&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Edit &lt;strong&gt;Logic.tcl&lt;/strong&gt; to give this functionality&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_302d5d994f7483861908ee9f146164df_1&quot;&gt;/etc/svxlink/svxlink_el.conf &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_302d5d994f7483861908ee9f146164df_1&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;###############################################################################&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#                                                                             #&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#                Configuration file for the SvxLink server                    #&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#                                                                             #&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;###############################################################################&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;GLOBAL&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#MODULE_PATH=/usr/lib/arm-linux-gnueabihf/svxlink&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LOGICS&lt;/span&gt;=SimplexLogic
&lt;span class=&quot;re2&quot;&gt;CFG_DIR&lt;/span&gt;=svxlink.d
&lt;span class=&quot;re2&quot;&gt;TIMESTAMP_FORMAT&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;%c&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CARD_SAMPLE_RATE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;48000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CARD_CHANNELS=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#LOCATION_INFO=LocationInfo&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#LINKS=LinkToR4&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;SimplexLogic&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Simplex
&lt;span class=&quot;re2&quot;&gt;RX&lt;/span&gt;=Rx1
&lt;span class=&quot;re2&quot;&gt;TX&lt;/span&gt;=Tx1
&lt;span class=&quot;re2&quot;&gt;MODULES&lt;/span&gt;=ModuleHelp,ModuleEchoLink,ModuleParrot
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=GM4SLV
&lt;span class=&quot;re2&quot;&gt;SHORT_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SHORT_CW_ID_ENABLE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SHORT_VOICE_ID_ENABLE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CW_AMP&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CW_PITCH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;800&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CW_WPM&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LONG_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#IDENT_ONLY_AFTER_TX=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EXEC_CMD_ON_SQL_CLOSE=500&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;EVENT_HANDLER&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;share&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;events.tcl
&lt;span class=&quot;re2&quot;&gt;DEFAULT_LANG&lt;/span&gt;=en_US
&lt;span class=&quot;re2&quot;&gt;RGR_SOUND_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#REPORT_CTCSS=77.0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TX_CTCSS=ALWAYS&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MACROS&lt;/span&gt;=Macros
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_NORMAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_LOW&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ACTIVATE_MODULE_ON_LONG_CMD=4:EchoLink&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#QSO_RECORDER=8:QsoRecorder&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ONLINE_CMD&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;998877&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#MUTE_RX_ON_TX=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#MUTE_TX_ON_RX=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#STATE_PTY=/var/run/svxlink/state&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DTMF_CTRL_PTY=/dev/shm/simplex_dtmf_ctrl&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TIME_FORMAT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;RGR_SOUND_ALWAYS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;RepeaterLogic&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Repeater
&lt;span class=&quot;re2&quot;&gt;RX&lt;/span&gt;=Rx1
&lt;span class=&quot;re2&quot;&gt;TX&lt;/span&gt;=Tx1
&lt;span class=&quot;re2&quot;&gt;MODULES&lt;/span&gt;=ModuleHelp,ModuleParrot,ModuleEchoLink,ModuleTclVoiceMail
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=MYCALL
&lt;span class=&quot;re2&quot;&gt;SHORT_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LONG_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#IDENT_ONLY_AFTER_TX=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EXEC_CMD_ON_SQL_CLOSE=500&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;EVENT_HANDLER&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;share&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;events.tcl
&lt;span class=&quot;re2&quot;&gt;DEFAULT_LANG&lt;/span&gt;=en_US
&lt;span class=&quot;re2&quot;&gt;RGR_SOUND_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;REPORT_CTCSS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;136.5&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TX_CTCSS=SQL_OPEN&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MACROS&lt;/span&gt;=Macros
&lt;span class=&quot;co0&quot;&gt;#SEL5_MACRO_RANGE=03400,03499&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_NORMAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_LOW&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#QSO_RECORDER=8:QsoRecorder&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#NO_REPEAT=1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;IDLE_TIMEOUT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;OPEN_ON_1750&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_CTCSS=136:2000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_DTMF=*&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_SQL=5000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_SEL5=01234&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_SQL_FLANK=OPEN&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_SQL_AFTER_RPT_CLOSE=10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;IDLE_SOUND_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_FLAP_SUP_MIN_TIME=1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_FLAP_SUP_MAX_COUNT=10&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ACTIVATE_MODULE_ON_LONG_CMD=4:EchoLink&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#IDENT_NAG_TIMEOUT=15&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#IDENT_NAG_MIN_TIME=2000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ONLINE_CMD=998877&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#STATE_PTY=/var/run/svxlink/state&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DTMF_CTRL_PTY=/dev/shm/repeater_dtmf_ctrl&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ReflectorLogic&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Reflector
&lt;span class=&quot;re2&quot;&gt;HOST&lt;/span&gt;=reflector.example.com
&lt;span class=&quot;co0&quot;&gt;#PORT=5300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;MYCALL&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUTH_KEY&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Change this key now!&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#JITTER_BUFFER_DELAY=0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;LinkToR4&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CONNECT_LOGICS&lt;/span&gt;=RepeaterLogic:&lt;span class=&quot;nu0&quot;&gt;94&lt;/span&gt;:SK3AB,SimplexLogic:&lt;span class=&quot;nu0&quot;&gt;92&lt;/span&gt;:SK3CD
&lt;span class=&quot;co0&quot;&gt;#DEFAULT_ACTIVE=1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TIMEOUT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#AUTOACTIVATE_ON_SQL=RepeaterLogic&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QsoRecorder&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;REC_DIR&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;spool&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;qso_recorder
&lt;span class=&quot;co0&quot;&gt;#MIN_TIME=1000&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MAX_TIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3600&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SOFT_TIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MAX_DIRSIZE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DEFAULT_ACTIVE=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TIMEOUT=300&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#QSO_TIMEOUT=300&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ENCODER_CMD=/usr/bin/oggenc -Q \&amp;quot;%f\&amp;quot; &amp;amp;&amp;amp; rm \&amp;quot;%f\&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Voter&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Voter
&lt;span class=&quot;re2&quot;&gt;RECEIVERS&lt;/span&gt;=Rx1,Rx2,Rx3
&lt;span class=&quot;re2&quot;&gt;VOTING_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;BUFFER_LENGTH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#REVOTE_INTERVAL=1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#HYSTERESIS=50&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_CLOSE_REVOTE_DELAY=500&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#RX_SWITCH_DELAY=500&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#COMMAND_PTY=/dev/shm/voter_ctrl&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;MultiTx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Multi
&lt;span class=&quot;re2&quot;&gt;TRANSMITTERS&lt;/span&gt;=Tx1,Tx2,Tx3
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NetRx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Net
&lt;span class=&quot;re2&quot;&gt;HOST&lt;/span&gt;=remote.rx.host
&lt;span class=&quot;re2&quot;&gt;TCP_PORT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;5210&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#LOG_DISCONNECTS_ONCE=0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUTH_KEY&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Change this key now!&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CODEC&lt;/span&gt;=S16
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_FRAMES_PER_PACKET=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_QUALITY=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_BITRATE=15000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_COMPLEXITY=2&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_VBR=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_VBR_QUALITY=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_ABR=15000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_DEC_ENHANCER=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_FRAME_SIZE=20&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_COMPLEXITY=10&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_BITRATE=20000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_VBR=1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NetTx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Net
&lt;span class=&quot;re2&quot;&gt;HOST&lt;/span&gt;=remote.tx.host
&lt;span class=&quot;re2&quot;&gt;TCP_PORT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;5210&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#LOG_DISCONNECTS_ONCE=0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUTH_KEY&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Change this key now!&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CODEC&lt;/span&gt;=S16
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_FRAMES_PER_PACKET=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_QUALITY=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_BITRATE=15000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_COMPLEXITY=2&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_VBR=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_VBR_QUALITY=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_ABR=15000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_DEC_ENHANCER=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_FRAME_SIZE=20&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_COMPLEXITY=10&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_BITRATE=20000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_VBR=1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Rx1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Local
&lt;span class=&quot;re2&quot;&gt;AUDIO_DEV&lt;/span&gt;=alsa:plughw:&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUDIO_CHANNEL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SQL_DET&lt;/span&gt;=HIDRAW
&lt;span class=&quot;re2&quot;&gt;SQL_START_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SQL_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SQL_HANGTIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_EXTENDED_HANGTIME=1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_EXTENDED_HANGTIME_THRESH=15&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_TIMEOUT=600&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;VOX_FILTER_DEPTH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;VOX_THRESH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_MODE=2&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CTCSS_FQ&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;77.0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_SNR_OFFSET=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_OPEN_THRESH=15&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_CLOSE_THRESH=9&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_BPF_LOW=60&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_BPF_HIGH=270&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SERIAL_PORT=/dev/ttyUSB0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SERIAL_PIN=CTS&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SERIAL_SET_PINS=&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EVDEV_DEVNAME=/dev/input/by-id/usb-SYNIC_SYNIC_Wireless_Audio-event-if03&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EVDEV_OPEN=1,163,1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EVDEV_CLOSE=1,163,0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#GPIO_PATH=/sys/class/gpio&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#GPIO_SQL_PIN=gpio25&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PTY_PATH=/tmp/rx1_sql&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;HID_DEVICE&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;hidraw0
&lt;span class=&quot;re2&quot;&gt;HID_SQL_PIN&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;VOL_DN
&lt;span class=&quot;co0&quot;&gt;#SIGLEV_DET=TONE&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_SLOPE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_OFFSET&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SIGLEV_BOGUS_THRESH=120&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TONE_SIGLEV_MAP=100,84,60,50,37,32,28,23,19,8&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_OPEN_THRESH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_CLOSE_THRESH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DEEMPHASIS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_TAIL_ELIM=300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;PREAMP&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;1.5&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PEAK_METER=1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_DEC_TYPE&lt;/span&gt;=INTERNAL
&lt;span class=&quot;re2&quot;&gt;DTMF_MUTING&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_HANGTIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_SERIAL&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ttyS0
&lt;span class=&quot;co0&quot;&gt;#DTMF_PTY=/tmp/rx1_dtmf&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DTMF_MAX_FWD_TWIST=8&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DTMF_MAX_REV_TWIST=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#1750_MUTING=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SEL5_DEC_TYPE=INTERNAL&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SEL5_TYPE=ZVEI1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#FQ=433475000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#MODULATION=FM&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#WBRX=WbRx1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WbRx1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TYPE=RtlUsb&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DEV_MATCH=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#HOST=localhost&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PORT=1234&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CENTER_FQ=435075000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#FQ_CORR=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#GAIN=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PEAK_METER=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SAMPLE_RATE=960000&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Tx1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Local
&lt;span class=&quot;re2&quot;&gt;AUDIO_DEV&lt;/span&gt;=alsa:plughw:&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUDIO_CHANNEL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;PTT_TYPE&lt;/span&gt;=Hidraw
&lt;span class=&quot;co0&quot;&gt;#PTT_PORT=/dev/ttyS0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PTT_PIN=HIDRAW&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;HID_DEVICE&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;hidraw0
&lt;span class=&quot;re2&quot;&gt;HID_PTT_PIN&lt;/span&gt;=GPIO3
&lt;span class=&quot;co0&quot;&gt;#SERIAL_SET_PINS=DTR!RTS&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#GPIO_PATH=/sys/class/gpio&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PTT_HANGTIME=1000&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TIMEOUT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TX_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_FQ=136.5&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_LEVEL=9&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;PREEMPHASIS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_TONE_LENGTH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_TONE_SPACING&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_DIGIT_PWR&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MASTER_GAIN&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;1.25&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;LocationInfo&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#APRS_SERVER_LIST=euro.aprs2.net:14580&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;STATUS_SERVER_LIST&lt;/span&gt;=aprs.echolink.org:&lt;span class=&quot;nu0&quot;&gt;5199&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LON_POSITION&lt;/span&gt;=1.25.30W
&lt;span class=&quot;re2&quot;&gt;LAT_POSITION&lt;/span&gt;=60.17.18N
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=EL-GM4SLV
&lt;span class=&quot;re2&quot;&gt;FREQUENCY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;144.912&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TX_POWER&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ANTENNA_GAIN&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ANTENNA_HEIGHT&lt;/span&gt;=2m
&lt;span class=&quot;re2&quot;&gt;ANTENNA_DIR&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PATH=WIDE1-1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;BEACON_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;STATISTICS_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TONE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;COMMENT&lt;/span&gt;=SvxLink
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Macros&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;=EchoLink:&lt;span class=&quot;nu0&quot;&gt;9999&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;=EchoLink:&lt;span class=&quot;nu0&quot;&gt;973498&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;=EchoLink:&lt;span class=&quot;nu0&quot;&gt;662666&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_302d5d994f7483861908ee9f146164df_2&quot;&gt;/etc/svxlink/svxlink_noel.conf &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_302d5d994f7483861908ee9f146164df_2&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;###############################################################################&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#                                                                             #&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#                Configuration file for the SvxLink server                    #&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#                                                                             #&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;###############################################################################&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;GLOBAL&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#MODULE_PATH=/usr/lib/arm-linux-gnueabihf/svxlink&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LOGICS&lt;/span&gt;=SimplexLogic
&lt;span class=&quot;re2&quot;&gt;CFG_DIR&lt;/span&gt;=svxlink.d
&lt;span class=&quot;re2&quot;&gt;TIMESTAMP_FORMAT&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;%c&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CARD_SAMPLE_RATE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;48000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CARD_CHANNELS=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#LOCATION_INFO=LocationInfo&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#LINKS=LinkToR4&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;SimplexLogic&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Simplex
&lt;span class=&quot;re2&quot;&gt;RX&lt;/span&gt;=Rx1
&lt;span class=&quot;re2&quot;&gt;TX&lt;/span&gt;=Tx1
&lt;span class=&quot;re2&quot;&gt;MODULES&lt;/span&gt;=ModuleHelp,ModuleParrot
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=GM4SLV
&lt;span class=&quot;re2&quot;&gt;SHORT_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SHORT_CW_ID_ENABLE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SHORT_VOICE_ID_ENABLE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CW_AMP&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CW_PITCH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;800&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CW_WPM&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LONG_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#IDENT_ONLY_AFTER_TX=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EXEC_CMD_ON_SQL_CLOSE=500&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;EVENT_HANDLER&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;local&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;share&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;events.tcl
&lt;span class=&quot;re2&quot;&gt;DEFAULT_LANG&lt;/span&gt;=en_GB
&lt;span class=&quot;re2&quot;&gt;RGR_SOUND_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#REPORT_CTCSS=77.0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TX_CTCSS=ALWAYS&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MACROS&lt;/span&gt;=Macros
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_NORMAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_LOW&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ACTIVATE_MODULE_ON_LONG_CMD=4:EchoLink&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#QSO_RECORDER=8:QsoRecorder&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ONLINE_CMD&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;998877&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#MUTE_RX_ON_TX=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#MUTE_TX_ON_RX=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#STATE_PTY=/var/run/svxlink/state&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DTMF_CTRL_PTY=/dev/shm/simplex_dtmf_ctrl&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TIME_FORMAT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;RGR_SOUND_ALWAYS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;RepeaterLogic&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Repeater
&lt;span class=&quot;re2&quot;&gt;RX&lt;/span&gt;=Rx1
&lt;span class=&quot;re2&quot;&gt;TX&lt;/span&gt;=Tx1
&lt;span class=&quot;re2&quot;&gt;MODULES&lt;/span&gt;=ModuleHelp,ModuleParrot,ModuleEchoLink,ModuleTclVoiceMail
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=MYCALL
&lt;span class=&quot;re2&quot;&gt;SHORT_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LONG_IDENT_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;60&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#IDENT_ONLY_AFTER_TX=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EXEC_CMD_ON_SQL_CLOSE=500&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;EVENT_HANDLER&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;usr&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;share&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;events.tcl
&lt;span class=&quot;re2&quot;&gt;DEFAULT_LANG&lt;/span&gt;=en_US
&lt;span class=&quot;re2&quot;&gt;RGR_SOUND_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;REPORT_CTCSS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;136.5&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TX_CTCSS=SQL_OPEN&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MACROS&lt;/span&gt;=Macros
&lt;span class=&quot;co0&quot;&gt;#SEL5_MACRO_RANGE=03400,03499&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_NORMAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;FX_GAIN_LOW&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#QSO_RECORDER=8:QsoRecorder&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#NO_REPEAT=1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;IDLE_TIMEOUT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;OPEN_ON_1750&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_CTCSS=136:2000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_DTMF=*&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_SQL=5000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_SEL5=01234&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_SQL_FLANK=OPEN&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPEN_ON_SQL_AFTER_RPT_CLOSE=10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;IDLE_SOUND_INTERVAL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_FLAP_SUP_MIN_TIME=1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_FLAP_SUP_MAX_COUNT=10&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ACTIVATE_MODULE_ON_LONG_CMD=4:EchoLink&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#IDENT_NAG_TIMEOUT=15&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#IDENT_NAG_MIN_TIME=2000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ONLINE_CMD=998877&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#STATE_PTY=/var/run/svxlink/state&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DTMF_CTRL_PTY=/dev/shm/repeater_dtmf_ctrl&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;ReflectorLogic&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Reflector
&lt;span class=&quot;re2&quot;&gt;HOST&lt;/span&gt;=reflector.example.com
&lt;span class=&quot;co0&quot;&gt;#PORT=5300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;MYCALL&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUTH_KEY&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Change this key now!&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#JITTER_BUFFER_DELAY=0&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;LinkToR4&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CONNECT_LOGICS&lt;/span&gt;=RepeaterLogic:&lt;span class=&quot;nu0&quot;&gt;94&lt;/span&gt;:SK3AB,SimplexLogic:&lt;span class=&quot;nu0&quot;&gt;92&lt;/span&gt;:SK3CD
&lt;span class=&quot;co0&quot;&gt;#DEFAULT_ACTIVE=1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TIMEOUT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#AUTOACTIVATE_ON_SQL=RepeaterLogic&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;QsoRecorder&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;REC_DIR&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;spool&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;qso_recorder
&lt;span class=&quot;co0&quot;&gt;#MIN_TIME=1000&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MAX_TIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;3600&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SOFT_TIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MAX_DIRSIZE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1024&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DEFAULT_ACTIVE=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TIMEOUT=300&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#QSO_TIMEOUT=300&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#ENCODER_CMD=/usr/bin/oggenc -Q \&amp;quot;%f\&amp;quot; &amp;amp;&amp;amp; rm \&amp;quot;%f\&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Voter&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Voter
&lt;span class=&quot;re2&quot;&gt;RECEIVERS&lt;/span&gt;=Rx1,Rx2,Rx3
&lt;span class=&quot;re2&quot;&gt;VOTING_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;BUFFER_LENGTH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#REVOTE_INTERVAL=1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#HYSTERESIS=50&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_CLOSE_REVOTE_DELAY=500&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#RX_SWITCH_DELAY=500&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#COMMAND_PTY=/dev/shm/voter_ctrl&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;MultiTx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Multi
&lt;span class=&quot;re2&quot;&gt;TRANSMITTERS&lt;/span&gt;=Tx1,Tx2,Tx3
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NetRx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Net
&lt;span class=&quot;re2&quot;&gt;HOST&lt;/span&gt;=remote.rx.host
&lt;span class=&quot;re2&quot;&gt;TCP_PORT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;5210&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#LOG_DISCONNECTS_ONCE=0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUTH_KEY&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Change this key now!&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CODEC&lt;/span&gt;=S16
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_FRAMES_PER_PACKET=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_QUALITY=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_BITRATE=15000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_COMPLEXITY=2&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_VBR=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_VBR_QUALITY=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_ABR=15000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_DEC_ENHANCER=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_FRAME_SIZE=20&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_COMPLEXITY=10&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_BITRATE=20000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_VBR=1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;NetTx&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Net
&lt;span class=&quot;re2&quot;&gt;HOST&lt;/span&gt;=remote.tx.host
&lt;span class=&quot;re2&quot;&gt;TCP_PORT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;5210&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#LOG_DISCONNECTS_ONCE=0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUTH_KEY&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Change this key now!&amp;quot;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CODEC&lt;/span&gt;=S16
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_FRAMES_PER_PACKET=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_QUALITY=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_BITRATE=15000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_COMPLEXITY=2&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_VBR=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_VBR_QUALITY=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_ENC_ABR=15000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SPEEX_DEC_ENHANCER=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_FRAME_SIZE=20&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_COMPLEXITY=10&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_BITRATE=20000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#OPUS_ENC_VBR=1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Rx1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Local
&lt;span class=&quot;re2&quot;&gt;AUDIO_DEV&lt;/span&gt;=alsa:plughw:&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUDIO_CHANNEL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SQL_DET&lt;/span&gt;=HIDRAW
&lt;span class=&quot;re2&quot;&gt;SQL_START_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SQL_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SQL_HANGTIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;200&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_EXTENDED_HANGTIME=1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_EXTENDED_HANGTIME_THRESH=15&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_TIMEOUT=600&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;VOX_FILTER_DEPTH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;VOX_THRESH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_MODE=2&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;CTCSS_FQ&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;77.0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_SNR_OFFSET=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_OPEN_THRESH=15&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_CLOSE_THRESH=9&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_BPF_LOW=60&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_BPF_HIGH=270&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SERIAL_PORT=/dev/ttyUSB0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SERIAL_PIN=CTS&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SERIAL_SET_PINS=&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EVDEV_DEVNAME=/dev/input/by-id/usb-SYNIC_SYNIC_Wireless_Audio-event-if03&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EVDEV_OPEN=1,163,1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#EVDEV_CLOSE=1,163,0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#GPIO_PATH=/sys/class/gpio&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#GPIO_SQL_PIN=gpio25&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PTY_PATH=/tmp/rx1_sql&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;HID_DEVICE&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;hidraw0
&lt;span class=&quot;re2&quot;&gt;HID_SQL_PIN&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;VOL_DN
&lt;span class=&quot;co0&quot;&gt;#SIGLEV_DET=TONE&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_SLOPE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_OFFSET&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SIGLEV_BOGUS_THRESH=120&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TONE_SIGLEV_MAP=100,84,60,50,37,32,28,23,19,8&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_OPEN_THRESH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;SIGLEV_CLOSE_THRESH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DEEMPHASIS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SQL_TAIL_ELIM=300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;PREAMP&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;1.5&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PEAK_METER=1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_DEC_TYPE&lt;/span&gt;=INTERNAL
&lt;span class=&quot;re2&quot;&gt;DTMF_MUTING&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_HANGTIME&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_SERIAL&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ttyS0
&lt;span class=&quot;co0&quot;&gt;#DTMF_PTY=/tmp/rx1_dtmf&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DTMF_MAX_FWD_TWIST=8&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DTMF_MAX_REV_TWIST=4&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#1750_MUTING=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SEL5_DEC_TYPE=INTERNAL&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SEL5_TYPE=ZVEI1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#FQ=433475000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#MODULATION=FM&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#WBRX=WbRx1&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;WbRx1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#TYPE=RtlUsb&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#DEV_MATCH=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#HOST=localhost&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PORT=1234&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CENTER_FQ=435075000&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#FQ_CORR=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#GAIN=0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PEAK_METER=1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#SAMPLE_RATE=960000&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Tx1&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TYPE&lt;/span&gt;=Local
&lt;span class=&quot;re2&quot;&gt;AUDIO_DEV&lt;/span&gt;=alsa:plughw:&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;AUDIO_CHANNEL&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;PTT_TYPE&lt;/span&gt;=Hidraw
&lt;span class=&quot;co0&quot;&gt;#PTT_PORT=/dev/ttyS0&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PTT_PIN=HIDRAW&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;HID_DEVICE&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;hidraw0
&lt;span class=&quot;re2&quot;&gt;HID_PTT_PIN&lt;/span&gt;=GPIO3
&lt;span class=&quot;co0&quot;&gt;#SERIAL_SET_PINS=DTR!RTS&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#GPIO_PATH=/sys/class/gpio&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PTT_HANGTIME=1000&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TIMEOUT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;300&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TX_DELAY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;500&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_FQ=136.5&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#CTCSS_LEVEL=9&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;PREEMPHASIS&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_TONE_LENGTH&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;100&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_TONE_SPACING&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DTMF_DIGIT_PWR&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;MASTER_GAIN&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;1.25&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;LocationInfo&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;APRS_SERVER_LIST&lt;/span&gt;=euro.aprs2.net:&lt;span class=&quot;nu0&quot;&gt;14580&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;STATUS_SERVER_LIST&lt;/span&gt;=aprs.echolink.org:&lt;span class=&quot;nu0&quot;&gt;5199&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;LON_POSITION&lt;/span&gt;=1.25.30W
&lt;span class=&quot;re2&quot;&gt;LAT_POSITION&lt;/span&gt;=60.17.18N
&lt;span class=&quot;re2&quot;&gt;CALLSIGN&lt;/span&gt;=EL-GM4SLV
&lt;span class=&quot;re2&quot;&gt;FREQUENCY&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;144.9125&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TX_POWER&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ANTENNA_GAIN&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;ANTENNA_HEIGHT&lt;/span&gt;=1m
&lt;span class=&quot;re2&quot;&gt;ANTENNA_DIR&lt;/span&gt;=-&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#PATH=WIDE1-1&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#BEACON_INTERVAL=60&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;TONE&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;77&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;COMMENT&lt;/span&gt;=SvxLink by SM0SVX &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;www.svxlink.org&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;Macros&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;=EchoLink:&lt;span class=&quot;nu0&quot;&gt;9999&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;=EchoLink:&lt;span class=&quot;nu0&quot;&gt;973498&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;=EchoLink:&lt;span class=&quot;nu0&quot;&gt;662666&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_302d5d994f7483861908ee9f146164df_3&quot;&gt;/etc/svxlink/svxlink.d/ModuleEchoLink.conf &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_302d5d994f7483861908ee9f146164df_3&quot;&gt;&lt;pre class=&quot;code&quot;&gt;[ModuleEchoLink]
NAME=EchoLink
ID=2
TIMEOUT=60
#ALLOW_IP=192.168.1.0/24
#DROP_INCOMING=^()$
#REJECT_INCOMING=^()$
#ACCEPT_INCOMING=^(.*)$
#REJECT_OUTGOING=^()$
#ACCEPT_OUTGOING=^(.*)$
#REJECT_CONF=0
#CHECK_NR_CONNECTS=2,300,120
SERVERS=servers.echolink.org
CALLSIGN=GM4SLV-L
PASSWORD=XXXXXXXXX
SYSOPNAME=John
LOCATION=[Svx] Shetland
PROXY_SERVER=my.vps.host.name
PROXY_PORT=8100
PROXY_PASSWORD=my_proxy_password
#BIND_ADDR=10.20.30.40
MAX_QSOS=5
MAX_CONNECTIONS=6
LINK_IDLE_TIMEOUT=900
#AUTOCON_ECHOLINK_ID=9999
#AUTOCON_TIME=1200
#USE_GSM_ONLY=1
#DEFAULT_LANG=en_US
#COMMAND_PTY=/dev/shm/echolink_ctrl
DESCRIPTION=&amp;quot;You have connected to a SvxLink node,\n&amp;quot;
&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_302d5d994f7483861908ee9f146164df_4&quot;&gt;/usr/local/share/svxlink/events.d/local &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_302d5d994f7483861908ee9f146164df_4&quot;&gt;
&lt;p&gt;
Edit the section &lt;code&gt;proc dtmf_cmd_received {cmd}&lt;/code&gt; to add the stanzas that run external bash scripts to stop and restart svxlink with different config files
&lt;/p&gt;
&lt;pre class=&quot;code tcl&quot;&gt;&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Executed when a DTMF command has been received&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#   cmd - The command&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Return 1 to hide the command from further processing is SvxLink or&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# return 0 to make SvxLink continue processing as normal.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# This function can be used to implement your own custom commands or to disable&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# DTMF commands that you do not want users to execute.&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;proc&lt;/span&gt; dtmf_cmd_received &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;cmd&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #global active_module&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
  # Example: Ignore all commands starting with 3 in the EchoLink module.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #          Allow commands that have four or more digits.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #if {$active_module == &amp;quot;EchoLink&amp;quot;} {&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #  if {[string length $cmd] &amp;lt; 4 &amp;amp;&amp;amp; [string index $cmd 0] == &amp;quot;3&amp;quot;} {&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #    puts &amp;quot;Ignoring random connect command for module EchoLink: $cmd&amp;quot;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #    return 1&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #  }&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
  # Handle the &amp;quot;force core command&amp;quot; mode where a command is forced to be&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  # executed by the core command processor instead of by an active module.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  # The &amp;quot;force core command&amp;quot; mode is entered by prefixing a command by a star.&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #if {$active_module != &amp;quot;&amp;quot; &amp;amp;&amp;amp; [string index $cmd 0] != &amp;quot;*&amp;quot;} {&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #  return 0&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #if {[string index $cmd 0] == &amp;quot;*&amp;quot;} {&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;
  #  set cmd [string range $cmd 1 end]&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  #}&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;
  # Example: Custom command executed when DTMF 99 is received&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$cmd&lt;/span&gt; == &lt;span class=&quot;st0&quot;&gt;&amp;quot;99&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Executing external command&amp;quot;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;online&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;exec&lt;/span&gt; /home/gm4slv/svx_noel.sh &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;  # Example: Custom command executed when DTMF 99 is received&lt;/span&gt;
  &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$cmd&lt;/span&gt; == &lt;span class=&quot;st0&quot;&gt;&amp;quot;98&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Executing external command&amp;quot;&lt;/span&gt;
    playMsg &lt;span class=&quot;st0&quot;&gt;&amp;quot;Core&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;online&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;exec&lt;/span&gt; /home/gm4slv/svx_el.sh &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_302d5d994f7483861908ee9f146164df_5&quot;&gt;start with echolink : svx_el.sh &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_302d5d994f7483861908ee9f146164df_5&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;CFG&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink_el.conf
&lt;span class=&quot;re2&quot;&gt;LOG&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink.log
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;killall&lt;/span&gt; svxlink
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;killall&lt;/span&gt; svxlink
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;killall&lt;/span&gt; svxlink
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; svxlink &lt;span class=&quot;re5&quot;&gt;--daemon&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--logfile&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$LOG&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--config&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$CFG&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_302d5d994f7483861908ee9f146164df_6&quot;&gt;start without echolink : svx_noel.sh &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_302d5d994f7483861908ee9f146164df_6&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;CFG&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink_noel.conf
&lt;span class=&quot;re2&quot;&gt;LOG&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svxlink.log
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;killall&lt;/span&gt; svxlink
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;killall&lt;/span&gt; svxlink
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;killall&lt;/span&gt; svxlink
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; svxlink &lt;span class=&quot;re5&quot;&gt;--daemon&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--logfile&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$LOG&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;--config&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$CFG&lt;/span&gt;
&lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_302d5d994f7483861908ee9f146164df_7&quot;&gt;crontab entry to start with echolink enabled at boot time &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_302d5d994f7483861908ee9f146164df_7&quot;&gt;&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;reboot &lt;span class=&quot;kw2&quot;&gt;sleep&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;30&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-u&lt;/span&gt; gm4slv &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;svx_el.sh &lt;span class=&quot;sy0&quot;&gt;&amp;gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;null &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Config Files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;config_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1724-16686&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;catch_up_with_git_version&quot;&gt;Catch up with git version&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; The version of svxlink running on this Pi was self-compiled from the GIT repository&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:svxlink#update_to_latest_version_from_git&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:svxlink&quot; data-wiki-id=&quot;public:radio:topics:svxlink:svxlink&quot;&gt;Update to latest version from GIT&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; I decided to pull &amp;amp; compile the latest version so I simply followed the instructions I&amp;#039;d put on the above wiki page and all went smoothly (if slowly)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Catch up with git version&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;catch_up_with_git_version&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;16687-17020&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;dtmf_commands&quot;&gt;DTMF Commands&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Old info &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:svxlink:svxreflector_commands&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:svxlink:svxreflector_commands&quot; data-wiki-id=&quot;public:radio:topics:svxlink:svxreflector_commands&quot;&gt;SVXLink : DTMF commands&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ignore &lt;strong&gt;Reflector&lt;/strong&gt; commands - I am not (yet) connected to the SVX Reflector &lt;a href=&quot;http://svxportal-uk.ddns.net:81/index.php&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://svxportal-uk.ddns.net:81/index.php&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://svxportal-uk.ddns.net:81/index.php&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;table sectionedit9&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;*#&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;System Status &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;0#&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Help Module &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;1#&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Parrot Module &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;2#&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Echolink Module &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;17218-17318&amp;quot;} --&gt;&lt;div class=&quot;table sectionedit10&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;#&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; De-activate module&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;17320-17347&amp;quot;} --&gt;
&lt;/div&gt;

&lt;h4 id=&quot;echolink_module&quot;&gt;Echolink Module&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;div class=&quot;table sectionedit11&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;&amp;lt;node number&amp;gt;#&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Connect to &lt;code&gt;&amp;lt;node number&amp;gt;&lt;/code&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;0#&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Play the help message&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;1#&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; List all connected stations&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;2#&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Play local EchoLink node id&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;31#&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Connect to a random link or repeater&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;32#&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Connect to a random conference&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;4#&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Reconnect to the last disconnected station&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;50#&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Deactivate listen only mode&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;51#&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Activate listen only mode&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;6*#&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Use the connect by callsign feature&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;#&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;If connected = Disconnect, otherwise = Deactivate Echolink module &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;17375-17876&amp;quot;} --&gt;
&lt;p&gt;
&lt;a href=&quot;https://github.com/sm0svx/svxlink/wiki/ModuleEchoLink&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://github.com/sm0svx/svxlink/wiki/ModuleEchoLink&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://github.com/sm0svx/svxlink/wiki/ModuleEchoLink&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;macros&quot;&gt;Macros&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;div class=&quot;table sectionedit12&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;D1#&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Echolink &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;9999 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; Echotest &lt;/td&gt;&lt;td class=&quot;col4 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;D2#&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Echolink &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;973498 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; M0HOY-L &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; Hubnet &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;code&gt;D3#&lt;/code&gt;&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;Echolink &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;662666 &lt;/td&gt;&lt;td class=&quot;col3&quot;&gt;M0JKT-L &lt;/td&gt;&lt;td class=&quot;col4&quot;&gt; FreeStar &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;17955-18089&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DTMF Commands&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dtmf_commands&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;17021-18091&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;sound_files&quot;&gt;Sound files&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; use &lt;code&gt;en_US&lt;/code&gt; when &lt;strong&gt;echolink is enabled&lt;/strong&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; this is also needed for &lt;strong&gt;reflector&lt;/strong&gt; when it&amp;#039;s re-enabled, as the &lt;code&gt;US&lt;/code&gt; files also have the additional reflector sound samples&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; use &lt;code&gt;en_GB&lt;/code&gt; when &lt;strong&gt;echolink is disable&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; easy to tell from status &lt;code&gt;*#&lt;/code&gt; which is active!&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sound files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sound_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;18092-18399&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;proxy&quot;&gt;Proxy&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; after consideration….&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; I decided to use my VPS-hosted echolink proxy&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; remove port forwards on home router for UDP/5198 &amp;amp; UDP/5199&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; open port TPC/8100 for &lt;strong&gt;only my home IP address&lt;/strong&gt; on VPS&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; this means only one IP address can reach the Proxy on port TCP/8100&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; open ports UDP/5198 &amp;amp; UDP/5199 for anywhere on VPS&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; edit echolink proxy config on VPS to allow only GM4SLV-L to connect&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; this means only one callsign can connect to the proxy&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; start proxy in a tmux session, using bash script on VPS&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; edit ModuleEchoLink.conf on svxlink pi to use the proxy&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; restart &lt;code&gt;svx_el.sh&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;re2&quot;&gt;PROXY_SERVER&lt;/span&gt;=my.vps.host.name
&lt;span class=&quot;re2&quot;&gt;PROXY_PORT&lt;/span&gt;=&lt;span class=&quot;nu0&quot;&gt;8100&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;PROXY_PASSWORD&lt;/span&gt;=xxxxxxxxx&lt;/pre&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 06/04/24 07:09&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
LAST MODIFIED : 01/01/70 01:00 BST
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Proxy&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;proxy&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;18400-19212&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:svxlink&amp;amp;do=showtag&amp;amp;tag=svxlink&quot; class=&quot;wikilink1&quot; title=&quot;tag:svxlink&quot; rel=&quot;tag&quot;&gt;svxlink&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;19213-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 21:01:52 +0000</pubDate>
        </item>
        <item>
            <title>VHF / HF Xgate 2024</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:xgate:hf-vhf_xgate</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:xgate:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:xgate:start&quot; data-wiki-id=&quot;public:radio:topics:xgate:start&quot;&gt;HF / VHF Xgate&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;vhf_hf_xgate_2024&quot;&gt;VHF / HF Xgate 2024&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Revisiting an old project &lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;VHF \/ HF Xgate 2024&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;vhf_hf_xgate_2024&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-84&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;previously&quot;&gt;Previously...&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:xgate:xgate&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:xgate:xgate&quot; data-wiki-id=&quot;public:radio:topics:xgate:xgate&quot;&gt;VHF / HF X-Gate Project&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_3c3b87632146fc79efd59c4fb0fb959f_7&quot;&gt;DTMF Commands on VHF Port &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_3c3b87632146fc79efd59c4fb0fb959f_7&quot;&gt;
&lt;h2&gt;DTMF Commands&lt;/h2&gt;
&lt;div class=&quot;table sectionedit3&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;Function&lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;Command&lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;Comment&lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Log on &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; 0# &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Log off &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *99*# &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Set Frequency &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *1fffff# &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; ffff.f kHz &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Set Channel &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *1xxxx# &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; mem chan xxxx &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Set Mode USB &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *21# &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Set Mode LSB &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *22# &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;Set Mode AM  &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *23# &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Set TX Power Low &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *41# &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 15W &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Set TX Power Medium &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *42# &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 50W &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Set TX Power High &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *43# &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 100W &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;QSY Down 0.5kHz &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *5# &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row12&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;QSY Up 0.5kHz &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *6# &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row13&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Monitor HF &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *7# &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; 5 seconds &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row14&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Monitor HF &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *7xx# &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; xx seconds &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row15&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Monitor HF &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *7*1# &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;(Duplex Mode) Continuous Monitor ON &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row16&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Monitor HF &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *7*0# &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;(Duplex Mode) Continuous Monitor OFF &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row17&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;ATU Tune &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *8# &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row18&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Status &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *9# &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row19&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;S-Meter &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *91# &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row20&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Full Status &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *93# &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row21&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Talkthrough ON &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *01# &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row22&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;Talkthrough OFF &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; *00# &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;  &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;189-904&amp;quot;} --&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Previously...&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;previously&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;85-911&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;plans_for_2024&quot;&gt;Plans for 2024&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Re-install all the hardware:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; IC-M710&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Raspberry Pi X-Gate controller&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; X-Gate Interface with syllabic squelch and DTMF decoder&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Test in full-duplex VHF/UHF mode to identify any issues that need addressing to bring back to normal function&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Suspend or stop completely VHF APRS to free up V/UHF for X-Gate&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Test remote operation from Vehicle - V/UHF coverage is unlikely to be very good…&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Revisit Python code if necessary to add/remove features.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Actually &lt;em&gt;have&lt;/em&gt; real QSOs on HF using the X-Gate!&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Plans for 2024&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;plans_for_2024&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;912-1472&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;progress&quot;&gt;2024 Progress&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2024 Progress&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;progress&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;1473-1500&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;section23324&quot;&gt;23/3/24&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Connected X-Gate Interface, R.Pi controller, IC-M710 and FT8900&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Initial problem with crashing due to USB problems on R.Pi causing USB/Serial adaptor (for control of IC-M710) to fail - this was cured by using different 5V USB power supply.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Speech clipper removed from HF TX audio path due to distortion and poor audio quality.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; HF Audio drive level set to give correct HF SSB Power out&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Web server status page available by port forwarding at &lt;a href=&quot;http://gm4slv.plus.com:42109/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://gm4slv.plus.com:42109/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://gm4slv.plus.com:42109/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; VHF uplink changed to split-band&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Input : 144.650MHz&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Output: 435.400MHz&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; This allows control even when in permanent “Monitor” or “Talkthrough”&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Enabled a 15-minute CW ident on the UHF port which identifies with my callsign and the current HF frequency/mode. &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Axgate%3Ahf-vhf_xgate&amp;amp;media=public:radio:2024:screenshot_2024-03-23_233517.png&quot; class=&quot;media&quot; title=&quot;public:radio:2024:screenshot_2024-03-23_233517.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=f07b5a&amp;amp;media=public:radio:2024:screenshot_2024-03-23_233517.png&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;23\/3\/24&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;section23324&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;1501-2362&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;tmux_session&quot;&gt;TMUX Session&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Xgate software runs in a Tmux session with 3 panes&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Xgate software - printing commands etc. from the running controller code&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Relay control - independantly control various Xgate relays (PTT, Monitor, Mute, CW tone) directly, while main xgate is running.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; a shell for editing code etc.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Axgate%3Ahf-vhf_xgate&amp;amp;media=public:radio:2024:screenshot_2024-03-23_232709.png&quot; class=&quot;media&quot; title=&quot;public:radio:2024:screenshot_2024-03-23_232709.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=600&amp;amp;tok=41d39f&amp;amp;media=public:radio:2024:screenshot_2024-03-23_232709.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;TMUX Session&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tmux_session&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;2363-2754&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;thoughts&quot;&gt;24/3/24 : Thoughts....&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Is the “HF Channel” 4-digit input selection really of any value?&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; It requires memorizing channel numbers and saves entering only one or two digits.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Will probably drop this function unless I find a use for it soon.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Perhaps change to 2-digit channels and limit to a few frequently used frequency/mode combinations?&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class=&quot;folder&quot; href=&quot;#folded_3c3b87632146fc79efd59c4fb0fb959f_8&quot;&gt;The current channels are: Memory Dictionary (4 digits) &lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;folded hidden&quot; id=&quot;folded_3c3b87632146fc79efd59c4fb0fb959f_8&quot;&gt;&lt;pre class=&quot;code python&quot;&gt;mem_dict &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0101&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;1942.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;LSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0102&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;1933.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;LSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0103&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;1957.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;LSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0104&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;1985.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;LSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0105&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;1966.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;LSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0301&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;3773.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;LSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0302&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;3760.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;LSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0303&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;3615.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;AM&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0501&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5276.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0502&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5279.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0503&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5298.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0504&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5301.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0505&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5304.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0506&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5317.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;AM&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0507&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5320.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0508&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5333.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0509&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5354.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0510&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5363.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0511&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5366.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0512&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5371.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0513&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5378.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0514&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5395.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0515&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5398.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0516&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5403.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0521&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5258.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0522&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5278.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0523&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5288.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0524&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5366.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0525&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5371.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0526&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5398.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0527&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5403.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0531&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5330.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0532&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5346.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0533&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5357.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0534&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5371.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0535&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5403.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0591&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5450.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0592&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5505.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;0701&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;7160.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;LSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;1091&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;10051.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;24\/3\/24 : Thoughts....&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;thoughts&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2755-4687&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;initial_try_at_2-digit_memory_channels&quot;&gt;Initial try at 2-digit memory channels&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code python&quot;&gt;mem_dict &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;01&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5279.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;02&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5320.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;03&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5366.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;04&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5371.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;05&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5378.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;06&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5395.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;07&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5398.5&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;08&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5450.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;09&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;5505.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;USB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st0&quot;&gt;&amp;quot;10&amp;quot;&lt;/span&gt; : &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;7160.0&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;LSB&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; One change in main xgate code:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt; if len(command_two[2:]) == 4:
 &lt;/pre&gt;

&lt;p&gt;
becomes
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; if len(command_two[2:]) == 2:
 
 &lt;/pre&gt;
&lt;pre class=&quot;code python&quot;&gt;                &lt;span class=&quot;kw1&quot;&gt;elif&lt;/span&gt; command_two&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;:&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;*1&amp;quot;&lt;/span&gt;:
                    write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Frequency / Memory&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    &lt;span class=&quot;co1&quot;&gt;#if len(command_two[2:]) == 4:&lt;/span&gt;
                    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command_two&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;:&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;:
                        new_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;mem_dict&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;command_two&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;:&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                        new_mode &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; mem_dict&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;command_two&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;:&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
                        write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Memory Channel selected %s&amp;quot;&lt;/span&gt; % mem_dict&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;command_two&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;:&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                        set_frequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;new_freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                        set_mode&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;new_mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                        write_status&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;freq&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;new_freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                        write_status&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;mode&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;new_mode&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                    &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;:
                        new_freq &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;float&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;command_two&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;:&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;/&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;
                        set_frequency&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;new_freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                        write_status&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;freq&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;new_freq&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; modified main xgate code to be able to start in &lt;em&gt;simplex&lt;/em&gt; or &lt;em&gt;duplex&lt;/em&gt; mode by the choice of commandline argument:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; for simplex (single frequency/band uplink/downlink) which will disable the continuous monitor function to avoid getting locked out →&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;./xgate_current.py s&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; for duplex (separate uplink and downlink bands) which will enable the continuous monitor function, as it is always possible to send a command on the uplink band while the downlink is transmitting →&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;./xgate_current.py d&lt;/pre&gt;

&lt;p&gt;
I&amp;#039;ve updated the &lt;code&gt;mercurial repository&lt;/code&gt; - added new files, committed recent changes and made a clone of it on the shack laptop - in Dropbox (which might be a bad idea?)
&lt;/p&gt;

&lt;p&gt;
There&amp;#039;s another page about &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:computers:archive:mercurial&quot; class=&quot;wikilink1&quot; title=&quot;public:computers:archive:mercurial&quot; data-wiki-id=&quot;public:computers:archive:mercurial&quot;&gt; simple Mercurial&lt;/a&gt; , as an aid to remembering how to do it each time.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit10&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;24/3/24 &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?media=public:radio:2024:xgate_m710.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;public:radio:2024:xgate_m710.zip (92 KB)&quot;&gt;xgate_m710.zip&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Xgate scripts &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;6932-6999&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Initial try at 2-digit memory channels&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;initial_try_at_2-digit_memory_channels&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;4688-7002&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;mobile_cross-band_repeat_access&quot;&gt;Mobile Cross-band repeat access&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;section29324&quot;&gt;29/3/24&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
If the X-gate is set to &lt;code&gt;simplex&lt;/code&gt; mode (single band control) on &lt;code&gt;VHF&lt;/code&gt; it should be possible to access the system via a mobile cross-band repeater from a low power UHF handheld. 
&lt;/p&gt;

&lt;p&gt;
This extends the range of the &lt;code&gt;local VHF network&lt;/code&gt;. 
&lt;/p&gt;

&lt;p&gt;
If you are within UHF simplex range of the V/UHF cross-band repeater (usually vehicle mounted) and the vehicle is located within VHF range of the X-Gate (e.g. on a suitable distant hill-top) it &lt;em&gt;should&lt;/em&gt; be possible to access the X-Gate and log in/change frequency  etc. and to operate through it on HF, from the UHF side of the vehicle&amp;#039;s Cross-Band repeater.
&lt;/p&gt;

&lt;p&gt;
I am beginning tests on this using a &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:tm-d710&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:tm-d710&quot; data-wiki-id=&quot;public:radio:radio_database:tm-d710&quot;&gt; TM-D710 mobile&lt;/a&gt; and &lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:radio_database:th-d72&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:radio_database:th-d72&quot; data-wiki-id=&quot;public:radio:radio_database:th-d72&quot;&gt;TH-D72 handheld&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
From the RSGB Band Plan
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 144.500 MHz   Image Modes (SSTV, Fax etc)	&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 144.600 MHz   Data Centre of Activity (MGM, RTTY etc)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 433.8000-434.2500 MHz   Digital communications &amp;amp; Experiments&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
On 2m an appropriate place seems to be between 144.500 and 144.600, where there don&amp;#039;t seem to be any prior &lt;code&gt;centre-of-activity&lt;/code&gt; channels carved out.
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ll use 144.575MHz.
&lt;/p&gt;

&lt;p&gt;
On 70cm an appropriate place seems to be between 433.800 and 434.250 - &lt;em&gt;experiments&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
I&amp;#039;ll use 433.825MHz
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; X-Gate uplink changed to &lt;code&gt;Simplex&lt;/code&gt; : 144.575MHz&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Mobile Cross-band repeat access&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mobile_cross-band_repeat_access&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;7003-8357&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;talkthrough_watchdog_timer&quot;&gt;Talkthrough Watchdog Timer&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
I found an old piece of the python code I&amp;#039;d written that adds a &lt;strong&gt;Talkthrough Timeout&lt;/strong&gt; to the X-Gate. It detects the commencement of a &lt;em&gt;Talkthrough&lt;/em&gt; period and starts a timer. The timeout of this watchdog is set in the code, as is a &lt;em&gt;pre-timeout&lt;/em&gt; warning time. 
&lt;/p&gt;

&lt;p&gt;
At the end of the &lt;em&gt;warning&lt;/em&gt; time the VHF port sends “di-dit” every 20 seconds superimposed over the talkthrough (HF Receive) audio, to warn the VHF user(s) that the talkthrough will terminate soon. 
&lt;/p&gt;

&lt;p&gt;
At the end of the &lt;em&gt;timeout&lt;/em&gt; period the &lt;em&gt;Talkthrough&lt;/em&gt; is turned off and the system returns to it&amp;#039;s quiescent state.
&lt;/p&gt;

&lt;p&gt;
The Barrett 2062 Crossgate has a 10 minute inactivity timeout, which closes the cross-connection (talkthrough) after 10 minutes with no user activity. 
&lt;/p&gt;

&lt;p&gt;
My X-Gate doesn&amp;#039;t take into consideration user activity, as the VHF→HF PTT does not get monitored by the X-Gate, so it is not currently possible to quantify “user inactivity”, by observing if there&amp;#039;s any traffic on the VHF port. The Watchdog as it stands is a safety precaution against talkthrough getting locked up in transmit (in either direction).
&lt;/p&gt;

&lt;p&gt;
After a timeout it&amp;#039;s a simple matter of logging in again via VHF DTMF and re-starting talkthrough if it&amp;#039;s still required. The “warning pips” give notice that this action is soon to be needed. If talkthrough is no longer needed then no further action is required.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;ideas&quot;&gt;Ideas&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Make the Watchdog timer user switchable - be able to disable it if required.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Added new DTMF Commands “Timeout on” = &lt;code&gt;* 3 1 #&lt;/code&gt;, “Timeout off” = &lt;code&gt;* 3 0 #&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Use these to write to the “status” file&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The watchdog process can check the status file to decide whether to take action or not&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Tested and it works as expected&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;problems&quot;&gt;Problems&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
29/3/24
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Found that the IC-M710 HF radio has poor receive sensitivity - well below spec. 12dB SINAD should be at 0.5uV but it needs more like 3uV (or more) which is quite poor&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; X-Gate taken out of use until I can either repair the &lt;code&gt;IC-M710&lt;/code&gt; or make up connections to use the &lt;code&gt;IC-7200&lt;/code&gt;. The latter needs a 13-pin DIN plug for the rear panel ACC socket.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Talkthrough Watchdog Timer&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;talkthrough_watchdog_timer&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;8358-10492&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;table sectionedit14&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; GM4SLV XGate &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Status Page &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;a href=&quot;http://gm4slv.plus.com:42109/&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;http://gm4slv.plus.com:42109/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;http://gm4slv.plus.com:42109/&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;10527-10593&amp;quot;} --&gt;&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:xgate&amp;amp;do=showtag&amp;amp;tag=xgate&quot; class=&quot;wikilink1&quot; title=&quot;tag:xgate&quot; rel=&quot;tag&quot;&gt;xgate&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;10493-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 20:38:12 +0000</pubDate>
        </item>
        <item>
            <title>YaDDNet Data Backup</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:yaddnet:yaddnet_data_backup</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:yaddnet:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:yaddnet:start&quot; data-wiki-id=&quot;public:radio:topics:yaddnet:start&quot;&gt;YaDDNet&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;yaddnet_data_backup&quot;&gt;YaDDNet Data Backup&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Offsite Text file backups of all DSC messages &lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Alan Spindel initially suggested an offsite backup of the DSC messages in 2019&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; YaDDNet has had the facility to send copies of each new message out to specified IP addresses via UDP since that time&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The DSC messages are sent by UDP as simple plain text, for easy archiving&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The archived text file can be used if necessary to rebuild the SQL database table containing the DSC messages in case of disaster&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Since I&amp;#039;m now hosting YaDDNet again I decided I should run a UDP log receiver at home to improve the backup provision&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; The daily archive files will be &lt;code&gt;gzipped&lt;/code&gt; and stored on Dropbox&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; I could share the link to anyone who is interested in using the saved data&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;YaDDNet Data Backup&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;yaddnet_data_backup&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-795&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;yaddnet_udp_send_to_mirror&quot;&gt;YaDDNet UDP Send to Mirror&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; In the &lt;code&gt;PyYadd.py&lt;/code&gt; function a DSC message is created from the raw incoming data from YaDD (and DSC Decoder) in a standard format.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; This involves converting MMSI → Coast or Ship name, finding the &lt;code&gt;[MID]&lt;/code&gt; and corresponding country etc.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Prior to using the newly created message to inject new data into the SQL server &lt;code&gt;PyYadd.py&lt;/code&gt; calls the function &lt;code&gt;send_to_mirror()&lt;/code&gt; to send out the UDP packet to any configured IP addresses&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;PyYadd.py&lt;/code&gt; then inserts the new data in the SQL server &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Any addressed &amp;amp; listening UDP clients receive the UDP packets and append them to a log file&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code python&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; send_to_mirror&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    log_data &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;[log];&amp;quot;&lt;/span&gt;+data
    port &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2505&lt;/span&gt;
    host &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;aaa.bbb.ccc.ddd.eee&amp;quot;&lt;/span&gt;
    host2 &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;fff.ggg.hhh.iii&amp;quot;&lt;/span&gt;
    sock &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;AF_INET&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;SOCK_DGRAM&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    sock.&lt;span class=&quot;me1&quot;&gt;sendto&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log_data&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;host&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; port&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    sock.&lt;span class=&quot;me1&quot;&gt;sendto&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log_data&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;host2&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; port&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;YaDDNet UDP Send to Mirror&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;yaddnet_udp_send_to_mirror&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;796-1747&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;backup_udp_receive_and_logrotate&quot;&gt;Backup UDP receive and logrotate&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Backup UDP receive and logrotate&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;backup_udp_receive_and_logrotate&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1748-1794&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;udp_listener&quot;&gt;UDP Listener&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;pre class=&quot;code python&quot;&gt;&lt;span class=&quot;co1&quot;&gt;#!/usr/bin/env python&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# udp_logger.py&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;#&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; ThreadedUDPRequestHandler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;BaseRequestHandler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; handle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        data &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;strip&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw3&quot;&gt;socket&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;write_file&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;def&lt;/span&gt; write_file&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;text&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
        filename &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;/home/gm4slv/yaddlogs/yaddnet_udp_log.txt&#039;&lt;/span&gt;
        f &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;filename&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;a+&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        log &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; text
        f.&lt;span class=&quot;me1&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log+&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es0&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        f.&lt;span class=&quot;me1&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; ThreadedUDPServer&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;ThreadingMixIn&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;SocketServer&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;UDPServer&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span class=&quot;kw1&quot;&gt;pass&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; __name__ &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;__main__&amp;quot;&lt;/span&gt;:
    HOST&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; PORT &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2505&lt;/span&gt;
    server &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; ThreadedUDPServer&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;HOST&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; PORT&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; ThreadedUDPRequestHandler&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    ip&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; port &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; server.&lt;span class=&quot;me1&quot;&gt;server_address&lt;/span&gt;
    server.&lt;span class=&quot;me1&quot;&gt;serve_forever&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# Start a thread with the server -- &lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# that thread will then start one&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# more thread for each request&lt;/span&gt;
    server_thread &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;threading&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;Thread&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;target&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;server.&lt;span class=&quot;me1&quot;&gt;serve_forever&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# Exit the server thread when the main thread terminates&lt;/span&gt;
    server_thread.&lt;span class=&quot;me1&quot;&gt;daemon&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;True&lt;/span&gt;
    server_thread.&lt;span class=&quot;me1&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    server.&lt;span class=&quot;me1&quot;&gt;shutdown&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The UDP Log Receiver listens to UDP/2505 for incoming packets from YaDDNet. These are of the form:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;
[log];2024-04-19 08:43:06;NLD_MB_HF1;2187.5;SEL;002050480;COAST;205;Belgium;Ostende Radio;SAF;636092799;SHIP;636;Liberia;CISNES, D5HF4, Cargo;TEST;NOINF;--;--;REQ;OK
[log];2024-04-19 08:43:28;BDXC-Han-Remote;12577.0;SEL;002241022;COAST;224;Spain;Coruna Radio;SAF;538005991;SHIP;538;Marshall Islands;NAVIG8 VIOLETTE, V7IH3, Tanker;TEST;NOINF;--;--;REQ;OK&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; each new packet is appended to the running log file &lt;code&gt;/home/gm4slv/yaddlogs/yaddnet_udp_log.txt&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; the file will grow indefinitely if left to itself!&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;UDP Listener&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;udp_listener&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1795-3580&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;logrotate&quot;&gt;Logrotate&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; run by Crontab every day at midnight&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; copies the current running log to a timestamped file&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; erases the contents of the running log file &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;gzips&lt;/code&gt; the timestamped copy and moves it to &lt;em&gt;Dropbox&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;## CRONTAB ENTRY&lt;/span&gt;
&amp;nbsp;
00 00 &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;yaddlog_rotate.sh &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;null &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# yaddlog_rotate.sh&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;DROPBOX&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Dropbox&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;Yaddlogs&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&lt;span class=&quot;re2&quot;&gt;DIR&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;yaddlogs
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;INFILE&lt;/span&gt;=yaddnet_udp_log.txt
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;TIMESTAMP&lt;/span&gt;=&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;date&lt;/span&gt; +&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;Y&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;m&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;d_&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;H&lt;span class=&quot;sy0&quot;&gt;%&lt;/span&gt;M&lt;span class=&quot;sy0&quot;&gt;`&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re2&quot;&gt;OUTFILE&lt;/span&gt;=&lt;span class=&quot;re1&quot;&gt;$TIMESTAMP&lt;/span&gt;\_&lt;span class=&quot;re1&quot;&gt;$INFILE&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;cp&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$DIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$INFILE&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$DIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$OUTFILE&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;cat&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;null &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$DIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$INFILE&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;gzip&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$DIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$OUTFILE&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;mv&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$DIR&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$OUTFILE&lt;/span&gt;.gz &lt;span class=&quot;re1&quot;&gt;$DROPBOX&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; This creates a &lt;code&gt;gzipped&lt;/code&gt; log file in my Dropbox of each day&amp;#039;s new DSC messages&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;starting_the_udp_listener_at_boot-up&quot;&gt;Starting the UDP Listener at boot-up&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; crontab entry to start it as a background job at &lt;code&gt;@reboot&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# CRONTAB ENTRY&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;reboot python &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;gm4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;udp_logger.py &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 19/04/24 09:31 BST&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Last updated : 04/06/26 07:39 BST
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Logrotate&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;logrotate&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3581-4601&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.yaddnet.org/index.php&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.yaddnet.org/index.php&quot; rel=&quot;ugc nofollow noopener&quot;&gt; YaDDNet&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:yaddnet&amp;amp;do=showtag&amp;amp;tag=yaddnet&quot; class=&quot;wikilink1&quot; title=&quot;tag:yaddnet&quot; rel=&quot;tag&quot;&gt;yaddnet&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;4602-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
        <item>
            <title>YaDDNet : VPS SSL Renewal</title>
            <link>https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:yaddnet:yaddnet_ssl_renewal</link>
            <description>
&lt;p&gt;
←&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=public:radio:topics:yaddnet:start&quot; class=&quot;wikilink1&quot; title=&quot;public:radio:topics:yaddnet:start&quot; data-wiki-id=&quot;public:radio:topics:yaddnet:start&quot;&gt;YaDDNet&lt;/a&gt;
&lt;/p&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;yaddnetvps_ssl_renewal&quot;&gt;YaDDNet : VPS SSL Renewal&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt; Renewed SSL certificates for 2025/6 &lt;/strong&gt;
&lt;/p&gt;
&lt;div class=&quot;plugin_note noteimportant&quot;&gt;Read the final part about combining the 2 intermediate certificates!
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;YaDDNet : VPS SSL Renewal&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;yaddnetvps_ssl_renewal&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;17-192&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;ssl_certificates&quot;&gt;15/03/25 : SSL certificates&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Renewed SSL certificates available for download on Fasthosts account&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Download “Certificate” and rename → &lt;code&gt;signed.crt&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Download &lt;em&gt;both&lt;/em&gt; “Intermediate Certificates”&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; not sure why there are 2 &lt;em&gt;intermediate&lt;/em&gt; certificates&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; rename one as &lt;code&gt;ca.pem.1&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; renmame other as &lt;code&gt;ca.pem.2&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Use WinSCP to copy the 3 certificates to the Yaddnet VPS&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Log on to yaddnet vps via SSH&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; copy existing certificates in &lt;code&gt;/usr/local/ssl&lt;/code&gt; from&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;signed.crt&lt;/code&gt; → &lt;code&gt;signed.crt.old&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;ca.pem&lt;/code&gt; → &lt;code&gt;ca.pem.old&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; copy new certificates from &lt;code&gt;home&lt;/code&gt; directory to &lt;code&gt;/usr/local/ssl&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; for clarity this gives new files&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/usr/local/ssl/signed.crt&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/usr/local/ssl/ca.pem.1&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/usr/local/ssl/ca.pem.2&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; copy &lt;code&gt;ca.pem.2&lt;/code&gt; → &lt;code&gt;ca.pem&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Restart Apache&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;service apache2 restart&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; browse to &lt;a href=&quot;https://www.yaddnet.org/index.php?&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.yaddnet.org/index.php?&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.yaddnet.org/index.php?&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; site loads correctly&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; check site security&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.g4slv.info/dokuwiki/lib/exe/detail.php?id=public%3Aradio%3Atopics%3Ayaddnet%3Ayaddnet_ssl_renewal&amp;amp;media=public:radio:2025:screenshot_2025-03-15_072557.png&quot; class=&quot;media&quot; title=&quot;public:radio:2025:screenshot_2025-03-15_072557.png&quot;&gt;&lt;img src=&quot;https://www.g4slv.info/dokuwiki/lib/exe/fetch.php?w=400&amp;amp;tok=580c6c&amp;amp;media=public:radio:2025:screenshot_2025-03-15_072557.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; swap &lt;code&gt;ca.pem&lt;/code&gt; files (copy &lt;code&gt;ca.pem.1&lt;/code&gt; → &lt;code&gt;ca.pem&lt;/code&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Restart Apache&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; browse to &lt;a href=&quot;https://www.yaddnet.org/index.php?&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.yaddnet.org/index.php?&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.yaddnet.org/index.php?&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; site loads correctly&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; security also valid&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;15\/03\/25 : SSL certificates&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ssl_certificates&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;193-1465&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;different_intermediate_capem_certificates&quot;&gt;Different intermediate CA.pem certificates&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I used openssl to inspect the two different &lt;em&gt;intermediate&lt;/em&gt; certificates 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;gm4slv@yaddnet2:~ $ openssl x509 -in ca.pem -noout -text &amp;gt; /home/gm4slv/capemold.txt&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; for ca.pem.1&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            39:72:44:3a:f9:22:b7:51:d7:d3:6c:10:dd:31:35:95
        Signature Algorithm: sha384WithRSAEncryption
        Issuer: C = GB, ST = Greater Manchester, L = Salford, O = Comodo CA Limited, CN = AAA Certificate Services
        Validity
            Not Before: Mar 12 00:00:00 2019 GMT
            Not After : Dec 31 23:59:59 2028 GMT
        Subject: C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; or ca.pem.2&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            7d:5b:51:26:b4:76:ba:11:db:74:16:0b:bc:53:0d:a7
        Signature Algorithm: sha384WithRSAEncryption
        Issuer: C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
        Validity
            Not Before: Nov  2 00:00:00 2018 GMT
            Not After : Dec 31 23:59:59 2030 GMT
        Subject: C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; and for completeness the &lt;em&gt;old&lt;/em&gt; original ca.pem from prior to the renewal&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            0d:e0:ff:b5:ee:62:cb:61:10:9f:60:8c:9c:ed:5e:d3
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root G2
        Validity
            Not Before: Nov 27 12:46:40 2017 GMT
            Not After : Nov 27 12:46:40 2027 GMT
        Subject: C = US, O = DigiCert Inc, OU = www.digicert.com, CN = Encryption Everywhere DV TLS CA - G2&lt;/pre&gt;

&lt;p&gt;
It appears that the certificate (ca.pem.2) from “Sectigo” has the longest validity, and that this is the more recent/appropriate one, so I&amp;#039;ve made it the certificate in use 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;sudo cp ca.pem.2 ca.pem&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;sudo service apache2 restart&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Different intermediate CA.pem certificates&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;different_intermediate_capem_certificates&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1466-3706&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;update_on_two_intermediate_certificates_5_7_25&quot;&gt;UPDATE ON TWO INTERMEDIATE CERTIFICATES 5/7/25&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;plugin_note noteimportant&quot;&gt;I&amp;#039;ve discovered that the 2 Intermediate Certificates are necessary to complete the &lt;em&gt;chain&lt;/em&gt; of authority.

&lt;/div&gt;
&lt;p&gt;
What should be done is to join them together into one &lt;em&gt;ca.pem&lt;/em&gt; file (and in the correct order…. )
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Don&amp;#039;t rename the 2 files as &lt;code&gt;ca.pem.1&lt;/code&gt; and &lt;code&gt;ca.pem.2&lt;/code&gt; per the above  &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Transfer them both with their &lt;strong&gt;&lt;em&gt;original&lt;/em&gt;&lt;/strong&gt; names and then &lt;code&gt;cat&lt;/code&gt; them together
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;yaddnet2:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;g4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ssl&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# cat 397A66CC2756362E0DAA87CA6EABE3B1.cer 7D5B5126B476BA11DB74160BBC530DA7.cer &amp;gt; ca.pem&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;yaddnet2:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;g4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ssl&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# cp ca.pem /usr/local/ssl&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;root&lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;yaddnet2:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;home&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;g4slv&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;ssl&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;co0&quot;&gt;# systemctl restart apache2&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Check correct SSL operation at &lt;a href=&quot;https://www.ssllabs.com/ssltest/analyze.html&quot; class=&quot;urlextern&quot; target=&quot;_BLANK&quot; title=&quot;https://www.ssllabs.com/ssltest/analyze.html&quot; rel=&quot;ugc nofollow noopener&quot;&gt;https://www.ssllabs.com/ssltest/analyze.html&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
— &lt;em&gt;John Pumford-Green 15/03/25 06:36 GMT&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;UPDATE ON TWO INTERMEDIATE CERTIFICATES 5\/7\/25&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;update_on_two_intermediate_certificates_5_7_25&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3707-4558&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;further_information&quot;&gt;Further Information&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:yaddnet&amp;amp;do=showtag&amp;amp;tag=yaddnet&quot; class=&quot;wikilink1&quot; title=&quot;tag:yaddnet&quot; rel=&quot;tag&quot;&gt;yaddnet&lt;/a&gt;,
	&lt;a href=&quot;https://www.g4slv.info/dokuwiki/doku.php?id=tag:radio&amp;amp;do=showtag&amp;amp;tag=radio&quot; class=&quot;wikilink1&quot; title=&quot;tag:radio&quot; rel=&quot;tag&quot;&gt;radio&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Further Information&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;further_information&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4559-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 04 Jun 2026 06:39:56 +0000</pubDate>
        </item>
    </channel>
</rss>
