TT550 patch from Ken, N7IPB

git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1684 7ae35d74-ebe9-4afe-98af-79ac388436b8
Hamlib-1.2.0
Stéphane Fillod, F8CFE 2004-02-09 22:11:08 +00:00
rodzic f0bd7c1d4a
commit b16c10a90e
5 zmienionych plików z 1963 dodań i 99 usunięć

Wyświetl plik

@ -1,7 +1,7 @@
TENTECSRCLIST = rx320.c pegasus.c argonaut.c
lib_LTLIBRARIES = hamlib-tentec.la
hamlib_tentec_la_SOURCES = $(TENTECSRCLIST) tentec.c tentec2.c
hamlib_tentec_la_SOURCES = $(TENTECSRCLIST) tentec.c tentec2.c tt550.c
hamlib_tentec_la_LDFLAGS = -no-undefined -module -avoid-version
hamlib_tentec_la_LIBADD = $(top_builddir)/src/libhamlib.la

26
tentec/README 100644
Wyświetl plik

@ -0,0 +1,26 @@
tt550 TODO (Ken, N7IPB):
Support for multiple VFO's and Memories. The TT550 doesn't
really have VFO's or Memories since it's strictly a software
controlled radio, but they can easily be simulated in software.
I already support a split mode since the TX and RX control is
separate. Adding support for VFO-A, VFO-B and memory channels
will be done next.
The optional encoder with keypad is supported for changing frequency
only, along with F1 changing the stepsize. The other function keys
have no current assignments. I can add hard-coded Function keys as
I did with F1 but maybe a more generic solution can be determined.
In addition the keypad is not supported. Hamlib has no apparent way
to make use of the numeric keys. We probably need to add a callback
for key data.
IF-Shift: IF-Shift code is in place but I see no way in hamlib to make
use of it. The Icom dual pass-band tuning is supported, but not just
simple IF shift. Or maybe I just missed something.
TX Audio Monitor Volume - no hamlib support - RIG_LEVEL_TX_MON?
CW Sidetone Volume - no hamlib support - RIG_LEVEL_SIDETONE?
Transmit Audio Source and Volume select - no hamlib support - RIG_LEVEL_LINEIN?
CW Spot Level - no hamlib support - RIG_LEVEL_CW_SPOT?
Enable/Disable Amplifier keying loop - no hamlib support - RIG_FUNC_AMP?

Wyświetl plik

@ -1,8 +1,8 @@
/*
* Hamlib TenTenc backend - TT-550 PC-Radio description
* Copyright (c) 2002-2003 by Stephane Fillod
* Copyright (c) 2002-2004 by Stephane Fillod
*
* $Id: pegasus.c,v 1.5 2003-12-08 08:38:18 fillods Exp $
* $Id: pegasus.c,v 1.6 2004-02-09 22:10:21 fillods Exp $
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
@ -29,21 +29,30 @@
#include <hamlib/rig.h>
#include "idx_builtin.h"
#include "tentec.h"
#include "tt550.h"
#define TT550_MODES (RIG_MODE_FM|RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_RTTY)
#define TT550_RXMODES (TT550_MODES|RIG_MODE_AM)
#define TT550_MODES (RIG_MODE_FM|RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_AM)
#define TT550_RXMODES (TT550_MODES)
#define TT550_FUNCS (RIG_FUNC_FAGC|RIG_FUNC_VOX|RIG_FUNC_ANF| \
RIG_FUNC_NR|RIG_FUNC_NB|RIG_FUNC_COMP)
#define TT550_FUNCS (RIG_FUNC_VOX|RIG_FUNC_ANF|RIG_FUNC_TUNER| \
RIG_FUNC_NR|RIG_FUNC_VOX)
#define TT550_LEVELS (RIG_LEVEL_AGC|RIG_LEVEL_AF|RIG_LEVEL_RAWSTR| \
RIG_LEVEL_RF|RIG_LEVEL_COMP|RIG_LEVEL_VOX|RIG_LEVEL_SQL| \
RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD| \
RIG_LEVEL_SWR|RIG_LEVEL_ATT)
#ifndef RIG_LEVEL_LINEOUT
#define RIG_LEVEL_LINEOUT 0
#endif
#define TT550_VFO (RIG_VFO_A)
#define TT550_LEVELS (RIG_LEVEL_AGC|RIG_LEVEL_AF|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH| \
RIG_LEVEL_RF|RIG_LEVEL_COMP|RIG_LEVEL_VOX|RIG_LEVEL_SQL| \
RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD| \
RIG_LEVEL_SWR|RIG_LEVEL_ATT|RIG_LEVEL_NR| \
RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_ANTIVOX| \
RIG_LEVEL_LINEOUT)
#define TT550_VFO (RIG_VFO_A )
#define TT550_VFO_OPS (RIG_OP_TUNE)
/*
* a bit coarse, but I don't have a TT550, and the manual is not
* verbose on the subject. Please test it and report! --SF
@ -62,102 +71,156 @@
* TODO:
*/
const struct rig_caps tt550_caps = {
.rig_model = RIG_MODEL_TT550,
.model_name = "TT-550",
.mfg_name = "Ten-Tec",
.version = "0.1",
.copyright = "LGPL",
.status = RIG_STATUS_UNTESTED,
.rig_type = RIG_TYPE_COMPUTER,
.ptt_type = RIG_PTT_NONE,
.dcd_type = RIG_DCD_NONE,
.port_type = RIG_PORT_SERIAL,
.serial_rate_min = 57600,
.serial_rate_max = 57600,
.serial_data_bits = 8,
.serial_stop_bits = 1,
.serial_parity = RIG_PARITY_NONE,
.serial_handshake = RIG_HANDSHAKE_HARDWARE,
.write_delay = 0,
.post_write_delay = 0,
.timeout = 200,
.retry = 3,
.rig_model = RIG_MODEL_TT550,
.model_name = "TT-550",
.mfg_name = "Ten-Tec",
.version = "0.2",
.copyright = "LGPL",
.status = RIG_STATUS_BETA,
.rig_type = RIG_TYPE_COMPUTER,
.ptt_type = RIG_PTT_RIG,
.dcd_type = RIG_DCD_NONE,
.port_type = RIG_PORT_SERIAL,
.serial_rate_min = 57600,
.serial_rate_max = 57600,
.serial_data_bits = 8,
.serial_stop_bits = 1,
.serial_parity = RIG_PARITY_NONE,
.serial_handshake = RIG_HANDSHAKE_HARDWARE,
.write_delay = 0,
.post_write_delay = 0,
.timeout = 30,
.retry = 3,
.has_get_func = TT550_FUNCS,
.has_set_func = TT550_FUNCS,
.has_get_level = TT550_LEVELS,
.has_set_level = RIG_LEVEL_SET(TT550_LEVELS),
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE,
.level_gran = {
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 99999 } },
},
.parm_gran = {},
.ctcss_list = NULL,
.dcs_list = NULL,
.preamp = { RIG_DBLST_END },
.attenuator = { 20, RIG_DBLST_END },
.max_rit = Hz(0),
.max_xit = Hz(0),
.max_ifshift = Hz(0),
.targetable_vfo = 0,
.transceive = RIG_TRN_OFF,
.bank_qty = 0,
.chan_desc_sz = 0,
.has_get_func = TT550_FUNCS,
.has_set_func = TT550_FUNCS,
.has_get_level = TT550_LEVELS,
.has_set_level = RIG_LEVEL_SET (TT550_LEVELS),
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE,
.level_gran = {
[LVL_RAWSTR] = {.min = {.i = 0},.max = {.i = 65535}},
},
.parm_gran = {},
.ctcss_list = NULL,
.dcs_list = NULL,
.preamp = {RIG_DBLST_END},
.attenuator = {20, RIG_DBLST_END},
.max_rit = Hz (10000),
.max_xit = Hz (10000),
.max_ifshift = Hz (2000),
.targetable_vfo = RIG_TARGETABLE_ALL,
.vfo_ops = TT550_VFO_OPS,
.transceive = RIG_TRN_RIG,
.bank_qty = 0,
.chan_desc_sz = 0,
.chan_list = {
RIG_CHAN_END,
.chan_list = {
RIG_CHAN_END,
},
.rx_range_list1 = { RIG_FRNG_END, }, /* FIXME: enter region 1 setting */
.tx_range_list1 = { RIG_FRNG_END, },
.rx_range_list1 = {RIG_FRNG_END,}, /* FIXME: enter region 1 setting */
.tx_range_list1 = {RIG_FRNG_END,},
.rx_range_list2 = {
{kHz(100),MHz(30),TT550_RXMODES,-1,-1,TT550_VFO},
RIG_FRNG_END,
},
.tx_range_list2 = {
{kHz(1800),MHz(2)-1,TT550_MODES,5000,100000,TT550_VFO},
{kHz(3500),MHz(4)-1,TT550_MODES,5000,100000,TT550_VFO},
{MHz(7),kHz(7300),TT550_MODES,5000,100000,TT550_VFO},
{kHz(10100),kHz(10150),TT550_MODES,5000,100000,TT550_VFO},
{MHz(14),kHz(14350),TT550_MODES,5000,100000,TT550_VFO},
{kHz(18068),kHz(18168),TT550_MODES,5000,100000,TT550_VFO},
{MHz(21),kHz(21450),TT550_MODES,5000,100000,TT550_VFO},
{kHz(24890),kHz(24990),TT550_MODES,5000,100000,TT550_VFO},
{MHz(28),kHz(29700),TT550_MODES,5000,100000,TT550_VFO},
RIG_FRNG_END,
},
.rx_range_list2 = {
{kHz (100), MHz (30), TT550_RXMODES, -1, -1, TT550_VFO},
RIG_FRNG_END,
},
.tx_range_list2 = {
{kHz (1800), MHz (2) - 1, TT550_MODES, 5000, 100000, TT550_VFO},
{kHz (3500), MHz (4) - 1, TT550_MODES, 5000, 100000, TT550_VFO},
{kHz (5330), kHz (5407) - 1, RIG_MODE_USB, 5000, 50000, TT550_VFO},
{MHz (7), kHz (7300), TT550_MODES, 5000, 100000, TT550_VFO},
{kHz (10100), kHz (10150), TT550_MODES, 5000, 100000, TT550_VFO},
{MHz (14), kHz (14350), TT550_MODES, 5000, 100000, TT550_VFO},
{kHz (18068), kHz (18168), TT550_MODES, 5000, 100000, TT550_VFO},
{MHz (21), kHz (21450), TT550_MODES, 5000, 100000, TT550_VFO},
{kHz (24890), kHz (24990), TT550_MODES, 5000, 100000, TT550_VFO},
{MHz (28), kHz (29700), TT550_MODES, 5000, 100000, TT550_VFO},
RIG_FRNG_END,
},
.tuning_steps = {
{TT550_RXMODES,1},
RIG_TS_END,
},
/* mode/filter list, remember: order matters! */
.filters = {
/* FIXME: add increments -> 34 filters? */
{RIG_MODE_SSB|RIG_MODE_RTTY, kHz(3)},
{RIG_MODE_CW, 300},
{RIG_MODE_AM|RIG_MODE_FM, kHz(8)},
RIG_FLT_END,
},
.str_cal = TT550_STR_CAL,
.rig_init = tentec_init,
.rig_cleanup = tentec_cleanup,
.rig_open = tentec_trx_open,
.set_freq = tentec_set_freq,
.get_freq = tentec_get_freq,
.set_mode = tentec_set_mode,
.get_mode = tentec_get_mode,
.set_level = tentec_set_level,
.get_level = tentec_get_level,
.get_info = tentec_get_info,
.tuning_steps = {
{TT550_RXMODES, RIG_TS_ANY},
RIG_TS_END,
},
/* mode/filter list, remember: order matters! */
.filters = {
{RIG_MODE_CW, Hz (450)},
{RIG_MODE_CW, Hz (300)},
{RIG_MODE_CW, Hz (750)},
{RIG_MODE_AM|RIG_MODE_FM, kHz (6)},
{RIG_MODE_AM|RIG_MODE_FM, Hz (4200)},
{RIG_MODE_AM|RIG_MODE_FM, kHz (8)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(2400)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(2700)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(2100)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(5700)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(5400)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(5100)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(4800)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(4500)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(4200)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(3900)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(3600)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(3300)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(2850)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(8000)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(2550)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(2400)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(2250)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(6000)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(1950)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(1800)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(1650)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(1500)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(1350)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(1200)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(1050)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(900)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(750)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(675)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(600)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(525)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(450)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(375)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(330)},
{RIG_MODE_AM|RIG_MODE_FM|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_CW, Hz(300)},
RIG_FLT_END,
},
.str_cal = TT550_STR_CAL,
.rig_init = tt550_init,
.rig_cleanup = tt550_cleanup,
.rig_open = tt550_trx_open,
.reset = tt550_reset,
.set_freq = tt550_set_freq,
.get_freq = tt550_get_freq,
.set_mode = tt550_set_mode,
.get_mode = tt550_get_mode,
.set_func = tt550_set_func,
.get_func = tt550_get_func,
.set_level = tt550_set_level,
.get_level = tt550_get_level,
.get_info = tt550_get_info,
.set_ptt = tt550_set_ptt,
.get_ptt = tt550_get_ptt,
.set_split_freq = tt550_set_tx_freq,
.get_split_freq = tt550_get_tx_freq,
.set_split_mode = tt550_set_tx_mode,
.get_split_mode = tt550_get_tx_mode,
.set_split_vfo = tt550_set_split_vfo,
.get_split_vfo = tt550_get_split_vfo,
.decode_event = tt550_decode_event,
.set_ts = tt550_set_tuning_step,
.get_ts = tt550_get_tuning_step,
.vfo_op = tt550_vfo_op,
.set_rit = tt550_set_rit,
.get_rit = tt550_get_rit,
.set_xit = tt550_set_xit,
.get_xit = tt550_get_xit,
};
/*
* Function definitions below
*/

1622
tentec/tt550.c 100644

Plik diff jest za duży Load Diff

153
tentec/tt550.h 100644
Wyświetl plik

@ -0,0 +1,153 @@
/*
* Hamlib Tentec backend - main header
* Copyright (c) 2001-2004 by Stephane Fillod
*
* $Id: tt550.h,v 1.1 2004-02-09 22:11:08 fillods Exp $
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* 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 Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#ifndef _TT550_H
#define _TT550_H 1
#include <hamlib/rig.h>
#include <cal.h>
#define EOM "\015" /* CR */
#define TT_AM '0'
#define TT_USB '1'
#define TT_LSB '2'
#define TT_CW '3'
#define TT_FM '4'
/*
* Transmit and receive flags used by tt550_tuning_factor_calc
* to modify behavior for transmit versus receive vfo's
*/
#define RECEIVE 0
#define TRANSMIT 1
/*
* Transmitter control operations
*/
#define DISABLE_TX '0'
#define ENABLE_TX '1'
#define DISABLE_AMP '2'
#define ENABLE_AMP '3'
#define ENABLE_KEYER '6'
#define DISABLE_KEYER '7'
#define DISABLE_KEEPALIVE '8'
#define ENABLE_KEEPALIVE '9'
/* This is needed until we come up with a way to guarantee that the
** KEEPALIVE mechanism of the Pegasus is met.
*/
#define BYPASS_KEEPALIVE 1
#define KEY_F1_DOWN 0x11
#define KEY_F2_DOWN 0x12
#define KEY_F3_DOWN 0x13
#define KEY_F1_UP 0x91
#define KEY_F2_UP 0x92
#define KEY_F3_UP 0x93
struct tt550_priv_data
{
rmode_t tx_mode; /* transmitter mode - may be different from receiver in split mode */
rmode_t rx_mode; /* Current RX Mode */
freq_t tx_freq; /* tuned transmitter frequency - may be different from
* 'freq' when in split mode
*/
freq_t rx_freq; /* Current RX Frequency */
shortfreq_t rit; /* Current RIT Value */
shortfreq_t xit; /* Current XIT Value */
shortfreq_t pbtadj; /* Current pass band tuning value */
pbwidth_t width; /* filter bandwidth in Hz */
pbwidth_t tx_width; /* transmit filter bandwidth in Hz */
int pb; /* RX passband offset in Hz 0 [0-10000] */
int cwbfo; /* BFO frequency: 700 [0-2000Hz] */
int tx_cwbfo; /* TX_BFO frequency: 700 [0-2000Hz] */
float lineout; /* line-out volume: 30 [0..63] */
float spkvol; /* speaker volume: 30 [0..63] */
int agc; /* AGC: medium */
float rflevel; /* RF Gain Level: [0..255] */
float sql; /* Squelch: [0..255] */
int att; /* Attenuator level [0..1] */
int keyspd; /* Keyer speed: [0..255] */
float nr; /* Noise reduction: [0..1] */
float autonotch; /* Autonotch filter: [0..1] */
float rfpower; /* RF Power: [0..255] */
float speechcomp; /* Speech compressor: [0..127] */
float voxgain; /* Vox Gain: [0..255] */
float voxdelay; /* Vox delay: [0..255] */
float antivox; /* AntiVox gain: [0..255] */
float mikegain; /* Microphone gain: [0..15] */
float bkindl; /* CW QSK level */
int split; /* split - ON/OFF */
shortfreq_t stepsize; /*current step size */
int anf; /* ANF on/off 1/0 */
int en_nr; /* Noise Reduction on/off 1/0 */
int tuner; /* automatic tuner on/off 1/0 */
int vox; /* VOX on/off 1/0 */
/* calculated by tt550_tuning_factor_calc() */
int ctf; /* Coarse Tune Factor */
int ftf; /* Fine Tune Factor */
int btf; /* Bfo Tune Factor, btval is ignored by RX-320 in AM MODE */
/* S-meter calibration data */
cal_table_t str_cal;
};
int tt550_init (RIG * rig);
int tt550_cleanup (RIG * rig);
int tt550_trx_open (RIG * rig);
int tt550_reset(RIG * rig, reset_t reset);
int tt550_set_freq (RIG * rig, vfo_t vfo, freq_t freq);
int tt550_get_freq (RIG * rig, vfo_t vfo, freq_t * freq);
int tt550_set_mode (RIG * rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
int tt550_get_mode (RIG * rig, vfo_t vfo, rmode_t * mode, pbwidth_t * width);
int tt550_set_level (RIG * rig, vfo_t vfo, setting_t level, value_t val);
int tt550_get_level (RIG * rig, vfo_t vfo, setting_t level, value_t * val);
int tt550_set_ptt (RIG * rig, vfo_t vfo, ptt_t ptt);
int tt550_get_ptt (RIG * rig, vfo_t vfo, ptt_t * ptt);
int tt550_decode_event (RIG * rig);
const char *tt550_get_info (RIG * rig);
int tt550_set_tx_freq (RIG * rig, vfo_t vfo, freq_t freq);
int tt550_get_tx_freq (RIG * rig, vfo_t vfo, freq_t * freq);
int tt550_set_rx_freq (RIG * rig, vfo_t vfo, freq_t freq);
int tt550_get_rx_freq (RIG * rig, vfo_t vfo, freq_t * freq);
int tt550_set_tx_mode (RIG * rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
int tt550_get_tx_mode (RIG * rig, vfo_t vfo, rmode_t * mode, pbwidth_t * width);
int tt550_set_rx_mode (RIG * rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
int tt550_get_rx_mode (RIG * rig, vfo_t vfo, rmode_t * mode, pbwidth_t * width);
int tt550_get_split_vfo (RIG * rig, vfo_t vfo, split_t * split, vfo_t * tx_vfo);
int tt550_set_split_vfo (RIG * rig, vfo_t vfo, split_t split, vfo_t tx_vfo);
int tt550_get_tuning_step (RIG * rig, vfo_t vfo, shortfreq_t * stepsize);
int tt550_set_tuning_step (RIG * rig, vfo_t vfo, shortfreq_t stepsize);
int tt550_set_func(RIG *rig, vfo_t vfo, setting_t func, int status);
int tt550_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status);
int tt550_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op);
int tt550_set_rit(RIG * rig, vfo_t vfo, shortfreq_t rit);
int tt550_get_rit(RIG *rig, vfo_t vfo, shortfreq_t * rit);
int tt550_set_xit(RIG * rig, vfo_t vfo, shortfreq_t rit);
int tt550_get_xit(RIG *rig, vfo_t vfo, shortfreq_t * rit);
#endif /* _TT550_H */