There was an inconsistency in whether the CAT terminator character is
included in returned messages. It now follows the comment in
kenwood_transaction() i.e. strips of the terminator and returns a
message length that reflects that.
Using the priv->info buffer causes security checks on Mac OS X >= 10.9
because the source and destination of an internal strncpy can end up
being the same. It is bad practice anyway as it's undefined behaviour.
Allows for a single ';' for verification with the Elecraft XG3 single
character commands.
Allow for rig specific instance data (needed by the Elecraft XG3 that
is a bit different from the rest of the Kenwood/Elecraft group).
Do not send a startup command to turn off AI mode to the Elecraft XG3
as it doesn't have that command or mode.
Restore the positive RTTY mode enabled check to the Elecraft K2 as it
appears that the MD6; and MD9; comamnds are valid even when RTTY mode
is disabled on the rig.
For Kenwood transceivers the FA/FB/FC command smust be used to get a
VFO frequency, the IF command returns the Tx frequency when
transmitting. The function kenwood_get_freq_if() doesn't adjust for Tx
status or assign the frequency to a specific VFO.
The K2 initialization was checking if RTTY mode was available by
sending an MD6; command and they querying the mode to check if it
worked. The latest kenwood routines now fail if an invalid command is
sent to the K2 initialization need only try the MD6; command to see if
RTTY is available on the rig.
The function kenwood_cmd doesn't add value and it uses a reply buffer
that is not required. Also the use of a reply buffer disables the
verification of commands that have no reply feature. Substituted
kenwood_simple_cmd calls that do the job correctly without a reply
buffer.
Added delay to busy retry loop when sending commands to rig.
Implemented retries on wrong length repies from rig also with a delay.
These rigs can opt to ignore set type commands when they are
busy. This means that sending a set command like FAnnnnnnnnn; to set
the frequency can fail. The rig should send "?;" when busy but since
no reply is normally expected it is not convenient to read for a reply
after a set command since it will block until timeout. This change
sends an "AI;" command after a command that is not expected to reply,
this should guarantee a reply of some sort allowing any busy reply to
be read without blocking and initiate a retry of the original set
command. The "AI;" command is chosen because it is available on all
rigs AFAIK and at least on Elecraft is guaranteed to be processed even
when the rig is busy.
The K2 RTTY and RTTY-R modes should be modeled as PKTLSB and PKTUSB
respectively since they are AFSK modes.
Also ensured that Kenwood mode sets do not try and set RIG_MODE_NONE
as it makes no sense.
This rig is largely similar to the TS-590S but for some reason Kenwood
have changed most the EX command ids. Even though hamlib makes little
use of the EX command, it probably will need to for future
functionality implemenattion. Hence the new rig id.
The K3 supports AFSK & FSK sub-modes and for the D versions it also
has an internal RTTY and PSK31 decoder. The decoder sub-modes are
reported as FSK (RTTY) and the AFSK sub-modes are reported as PKT(USB
& LSB). LSB modes are assumed to be RTTY and USB modes are assumed to
be PKT(PSK, WS modes etc.).
For mode set the data sub-modes are set as follows:
RTTY -> FSK D normal (LSB) VFO shows MARK QRG
RTTYR -> FSK D reversed (USB) VFO shows MARK QRG
PKTUSB -> DATA A normal (USB) VFO shows suppressed carrier QRG
PKTLSB -> AFSK A normal (LSB) optimised for RTTY VFO shows MARK QRG
Not all data sub-mode combinations are possible but the above mapping
seems most likely to cover the user requirements.
Two patches:
The first adds support for the Flex 6K series of SDR radios. These
radios have a CAT application that runs on a windows machine, and
exposes a network socket that can be opened for CAT commands. This back
end connects to that network socket and provides an interface. I've
tested pretty thoroughly using a Flex 6700 but I don't have the other
models available (6500 and 6700R). CAT support on these models is
evolving with frequent updates from Flex, and this back end does not
reflect the latest features to be added. I hope to get to them soon.
The second patch makes the easycomm interface more robust by flushing
the serial port and clearing the buffer.
Steve, AI4QR
Merge branch 'for-upstream' of https://github.com/sconklin/hamlib into sconklin-for-upstream
It turns out that either VFO can be incorrectly set in split mode when
the VFO is the TX VFO. The logic has been changed to send an IF; query
and read and set the other VFO if the VFO just set in set_freq is the
TX VFO and the rig is in split.
The Kenwood IF command, which is used to get the current VFO, returns
the TX VFO in transmit mode. The get_vfo function needs to return the
RX VFO to be consistent and useful elsewhere. The implementation now
swaps the returned VFO if the rig is in split mode and transmitting at
the time of the query.
The TS590s with firmware revision 1.07 or earlier fails to set VFO B
frequency properly when the rig is in split mode and the TX VFO is VFO
B. The symptom is, subsequent TX is on the wrong frequency (the
previous frequency) or there is no output at all. The fix is to read
VFO A and then immediately set VFO A to the read frequency. This
effectively null sequence has the side effect of setting VFO B
properly.
Defects in the TS590s f/w can be addressed selectively according to
revision.
Enable kenwood_open function for TS590s.
For some reason the TS590s did not use the kenwood_open function, as
fetching the firmware revision may be required for this rig and it is
done in that function; it has been enabled.
The TS590s has a DA command to set USB, LSB or, FM data
submodes. Support for get and set of these sub-modes has been
added. Mapped from RIG_MODE_PKTUSB, RIG_MODE_PKTLSB and,
RIG_MODE_PKTFM respectively.
The TS-870s has no width set for SSB and AM, instead the bandwidth is
set via a high and low pass fiter setting. The backend now sets these
to try and achieve the requested bandwidth. The HPF setting is assumed
to be the default.
The bandwidth query reads both the HPF and the LPF and returns the
difference.
The value of RIG_BANDWIDTH_NORMAL skips bandwidth adjustements.
The get and set_split operations have been enabled.
The TS50S has the old FN and SP commands rather than the newer FR/FT
commands, added code to support these commands allowing split
operation to be commanded on the TS50S.
The TS480 had no split VFO functions enabled, added normal modern
Kenwood split VFO and mode handing functions.
The API calls to set split frequency and split mode were missing, I
have set them to the preexisting Kenwood functions and they seem to
work as expected. I'm not sure why they were not already enabled.
Moved all backend *.h files into the SOURCES primary as Automake
documentation states all source file types should be listed. This
causes Automake to include *.h files in rebuild rules for the targets.
Removed the '-DIN_HAMLIB' assignment from the CFLAGS primary in each
backend and assigned it to AM_CPPFLAGS in configure.ac. The effect is
the same and it simplifies the backend Makefile.am files.
Removed all commented lines.
GCC 4.8.x revealed an error in the way the destination buffer size was
calculated for storing the K3 firmware revision. Now, instead of
declaring the array in the kenwood_priv_data structure, it is declared
as static in elecraft.c and a pointer is now assigned in the
kenwood_priv_data structure. This allows for proper calculation of the
array size for strncpy().
Android makefile fragments are distributed as extra distribution files
by the GNU build system but are otherwise ignored. The Android build
support is independent and does not rely on the GNU build system.
See android/README.android for more info.
Signed-off-by: Nate Bargmann <n0nb@n0nb.us>
For the K3 RIT/XIT are now explicitly turned On/Off by calling
rig_get/set_func() and passing RIG_FUNC_R/XIT and the status of 1 or 0.
When setting the RIT/XIT offset by calling rig_set_r/xit, an offset of 0
will clear the RIT/XIT offset but will no longer turn the RIT/XIT
function Off. Likewise, an offset can be set but not active until the
RIT/XIT function is explicitly turned On.
Use the absolute value of any negative value that may be passed in via
the width parameter to set_mode.
If RIG_PASSBAND_NORMAL is passed in, call rig_passband_normal() to
determine the normal width for the mode before setting the bandwidth.
The width parameter is tested against wide and narrow filter values and
set to the returned values as upper and lower limits if width falls out
of those bounds.
(cherry picked from commit bb6c6493e1)
Use the absolute value of any negative value that may be passed in via
the width parameter to set_mode.
If RIG_PASSBAND_NORMAL is passed in, call rig_passband_normal() to
determine the normal width for the mode before selecting the correct
filter (needs testing).
(cherry picked from commit 94ea3ced4c)
Like other Kenwood rigs of its vintage, the TS-950 series provides the
mode information in the IF command response. Filter bandwidth is
set/read using the FL command.
Recent firmware versions since 4.37 now offer support for higher
resolution for the S-meter output via the SMH command. The K3 backend
performs the STRENGTH level routine and passes other levels to the
Kenwood backend.
This patch has not been tested with a firmware version older than 4.39
to assure that operation with the SM command still works as expected.
Minor edit: RIG_FUNC_REV instead of CHFLAG_REVERSE
Plus some TS2000 improvements:
* add more FUNC's, VFO_OP's, SCAN_OP's.
* declare ANT's.
* fix set_ctcss_tone: use TN command
* add set/get_ctcss_sql
Create new confparams token of 'ritclr' for clearing RIT/XIT offset
without turning off RIT/XIT function. Thanks to Tor, N4OGW, for the
request. May be replaced in the future by a dedicated RIT/XIT clear
function in the Hamlib API.
As the K3 does not return a response to the AN? set command, direct the
backend to use kenwood_set_ant_no_ack() instead. Thanks to Alexander
Sack, KC2ZSX for catching this.
Wayne Burdick, N6KR, advises that the forthcoming KX3 (prototype
shown at Dayton Hamvention 2011) will have an identical command
set to the K3.
Fix K2 and K3 backend versions.
Bill reports his TS-440 returns 38 chars instead of the default 29.
This patch defines iflen of 38 for the ts440 backend and implements
necssary support in the ic10 backend.
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@3067 7ae35d74-ebe9-4afe-98af-79ac388436b8
The K3 will swap VFOs with the frontend's implementation of
get_split_mode when the backend's definition in rig_caps is NULL. These
functions simply return -RIG_ENAVAIL when called to preserve the K3's
operating state.
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@3057 7ae35d74-ebe9-4afe-98af-79ac388436b8
The K2 and K3 support a TQ command to query the transmit status. As
only four bytes are returned it is much faster than the longer IF
command response. Access is via rig_get_ext_level--rigctl 'l' command
with a Level mnemonic of 'txst'. Returns '0' on RX and '1' on TX.
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@3032 7ae35d74-ebe9-4afe-98af-79ac388436b8
Implemented kenwood_cfg_params structure to allow RIT/XIT tokens to be
available to all Kenwood backend rigs (Fine Step and Voice announce are
also defined). K2/K3 rigs can only set/get RIT/XIT.
Updated README.k2/k3 for RIT/XIT functions and prior updates.
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@3031 7ae35d74-ebe9-4afe-98af-79ac388436b8
Implemented rig_get_ext_level() for the K3 FI command which returns the
last four digits of the IF center frequency. This value changes as the
operator adjusts the shift control, changes mode, or adjusts the bandwidth
control. The function returns the actual frequency of 8210000 Hz plus
the value returned by the FI command.
To get this frequency value the token IFCTR must be passed to
rig_get_ext_level(). This token is specific to the K3 backend.
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@3029 7ae35d74-ebe9-4afe-98af-79ac388436b8
Test k2_md_rtty flag when k2_set_mode() is passed RIG_MODE_RTTY or
RIG_MODE_RTTYR to avoid erroneously attempting to set RTTY when
k2_md_rtty is unset.
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@3024 7ae35d74-ebe9-4afe-98af-79ac388436b8
An oversight had omitted the necessary call to set the K2 to K22
extended mode before setting the filter. The function now sets K22
properly, sets the filter width, and then K20 before returning.
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@3023 7ae35d74-ebe9-4afe-98af-79ac388436b8
K2 backend will now scan for installed RTTY mode and filters per
mode upon rig_open(). Implemented get/set mode in K2. The get_mode()
function checks the filter bandwith and returns that for the width
value and the set_() function will select and set an appropriate
filter based on the width passed in.
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@3021 7ae35d74-ebe9-4afe-98af-79ac388436b8