Add ADAT ADT-200A backend

Signed-off-by: Stephane Fillod <fillods@users.sf.net>
Hamlib-1.2.15
Frank Goenninger 2012-01-11 23:16:41 +01:00 zatwierdzone przez Stephane Fillod
rodzic 1a77ef9eb9
commit f6ea9f1246
11 zmienionych plików z 4663 dodań i 3 usunięć

Wyświetl plik

@ -28,6 +28,9 @@ S: Status, one of the following:
Backends:
[adat: ADT-200A]
M: Frank Goenninger DG1SBG
[alinco: DX77-T]
M: Ben Coleman NJ8J

Wyświetl plik

@ -16,7 +16,7 @@ SUBDIRS = macros include lib $(subdirs) src @BACKEND_LIST@ @ROT_BACKEND_LIST@ \
# perl and kylix subdirs are no longer distributed
DIST_SUBDIRS = macros include lib $(subdirs) src c++ bindings tests doc \
icom kenwood aor yaesu dummy pcr alinco uniden tentec kachina jrc \
rpcrig winradio easycomm fodtrack rpcrot drake rotorez \
rpcrig winradio adat easycomm fodtrack rpcrot drake rotorez \
flexradio sartek lowe rft rs tapr kit skanti prm80 wj racal tuner \
gs232a heathkit spid ars m2 amsat scripts ts7400 celestron

2
NEWS
Wyświetl plik

@ -6,7 +6,7 @@ Copyright (C) 2000-2012 Stephane Fillod, and others
Please send Hamlib bug reports to hamlib-developer@lists.sourceforge.net
Version 1.2.15
* New models: TT-599 Eagle, IC-RX7, IC-1275
* New models: TT-599 Eagle, IC-RX7, IC-1275, HiQSDR, ADAT ADT-200A
* New rotator backends: Celestron (telescope mount)
* Fixes and features: K3

8
adat/Makefile.am 100644
Wyświetl plik

@ -0,0 +1,8 @@
ADATSRC = adt_200a.c adat.c
pkglib_LTLIBRARIES = hamlib-adat.la
hamlib_adat_la_SOURCES = $(ADATSRC)
hamlib_adat_la_LDFLAGS = -no-undefined -module -avoid-version
hamlib_adat_la_LIBADD = $(top_builddir)/src/libhamlib.la
noinst_HEADERS = adat.h adt_200a.h

3745
adat/adat.c 100644

Plik diff jest za duży Load Diff

586
adat/adat.h 100644
Wyświetl plik

@ -0,0 +1,586 @@
// ---------------------------------------------------------------------------
// ADAT
// ---------------------------------------------------------------------------
//
// adat.h
//
// Created by Frank Goenninger DG1SBG.
// Copyright © 2011, 2012 Frank Goenninger. Creative Commons License.
//
// $Header$
#if !defined( __ADAT_INCLUDED__ )
#define __ADAT_INCLUDED__
// ---------------------------------------------------------------------------
// SYSTEM INCLUDES
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
// HAMLIB INCLUDES
// ---------------------------------------------------------------------------
#include "hamlib/rig.h"
// ---------------------------------------------------------------------------
// GLOBAL DEFINITIONS
// ---------------------------------------------------------------------------
#define ADAT_BUFSZ 256
#define ADAT_RESPSZ 256
#define ADAT_CR "\x0d"
#define ADAT_EOL "\x0a"
#define ADAT_BOM "$" // Begin of message
#define ADAT_EOM ADAT_CR // End of message
#define ADAT_ON 1
#define ADAT_OFF 0
#define ADAT_TOGGLE_ON ADAT_ON
#define ADAT_TOGGLE_OFF ADAT_OFF
#define ADAT_FREQ_UNIT_HZ "Hz"
#define ADAT_FREQ_UNIT_HZ_LEN 2
#define ADAT_FREQ_UNIT_KHZ "kHz"
#define ADAT_FREQ_UNIT_KHZ_LEN 3
#define ADAT_FREQ_UNIT_MHZ "MHz"
#define ADAT_FREQ_UNIT_MHZ_LEN 3
#define ADAT_FREQ_UNIT_GHZ "GHz"
#define ADAT_FREQ_UNIT_GHZ_LEN 3
#define TOKEN_ADAT_PRODUCT_NAME TOKEN_BACKEND(1)
#define ADAT_SLEEP_MICROSECONDS_BETWEEN_CMDS (11*1000) // = 11 ms
#define ADAT_SLEEP_AFTER_RIG_CLOSE 2 // unit: seconds
#define ADAT_SLEEP_AFTER_RIG_OPEN 2 // unit: seconds
// ADAT VFO SET/GET DEFINITIONS
#define ADAT_NR_VFOS 3
// Each mode is defined by three values:
// ADAT_VFO_STR_... -> The string as given back by TRX when asked by
// $VFO?
// ADAT_VFO_RNR_... -> The Hamlib number of the mode: RIG_VFO_...
// ADAT_VFO_ANR_... -> The ADAT Nr representing the VFO when setting it
#define ADAT_VFO_STR_A "A"
#define ADAT_VFO_RNR_A RIG_VFO_A
#define ADAT_VFO_ANR_A 1
#define ADAT_VFO_STR_B "B"
#define ADAT_VFO_RNR_B RIG_VFO_B
#define ADAT_VFO_ANR_B 2
#define ADAT_VFO_STR_C "C"
#define ADAT_VFO_RNR_C RIG_VFO_C
#define ADAT_VFO_ANR_C 3
// ADAT MODE DEFINITIONS
#define ADAT_MODE_LENGTH 5
#define ADAT_NR_MODES 8
// Each mode is defined by three values:
// ADAT_MODE_STR_... -> The string as given back by TRX when asked by
// $MOD?
// ADAT_MODE_RNR_... -> The Hamlib number of the mode: RIG_MODE_...
// ADAT_MODE_ANR_... -> The ADAT Nr representing the mode when setting it
#define ADAT_MODE_STR_CW_R "CW-R"
#define ADAT_MODE_RNR_CW_R RIG_MODE_CWR
#define ADAT_MODE_ANR_CW_R 0
#define ADAT_MODE_STR_CW "CW"
#define ADAT_MODE_RNR_CW RIG_MODE_CW
#define ADAT_MODE_ANR_CW 1
#define ADAT_MODE_STR_LSB "LSB"
#define ADAT_MODE_RNR_LSB RIG_MODE_LSB
#define ADAT_MODE_ANR_LSB 2
#define ADAT_MODE_STR_USB "USB"
#define ADAT_MODE_RNR_USB RIG_MODE_USB
#define ADAT_MODE_ANR_USB 3
#define ADAT_MODE_STR_AM "AM"
#define ADAT_MODE_RNR_AM RIG_MODE_AM
#define ADAT_MODE_ANR_AM 5
#define ADAT_MODE_STR_AM_SL "AM-SL"
#define ADAT_MODE_RNR_AM_SL RIG_MODE_SAL
#define ADAT_MODE_ANR_AM_SL 6
#define ADAT_MODE_STR_AM_SU "AM-SU"
#define ADAT_MODE_RNR_AM_SU RIG_MODE_SAH
#define ADAT_MODE_ANR_AM_SU 7
#define ADAT_MODE_STR_FM "FM"
#define ADAT_MODE_RNR_FM RIG_MODE_FM
#define ADAT_MODE_ANR_FM 8
// ADAT PTT DEFINITIONS
#define ADAT_PTT_STATUS_ANR_ON ADAT_ON
#define ADAT_PTT_STATUS_RNR_ON RIG_PTT_ON
#define ADAT_PTT_STATUS_ANR_OFF ADAT_OFF
#define ADAT_PTT_STATUS_RNR_OFF RIG_PTT_OFF
// ADAT POWER LEVEL DEFINITIONS
#define ADAT_PWR_LVL_ANR_00 0
#define ADAT_PWR_LVL_RNR_00 100 // 100 mW
#define ADAT_PWR_LVL_ANR_01 1
#define ADAT_PWR_LVL_RNR_01 300 // 300 mW
#define ADAT_PWR_LVL_ANR_02 2
#define ADAT_PWR_LVL_RNR_02 1000 // ...
#define ADAT_PWR_LVL_ANR_03 3
#define ADAT_PWR_LVL_RNR_03 2000
#define ADAT_PWR_LVL_ANR_04 4
#define ADAT_PWR_LVL_RNR_04 3000
#define ADAT_PWR_LVL_ANR_05 5
#define ADAT_PWR_LVL_RNR_05 5000
#define ADAT_PWR_LVL_ANR_06 6
#define ADAT_PWR_LVL_RNR_06 7000
#define ADAT_PWR_LVL_ANR_07 7
#define ADAT_PWR_LVL_RNR_07 10000
#define ADAT_PWR_LVL_ANR_08 8
#define ADAT_PWR_LVL_RNR_08 15000
#define ADAT_PWR_LVL_ANR_09 9
#define ADAT_PWR_LVL_RNR_09 20000
#define ADAT_PWR_LVL_ANR_10 10
#define ADAT_PWR_LVL_RNR_10 25000
#define ADAT_PWR_LVL_ANR_11 11
#define ADAT_PWR_LVL_RNR_11 30000
#define ADAT_PWR_LVL_ANR_12 12
#define ADAT_PWR_LVL_RNR_12 35000
#define ADAT_PWR_LVL_ANR_13 13
#define ADAT_PWR_LVL_RNR_13 40000
#define ADAT_PWR_LVL_ANR_14 14 // Default value after reset
#define ADAT_PWR_LVL_RNR_14 45000
#define ADAT_PWR_LVL_ANR_15 15
#define ADAT_PWR_LVL_RNR_15 50000 // 50 W
#define ADAT_MAX_POWER_IN_mW ADAT_PWR_LVL_RNR_15
// ADAT CHANNEL CAPS
#define ADAT_MEM_CAPS \
{ \
.vfo = 1, \
.ant = 1, \
.freq = 1, \
.mode = 1, \
.width = 1, \
.tx_freq = 1, \
.tx_mode = 1, \
.tx_width = 1, \
.tx_vfo = 1, \
.rit = 1, \
.xit = 1, \
.tuning_step = 1, \
.channel_desc = 1 \
}
#define ADAT_MEM_DESC_SIZE 64
// ADAT OPCODES - Kind of an internal command within ADAT Hamlib Backend
#define ADAT_OPCODE_BASE_PTT 110000
#define ADAT_OPCODE_PTT_SWITCH_ON (ADAT_OPCODE_BASE_PTT + 1)
#define ADAT_OPCODE_PTT_SWITCH_OFF (ADAT_OPCODE_BASE_PTT + 2)
// ---------------------------------------------------------------------------
// Individual ADAT CAT commands
// ---------------------------------------------------------------------------
#define ADAT_CMD_DEF_ADAT_SPECIAL (1<<30)
// -- NIL -- (Marks the end of a cmd list)
#define ADAT_CMD_DEF_NIL 0
// -- ADAT SPECIAL: DISPLAY OFF --
#define ADAT_CMD_DEF_STRING_DISPLAY_OFF "$VRU>"ADAT_CR
// -- ADAT SPECIAL: DISPLAY ON --
#define ADAT_CMD_DEF_STRING_DISPLAY_ON "$VRU<"ADAT_CR
// -- ADAT SPECIAL: GET SERIAL NR --
#define ADAT_CMD_DEF_STRING_GET_SERIAL_NR "$CIS?"ADAT_CR
// -- ADAT SPECIAL: GET FIRMWARE VERSION --
#define ADAT_CMD_DEF_STRING_GET_FW_VERSION "$CIF?"ADAT_CR
// -- ADAT SPECIAL: GET HARDWARE VERSION --
#define ADAT_CMD_DEF_STRING_GET_HW_VERSION "$CIH?"ADAT_CR
// -- ADAT SPECIAL: GET FIRMWARE VERSION --
#define ADAT_CMD_DEF_STRING_GET_ID_CODE "$CID?"ADAT_CR
// -- ADAT SPECIAL: GET GUI FIRMWARE VERSION --
#define ADAT_CMD_DEF_STRING_GET_GUI_FW_VERSION "$CIG?"ADAT_CR
// -- ADAT SPECIAL: GET OPTIONS --
#define ADAT_CMD_DEF_STRING_GET_OPTIONS "$CIO?"ADAT_CR
// -- ADAT SPECIAL: GET CALLSIGN --
#define ADAT_CMD_DEF_STRING_GET_CALLSIGN "$CAL?"ADAT_CR
// -- ADAT SPECIAL: SET CALLSIGN --
#define ADAT_CMD_DEF_STRING_SET_CALLSIGN "$CAL:"
// -- HAMLIB DEFINED COMMANDS --
// -- GET FREQ --
#define ADAT_CMD_DEF_GET_FREQ (1<<0)
#define ADAT_CMD_DEF_STRING_GET_FREQ "$FRA?"ADAT_CR
// -- SET FREQ --
#define ADAT_CMD_DEF_SET_FREQ (1<<1)
#define ADAT_CMD_DEF_STRING_SET_FREQ "$FR1:"
// -- GET VFO --
// -- GET MODE --
#define ADAT_CMD_DEF_GET_MODE (1<<2)
#define ADAT_CMD_DEF_STRING_GET_MODE "$MOD?"ADAT_CR
// -- SET VFO --
#define ADAT_CMD_DEF_SET_VFO (1<<3)
#define ADAT_CMD_DEF_STRING_SWITCH_ON_VFO "$VO%1d>%s"
#define ADAT_CMD_DEF_STRING_SET_VFO_AS_MAIN_VFO "$VO%1d%%%s"
// -- SET MODE --
#define ADAT_CMD_DEF_SET_MODE (1<<4)
#define ADAT_CMD_DEF_STRING_SET_MODE "$MOD:"
// -- SET PTT --
#define ADAT_CMD_DEF_SET_PTT (1<<5)
#define ADAT_CMD_DEF_STRING_SET_PTT "$MOX%s%s"
#define ADAT_CMD_PTT_STR_OFF "<"
#define ADAT_CMD_PTT_STR_ON ">"
// -- GET PTT --
#define ADAT_CMD_DEF_GET_PTT (1<<6)
#define ADAT_CMD_DEF_STRING_GET_PTT "$MTR?"ADAT_CR
// -- GET POWER STATUS --
// -- GET INFO --
// -- OPEN ADAT --
// -- ADAT SPECIAL: RECOVER FROM ERROR --
// ---------------------------------------------------------------------------
// ADAT PRIVATE DATA
// ---------------------------------------------------------------------------
typedef struct _adat_priv_data
{
int nOpCode;
char *pcProductName; // Future use (USB direct I/O)
// ADAT device info
char *pcSerialNr;
char *pcIDCode;
char *pcOptions;
char *pcFWVersion;
char *pcHWVersion;
char *pcGUIFWVersion;
char *pcCallsign;
// ADAT Operational Settings: will change during TRX use
int nCurrentVFO;
vfo_t nRIGVFONr;
freq_t nFreq;
char acRXFreq[ ADAT_BUFSZ ];
char acTXFreq[ ADAT_BUFSZ ];
rmode_t nRIGMode;
char acADATMode[ ADAT_MODE_LENGTH + 1 ];
int nADATMode;
pbwidth_t nWidth;
int nADATPTTStatus;
ptt_t nRIGPTTStatus;
value_t mNB1;
value_t mNB2;
value_t mAGC;
value_t mRFGain;
value_t mIFShift;
value_t mRawStr;
// ADAT Command-related Values
char *pcCmd;
int nCmdKind;
char *pcResult;
int nRC;
} adat_priv_data_t,
* adat_priv_data_ptr;
// ---------------------------------------------------------------------------
// ADAT CAT COMMAND DATA TYPE DECLARATIONS
// ---------------------------------------------------------------------------
typedef unsigned long long adat_cmd_id_t; // Bit mask for commands. Each command
// is represented by 1 bit.
// adat_cmd_def : ADAT COMMAND DEFINITION.
// Basic idea: Each command can be made of several strings to be sent
// to the ADAT device. Therefore it is possible to build aggregated
// commands which will be executed as a set of individual commands
// executed by adat_transaction(). The last value as returned by the
// commands will be set as overall command result.
typedef enum
{
ADAT_CMD_KIND_WITH_RESULT = 0, // After sending a command to the ADAT,
// a result has to be read.
ADAT_CMD_KIND_WITHOUT_RESULT = 1
} adat_cmd_kind_t;
typedef struct _adat_cmd_def_t
{
adat_cmd_id_t nCmdId; // Bit indicating this cmd
adat_cmd_kind_t nCmdKind; // Defines if result expected
int (*pfCmdFn)( RIG *pRig ); // Fn to be called to execute this cmd
int nNrCmdStrs; // Oh my, C as a language ... I'd love to
// switch to Common Lisp ... What a hack here ...
char *pacCmdStrs[]; // Commands to be executed if no CmdFn given
} adat_cmd_def_t,
* adat_cmd_def_ptr;
typedef struct _adat_cmd_table_t
{
int nNrCmds;
adat_cmd_def_ptr adat_cmds[];
} adat_cmd_table_t,
* adat_cmd_table_ptr;
typedef struct _adat_cmd_list_t
{
int nNrCmds;
adat_cmd_def_ptr adat_cmds[];
} adat_cmd_list_t,
* adat_cmd_list_ptr;
// ---------------------------------------------------------------------------
// OTHER ADAT DATA TYPES
// ---------------------------------------------------------------------------
typedef enum
{
ADAT_FREQ_PARSE_MODE_WITH_VFO = 0,
ADAT_FREQ_PARSE_MODE_WITHOUT_VFO = 1
} adat_freq_parse_mode_t;
// ADAT MODE DEFINITION
typedef struct _adat_mode_def
{
char *pcADATModeStr;
rmode_t nRIGMode;
int nADATMode;
} adat_mode_def_t,
* adat_mode_def_ptr;
typedef struct _adat_mode_list
{
int nNrModes;
adat_mode_def_t adat_modes[ ADAT_NR_MODES ];
} adat_mode_list_t,
* adat_mode_list_ptr;
// ADAT VFO DEFINITION
typedef struct _adat_vfo_def
{
char *pcADATVFOStr;
vfo_t nRIGVFONr;
int nADATVFONr;
} adat_vfo_def_t,
* adat_vfo_def_ptr;
typedef struct _adat_vfo_list
{
int nNrVFOs;
adat_vfo_def_t adat_vfos[ ADAT_NR_VFOS ];
} adat_vfo_list_t,
* adat_vfo_list_ptr;
// ---------------------------------------------------------------------------
// ADAT INTERNAL FUNCTION DECLARATIONS
// ---------------------------------------------------------------------------
// Helper functions
size_t trimwhitespace( char *, size_t, const char * );
int adat_print_cmd( adat_cmd_def_ptr );
int adat_parse_freq( char *, adat_freq_parse_mode_t, int *, freq_t * );
int adat_parse_mode( char *, rmode_t *, char * );
int adat_mode_rnr2anr( rmode_t, int * );
int adat_mode_anr2rnr( int, rmode_t * );
int adat_parse_vfo( char *, vfo_t *, int * );
int adat_vfo_rnr2anr( vfo_t, int * );
int adat_vfo_anr2rnr( int, vfo_t * );
int adat_parse_ptt( char *, int * );
int adat_ptt_rnr2anr( ptt_t, int * );
int adat_ptt_anr2rnr( int, ptt_t * );
int adat_send( RIG *, char * );
int adat_receive( RIG *, char * );
int adat_priv_set_cmd( RIG *, char *, int );
int adat_priv_set_result( RIG *, char * );
int adat_priv_clear_result( RIG * );
int adat_get_single_cmd_result( RIG * );
int adat_cmd_recover_from_error( RIG *, int );
int adat_transaction( RIG *, adat_cmd_list_ptr );
adat_priv_data_ptr adat_new_priv_data( RIG * );
void adat_del_priv_data( adat_priv_data_t ** );
// Command implementation
int adat_cmd_fn_get_serial_nr( RIG * );
int adat_cmd_fn_get_fw_version( RIG * );
int adat_cmd_fn_get_hw_version( RIG * );
int adat_cmd_fn_get_gui_fw_version( RIG * );
int adat_cmd_fn_get_id_code( RIG * );
int adat_cmd_fn_get_options( RIG * );
int adat_cmd_fn_set_callsign( RIG * );
int adat_cmd_fn_get_callsign( RIG * );
int adat_cmd_fn_set_freq( RIG * );
int adat_cmd_fn_get_freq( RIG * );
int adat_cmd_fn_get_mode( RIG * );
int adat_cmd_fn_set_mode( RIG * );
int adat_cmd_fn_get_vfo( RIG * );
int adat_cmd_fn_set_vfo( RIG * );
int adat_cmd_fn_get_ptt( RIG * );
int adat_cmd_fn_set_ptt( RIG * );
// ---------------------------------------------------------------------------
// ADAT FUNCTION DECLARATIONS
// ---------------------------------------------------------------------------
int adat_init( RIG * );
int adat_cleanup( RIG * );
int adat_reset( RIG *, reset_t );
int adat_open( RIG * );
int adat_set_conf( RIG *, token_t, const char *val );
int adat_get_conf( RIG *, token_t, char *val );
int adat_set_freq( RIG *, vfo_t, freq_t );
int adat_get_freq( RIG *, vfo_t, freq_t * );
int adat_set_vfo( RIG *, vfo_t );
int adat_get_vfo( RIG *, vfo_t * );
int adat_set_ptt( RIG *, vfo_t, ptt_t );
int adat_get_ptt( RIG *, vfo_t, ptt_t * );
int adat_set_mode( RIG *, vfo_t, rmode_t, pbwidth_t );
int adat_get_mode( RIG *, vfo_t, rmode_t *, pbwidth_t * );
int adat_set_func( RIG *, vfo_t, setting_t func, int );
int adat_get_func( RIG *, vfo_t, setting_t func, int * );
int adat_set_level( RIG *, vfo_t, setting_t level, value_t );
int adat_get_level( RIG *, vfo_t, setting_t level, value_t * );
int adat_handle_event( RIG * );
const char * adat_get_info( RIG * );
int adat_mW2power( RIG *, float *, unsigned int, freq_t, rmode_t );
int adat_power2mW( RIG *, unsigned int *, float, freq_t, rmode_t );
int adat_get_powerstat( RIG *, powerstat_t * );
extern const struct rig_caps adt_200a_caps;
// ---------------------------------------------------------------------------
// END OF FILE
// ---------------------------------------------------------------------------
#endif

201
adat/adt_200a.c 100644
Wyświetl plik

@ -0,0 +1,201 @@
// ---------------------------------------------------------------------------
// ADT-200A HAMLIB BACKEND
// ---------------------------------------------------------------------------
//
// adt_200a.c
//
// Created by Frank Goenninger DG1SBG.
// Copyright © 2011, 2012 Frank Goenninger. Creative Commons License.
//
// $Header$
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
// ---------------------------------------------------------------------------
// ADT-200A INCLUDES
// ---------------------------------------------------------------------------
#include "adt_200a.h"
// ---------------------------------------------------------------------------
// GLOBAL DEFINITIONS
// ---------------------------------------------------------------------------
// GLOBAL VARS
// static const struct confparams adt_200a_cfg_params[] =
// {
// { TOKEN_PRODUCT_NAME, "usb_product_name", "USB Product Name", "USB Product Name (DSP Bo
// Model + ' Serial '+ ID Code, e.g. 'TRX3C Serial C945D5B' )",
// ADT_200A_PRODUCT_NAME, RIG_CONF_STRING, { .n = { 0,0,0 } }
// },
//
// { RIG_CONF_END, NULL, }
//};
// ---------------------------------------------------------------------------
// ADT-200A HAMLIB CAPS / DESCRIPTION
// ---------------------------------------------------------------------------
const struct rig_caps adt_200a_caps =
{
.rig_model = RIG_MODEL_ADT_200A,
.model_name = "ADT-200A",
.mfg_name = "ADAT www.adat.ch",
.version = "1.36",
.copyright = "Frank Goenninger, DG1SBG. License: Creative Commons",
.status = RIG_STATUS_BETA,
.rig_type = RIG_TYPE_TRANSCEIVER,
.ptt_type = RIG_PTT_RIG,
.dcd_type = RIG_DCD_NONE,
.port_type = RIG_PORT_SERIAL,
.serial_rate_min = 115200,
.serial_rate_max = 115200,
.serial_data_bits = 8,
.serial_stop_bits = 1,
.serial_parity = RIG_PARITY_NONE,
.serial_handshake = RIG_HANDSHAKE_NONE,
.write_delay = 0,
.post_write_delay = 20,
.timeout = 250,
.retry = 3,
.has_get_func = ADT_200A_FUNCS,
.has_set_func = ADT_200A_FUNCS,
.has_get_level = ADT_200A_GET_LEVEL,
.has_set_level = RIG_LEVEL_SET(ADT_200A_SET_LEVEL),
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE,
.level_gran = {},
.parm_gran = {},
.ctcss_list = NULL,
.dcs_list = NULL,
.preamp = { 5, 10, RIG_DBLST_END, },
.attenuator = { 5, 10, 15, 20, 25, RIG_DBLST_END, },
.max_rit = ADT_200A_RIT,
.max_xit = ADT_200A_XIT,
.max_ifshift = Hz(500),
.targetable_vfo = RIG_TARGETABLE_NONE,
.transceive = 0,
.bank_qty = 1,
.chan_desc_sz = ADAT_MEM_DESC_SIZE,
.chan_list =
{
{ 0, 99, RIG_MTYPE_MEM, ADAT_MEM_CAPS },
RIG_CHAN_END,
},
.rx_range_list1 =
{
{ kHz(10), MHz(30), ADT_200A_MODES, -1, -1, ADT_200A_VFO },
RIG_FRNG_END,
},
.tx_range_list1 =
{
{ kHz(10), MHz(30), ADT_200A_MODES, mW(100), W(50), ADT_200A_VFO },
RIG_FRNG_END,
},
.rx_range_list2 =
{
{ kHz(10), MHz(30), ADT_200A_MODES, -1, -1, ADT_200A_VFO },
RIG_FRNG_END,
},
.tx_range_list2 =
{
{ kHz(10), MHz(30), ADT_200A_MODES, mW(100), W(50), ADT_200A_VFO },
RIG_FRNG_END,
},
.tuning_steps =
{
{ ADT_200A_MODES, RIG_TS_ANY }, // TODO: get actual list here
RIG_TS_END,
},
.filters =
{
{ RIG_MODE_CW|RIG_MODE_CWR, Hz(50) },
{ RIG_MODE_CW|RIG_MODE_CWR, Hz(75) },
{ RIG_MODE_CW|RIG_MODE_CWR, Hz(100) },
{ RIG_MODE_CW|RIG_MODE_CWR, Hz(150) },
{ RIG_MODE_CW|RIG_MODE_CWR, Hz(200) },
{ RIG_MODE_CW|RIG_MODE_CWR, Hz(300) },
{ RIG_MODE_CW|RIG_MODE_CWR, Hz(750) },
{ RIG_MODE_CW|RIG_MODE_CWR, Hz(1000) },
{ RIG_MODE_CW|RIG_MODE_CWR, Hz(1200) },
{ RIG_MODE_LSB|RIG_MODE_USB, Hz(300) },
{ RIG_MODE_LSB|RIG_MODE_USB, Hz(500) },
{ RIG_MODE_LSB|RIG_MODE_USB, Hz(750) },
{ RIG_MODE_LSB|RIG_MODE_USB, Hz(1000) },
{ RIG_MODE_LSB|RIG_MODE_USB, Hz(1200) },
{ RIG_MODE_LSB|RIG_MODE_USB, Hz(1500) },
{ RIG_MODE_LSB|RIG_MODE_USB, Hz(1800) },
{ RIG_MODE_LSB|RIG_MODE_USB, Hz(2000) },
{ RIG_MODE_LSB|RIG_MODE_USB, Hz(2200) },
{ RIG_MODE_LSB|RIG_MODE_USB, Hz(2400) },
{ RIG_MODE_LSB|RIG_MODE_USB, Hz(2700) },
{ RIG_MODE_LSB|RIG_MODE_USB, Hz(3500) },
{ RIG_MODE_AM|RIG_MODE_SAL|RIG_MODE_SAH, Hz(3000) },
{ RIG_MODE_AM|RIG_MODE_SAL|RIG_MODE_SAH, Hz(3500) },
{ RIG_MODE_AM|RIG_MODE_SAL|RIG_MODE_SAH, Hz(4000) },
{ RIG_MODE_AM|RIG_MODE_SAL|RIG_MODE_SAH, Hz(4500) },
{ RIG_MODE_AM|RIG_MODE_SAL|RIG_MODE_SAH, Hz(5000) },
{ RIG_MODE_AM|RIG_MODE_SAL|RIG_MODE_SAH, Hz(6000) },
{ RIG_MODE_AM|RIG_MODE_SAL|RIG_MODE_SAH, Hz(7000) },
{ RIG_MODE_AM|RIG_MODE_SAL|RIG_MODE_SAH, Hz(8000) },
{ RIG_MODE_FM, Hz(6000) },
{ RIG_MODE_FM, Hz(7000) },
{ RIG_MODE_FM, Hz(8000) },
{ RIG_MODE_FM, Hz(9000) },
{ RIG_MODE_FM, Hz(10000) },
{ RIG_MODE_FM, Hz(11000) },
{ RIG_MODE_FM, Hz(12000) },
RIG_FLT_END,
},
// .cfgparams = adt_200a_cfg_params,
.rig_init = adat_init,
.rig_cleanup = adat_cleanup,
.rig_open = adat_open,
.reset = adat_reset,
.set_conf = adat_set_conf,
.get_conf = adat_get_conf,
.set_freq = adat_set_freq,
.get_freq = adat_get_freq,
.get_level = adat_get_level,
.set_level = adat_set_level,
.set_mode = adat_set_mode,
.get_mode = adat_get_mode,
.get_vfo = adat_get_vfo,
.set_vfo = adat_set_vfo,
.get_ptt = adat_get_ptt,
.set_ptt = adat_set_ptt,
.decode_event = adat_handle_event,
.get_info = adat_get_info,
.power2mW = adat_power2mW,
.mW2power = adat_mW2power,
.get_powerstat = adat_get_powerstat
};
// ---------------------------------------------------------------------------
// END OF FILE
// ---------------------------------------------------------------------------

105
adat/adt_200a.h 100644
Wyświetl plik

@ -0,0 +1,105 @@
// ---------------------------------------------------------------------------
// ADT-200A
// ---------------------------------------------------------------------------
//
// adt_200a.h
//
// Created by Frank Goenninger DG1SBG.
// Copyright © 2011, 2012 Frank Goenninger. Creative Commons License.
//
// $Header$
#if !defined( __ADT_200A_INCLUDED__ )
#define __ADT_200A_INCLUDED__
// ---------------------------------------------------------------------------
// ADAT INCLUDES
// ---------------------------------------------------------------------------
#include "adat.h"
// ---------------------------------------------------------------------------
// ADT-200A USB DEFINITIONS
// ---------------------------------------------------------------------------
#define ADT_200A_VENDOR_ID 0x0403
#define ADT_200A_PRODUCT_ID 0x6001
#define ADT_200A_VENDOR_NAME "FTDI"
#define ADT_200A_PRODUCT_NAME "TRX3C Serial C945D5B"
#define ADT_200A_USB_INTERFACE_NR 0x00
#define ADT_200A_USB_CONFIGURATION_VALUE 0x01
#define ADT_200A_ALTERNATE_SETTIMG 0x00
#define ADT_200A_USB_INPUT_ENDPOINT 0x81
#define ADT_200A_USB_INPUT_MAX_PACKET_SIZE 64
#define ADT_200A_USB_OUTPUT_ENDPOINT b0x02
#define ADT_200A_USB_OUTPUT_MAX_PACKET_SIZE 64
// ---------------------------------------------------------------------------
// ADT-200A CAPS DEFINITIONS
// ---------------------------------------------------------------------------
#define ADT_200A_GET_LEVEL \
( \
RIG_LEVEL_PREAMP | \
RIG_LEVEL_ATT | \
RIG_LEVEL_AF | \
RIG_LEVEL_NR | \
RIG_LEVEL_CWPITCH | \
RIG_LEVEL_RFPOWER | \
RIG_LEVEL_MICGAIN | \
RIG_LEVEL_KEYSPD | \
RIG_LEVEL_METER | \
RIG_LEVEL_BKIN_DLYMS | \
RIG_LEVEL_RAWSTR | \
RIG_LEVEL_SWR | \
RIG_LEVEL_ALC )
#define ADT_200A_SET_LEVEL \
( \
RIG_LEVEL_PREAMP | \
RIG_LEVEL_ATT | \
RIG_LEVEL_AF | \
RIG_LEVEL_NR | \
RIG_LEVEL_CWPITCH | \
RIG_LEVEL_RFPOWER | \
RIG_LEVEL_MICGAIN | \
RIG_LEVEL_KEYSPD | \
RIG_LEVEL_METER | \
RIG_LEVEL_BKIN_DLYMS | \
RIG_LEVEL_ALC )
#define ADT_200A_MODES \
( \
RIG_MODE_AM | \
RIG_MODE_CW | \
RIG_MODE_USB | \
RIG_MODE_LSB | \
RIG_MODE_FM | \
RIG_MODE_CWR | \
RIG_MODE_SAL | \
RIG_MODE_SAH )
// ADT-200A VFO #defines
#define ADT_200A_FRA RIG_VFO_N(0)
#define ADT_200A_FRB RIG_VFO_N(1)
#define ADT_200A_FRC RIG_VFO_N(2)
#define ADT_200A_VFO (ADT_200A_FRA|ADT_200A_FRB|ADT_200A_FRC)
#define ADT_200A_RIT 9999
#define ADT_200A_XIT 9999
// ADT-200A FUNCs
#define ADT_200A_FUNCS (RIG_FUNC_VOX|RIG_FUNC_NB|RIG_FUNC_NR)
// ---------------------------------------------------------------------------
// END OF FILE
// ---------------------------------------------------------------------------
#endif

Wyświetl plik

@ -63,6 +63,8 @@
%ignore RIG_BACKEND_TUNER;
%ignore RIG_RS;
%ignore RIG_BACKEND_RS;
%ignore RIG_ADAT;
%ignore RIG_BACKEND_ADAT;
%ignore ROT_DUMMY;
%ignore ROT_BACKEND_DUMMY;

Wyświetl plik

@ -257,7 +257,7 @@ fi
AC_SUBST(RIGMATRIX)
BACKEND_LIST="icom kenwood aor yaesu dummy pcr alinco uniden tentec kachina jrc drake lowe rft rs kit skanti prm80 tapr flexradio wj racal tuner"
BACKEND_LIST="icom kenwood aor yaesu dummy pcr alinco uniden tentec kachina jrc drake lowe rft rs kit skanti prm80 tapr flexradio wj racal tuner adat"
ROT_BACKEND_LIST="dummy easycomm fodtrack gs232a heathkit kit rotorez sartek spid ars m2 amsat ts7400 celestron"
BINDINGS=""
BINDING_ALL=""
@ -538,6 +538,7 @@ rotorez/Makefile
flexradio/Makefile
m2/Makefile
amsat/Makefile
adat/Makefile
ts7400/Makefile
celestron/Makefile
scripts/Makefile

Wyświetl plik

@ -507,6 +507,14 @@
#define RIG_MODEL_PRM8060 RIG_MAKE_MODEL(RIG_PRM80, 1)
#define RIG_MODEL_PRM8070 RIG_MAKE_MODEL(RIG_PRM80, 2)
/*
* ADAT by HB9CBU
*
* ADDED: frgo (DG1SBG), 2012-01-01
*/
#define RIG_ADAT 29
#define RIG_BACKEND_ADAT "adat"
#define RIG_MODEL_ADT_200A RIG_MAKE_MODEL(RIG_ADAT, 1)
/*
* TODO:
@ -554,6 +562,7 @@ typedef int rig_model_t;
{ RIG_TUNER, RIG_BACKEND_TUNER }, \
{ RIG_RS, RIG_BACKEND_RS }, \
{ RIG_PRM80, RIG_BACKEND_PRM80 }, \
{ RIG_ADAT, RIG_BACKEND_ADAT }, \
{ 0, NULL }, /* end */ \
}