diff --git a/include/hamlib/riglist.h b/include/hamlib/riglist.h index d1eb29c40..d7881337e 100644 --- a/include/hamlib/riglist.h +++ b/include/hamlib/riglist.h @@ -1,8 +1,9 @@ /* * Hamlib Interface - list of known rigs - * Copyright (c) 2000-2008 by Stephane Fillod and Frank Singleton + * Copyright (c) 2000-2003 by Frank Singleton + * Copyright (c) 2000-2008 by Stephane Fillod * - * $Id: riglist.h,v 1.73 2008-11-02 12:45:04 fillods Exp $ + * $Id: riglist.h,v 1.74 2008-12-14 20:02:03 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 @@ -89,6 +90,8 @@ #define RIG_MODEL_VR5000 RIG_MAKE_MODEL(RIG_YAESU, 26) #define RIG_MODEL_FT450 RIG_MAKE_MODEL(RIG_YAESU, 27) #define RIG_MODEL_FT950 RIG_MAKE_MODEL(RIG_YAESU, 28) +#define RIG_MODEL_FT2000 RIG_MAKE_MODEL(RIG_YAESU, 29) +#define RIG_MODEL_FT9000 RIG_MAKE_MODEL(RIG_YAESU, 30) /* * Kenwood diff --git a/yaesu/Makefile.am b/yaesu/Makefile.am index 43ad0a27d..f8bfab26b 100644 --- a/yaesu/Makefile.am +++ b/yaesu/Makefile.am @@ -7,7 +7,7 @@ YAESUSRC = ft100.c ft747.c ft817.c ft847.c ft890.c ft900.c ft920.c \ vr5000.c ft767gx.c ## Yaesu radios that use the new Kenwood style CAT commands -NEWCATSRC = newcat.c ft450.c ft950.c +NEWCATSRC = newcat.c ft450.c ft950.c ft2000.c ft9000.c lib_LTLIBRARIES = hamlib-yaesu.la hamlib_yaesu_la_SOURCES = $(YAESUSRC) $(NEWCATSRC) yaesu.c diff --git a/yaesu/ft2000.c b/yaesu/ft2000.c new file mode 100644 index 000000000..e813ef287 --- /dev/null +++ b/yaesu/ft2000.c @@ -0,0 +1,189 @@ +/* + * hamlib - (C) Frank Singleton 2000 (javabear at users.sourceforge.net) + * + * ft2000.c - (C) Nate Bargmann 2007 (n0nb at arrl.net) + * (C) Stephane Fillod 2008 + * + * This shared library provides an API for communicating + * via serial interface to an FT-2000 using the "CAT" interface + * + * + * $Id: ft2000.c,v 1.1 2008-12-14 20:02:03 fillods Exp $ + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "hamlib/rig.h" +#include "bandplan.h" +#include "serial.h" +#include "misc.h" +#include "yaesu.h" +#include "newcat.h" +#include "ft2000.h" +#include "idx_builtin.h" +#include "tones.h" + +/* + * ft2000 rigs capabilities. + * Also this struct is READONLY! + * + */ + +const struct rig_caps ft2000_caps = { + .rig_model = RIG_MODEL_FT2000, + .model_name = "FT-2000", + .mfg_name = "Yaesu", + .version = NEWCAT_VER, + .copyright = "LGPL", + .status = RIG_STATUS_UNTESTED, + .rig_type = RIG_TYPE_TRANSCEIVER, + .ptt_type = RIG_PTT_RIG, + .dcd_type = RIG_DCD_NONE, + .port_type = RIG_PORT_SERIAL, + .serial_rate_min = 4800, /* Default rate per manual */ + .serial_rate_max = 38400, + .serial_data_bits = 8, + .serial_stop_bits = 1, /* Assumed since manual makes no mention */ + .serial_parity = RIG_PARITY_NONE, + .serial_handshake = RIG_HANDSHAKE_NONE, + .write_delay = FT2000_WRITE_DELAY, + .post_write_delay = FT2000_POST_WRITE_DELAY, + .timeout = 2000, + .retry = 0, + .has_get_func = FT2000_FUNCS, + .has_set_func = FT2000_FUNCS, + .has_get_level = FT2000_LEVELS, + .has_set_level = RIG_LEVEL_SET(FT2000_LEVELS), + .has_get_parm = RIG_PARM_NONE, + .has_set_parm = RIG_PARM_NONE, + .level_gran = { + [LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } }, + [LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } }, + }, + .ctcss_list = common_ctcss_list, + .dcs_list = NULL, + .preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */ + .attenuator = { 6, 12, 18, RIG_DBLST_END, }, + .max_rit = Hz(9999), + .max_xit = Hz(9999), + .max_ifshift = Hz(1000), + .vfo_ops = FT2000_VFO_OPS, + .targetable_vfo = RIG_TARGETABLE_FREQ, + .transceive = RIG_TRN_OFF, /* May enable later as the 2000 has an Auto Info command */ + .bank_qty = 0, + .chan_desc_sz = 0, + .str_cal = FT2000_STR_CAL, + .chan_list = { + { 0, 99, RIG_MTYPE_MEM, NEWCAT_MEM_CAP }, + { 100, 117, RIG_MTYPE_EDGE, NEWCAT_MEM_CAP }, /* two by two */ + RIG_CHAN_END, + }, + + .rx_range_list1 = { + /* General coverage + ham, ANT_5 is RX only antenna */ + {kHz(30), MHz(60), FT2000_ALL_RX_MODES, -1, -1, FT2000_VFO_ALL, FT2000_TX_ANTS|RIG_ANT_5}, + RIG_FRNG_END, + }, + + .tx_range_list1 = { + FRQ_RNG_HF(1, FT2000_OTHER_TX_MODES, W(5), W(100), FT2000_VFO_ALL, FT2000_TX_ANTS), + FRQ_RNG_HF(1, FT2000_AM_TX_MODES, W(2), W(25), FT2000_VFO_ALL, FT2000_TX_ANTS), /* AM class */ + FRQ_RNG_6m(1, FT2000_OTHER_TX_MODES, W(5), W(100), FT2000_VFO_ALL, FT2000_TX_ANTS), + FRQ_RNG_6m(1, FT2000_AM_TX_MODES, W(2), W(25), FT2000_VFO_ALL, FT2000_TX_ANTS), /* AM class */ + + RIG_FRNG_END, + }, + + .rx_range_list2 = { + {kHz(30), MHz(60), FT2000_ALL_RX_MODES, -1, -1, FT2000_VFO_ALL, FT2000_TX_ANTS|RIG_ANT_5}, + RIG_FRNG_END, + }, + + .tx_range_list2 = { + FRQ_RNG_HF(2, FT2000_OTHER_TX_MODES, W(5), W(100), FT2000_VFO_ALL, FT2000_TX_ANTS), + FRQ_RNG_HF(2, FT2000_AM_TX_MODES, W(2), W(25), FT2000_VFO_ALL, FT2000_TX_ANTS), /* AM class */ + FRQ_RNG_6m(2, FT2000_OTHER_TX_MODES, W(5), W(100), FT2000_VFO_ALL, FT2000_TX_ANTS), + FRQ_RNG_6m(2, FT2000_AM_TX_MODES, W(2), W(25), FT2000_VFO_ALL, FT2000_TX_ANTS), /* AM class */ + + RIG_FRNG_END, + }, + + .tuning_steps = { + {FT2000_SSB_CW_RX_MODES, Hz(10)}, /* Normal */ + {FT2000_SSB_CW_RX_MODES, Hz(100)}, /* Fast */ + + {FT2000_AM_RX_MODES, Hz(100)}, /* Normal */ + {FT2000_AM_RX_MODES, kHz(1)}, /* Fast */ + + {FT2000_FM_RX_MODES, Hz(100)}, /* Normal */ + {FT2000_FM_RX_MODES, kHz(1)}, /* Fast */ + + RIG_TS_END, + + }, + + /* mode/filter list, .remember = order matters! */ + .filters = { + {FT2000_SSB_CW_RX_MODES, kHz(2.4)}, /* standard SSB/CW filter bandwidth */ + {RIG_MODE_CW, kHz(0.5)}, /* CW filter with narrow selection (must be installed!) */ + {RIG_MODE_AM, kHz(6)}, /* normal AM filter */ + {RIG_MODE_AM, kHz(2.4)}, /* AM filter with narrow selection (SSB filter switched in) */ + {FT2000_FM_RX_MODES, kHz(12)}, /* FM */ + + RIG_FLT_END, + }, + + .priv = NULL, + + .rig_init = newcat_init, + .rig_cleanup = newcat_cleanup, + .rig_open = newcat_open, /* port opened */ + .rig_close = newcat_close, /* port closed */ + + .set_freq = newcat_set_freq, + .get_freq = newcat_get_freq, + .set_mode = newcat_set_mode, + .get_mode = newcat_get_mode, + .set_vfo = newcat_set_vfo, + .get_vfo = newcat_get_vfo, + .set_ptt = newcat_set_ptt, + .get_ptt = newcat_get_ptt, + .set_split_vfo = newcat_set_split_vfo, + .get_split_vfo = newcat_get_split_vfo, + .set_rit = newcat_set_rit, + .get_rit = newcat_get_rit, + .set_xit = newcat_set_xit, + .get_xit = newcat_get_xit, + .set_ant = newcat_set_ant, + .get_ant = newcat_get_ant, + .get_func = newcat_get_func, + .set_func = newcat_set_func, + .get_level = newcat_get_level, + .set_level = newcat_set_level, + .get_mem = newcat_get_mem, + .set_mem = newcat_set_mem, + .vfo_op = newcat_vfo_op, + .get_info = newcat_get_info, + .power2mW = newcat_power2mW, + .mW2power = newcat_mW2power, +}; + diff --git a/yaesu/ft2000.h b/yaesu/ft2000.h new file mode 100644 index 000000000..a6f55b5fa --- /dev/null +++ b/yaesu/ft2000.h @@ -0,0 +1,128 @@ +/* + * hamlib - (C) Frank Singleton 2000 (javabear at users.sourceforge.net) + * + * ft2000.h - (C) Nate Bargmann 2007 (n0nb at arrl.net) + * (C) Stephane Fillod 2008 + * + * This shared library provides an API for communicating + * via serial interface to an FT-2000 using the "CAT" interface + * + * + * $Id: ft2000.h,v 1.1 2008-12-14 20:02:03 fillods Exp $ + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + + +#ifndef _FT2000_H +#define _FT2000_H 1 + +#if 0 +#define TRUE 1 +#define FALSE 0 +#define ON TRUE +#define OFF FALSE +#endif + +#define FT2000_VFO_ALL (RIG_VFO_A|RIG_VFO_B) + +/* Receiver caps */ + +#define FT2000_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ + RIG_MODE_RTTY|RIG_MODE_RTTYR|\ + RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM) + +#define FT2000_SSB_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ + RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB) +#define FT2000_AM_RX_MODES (RIG_MODE_AM) +#define FT2000_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM) + + +/* TRX caps */ + +#define FT2000_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_RTTY| \ + RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM) /* 100 W class */ +#define FT2000_AM_TX_MODES (RIG_MODE_AM) /* set 25W max */ + +/* TBC */ +#define FT2000_LEVELS (RIG_LEVEL_ATT|RIG_LEVEL_PREAMP|\ + RIG_LEVEL_ALC|RIG_LEVEL_RAWSTR|RIG_LEVEL_SWR|\ + RIG_LEVEL_RFPOWER|RIG_LEVEL_RF|RIG_LEVEL_SQL|\ + RIG_LEVEL_MICGAIN|RIG_LEVEL_IF|RIG_LEVEL_CWPITCH|\ + RIG_LEVEL_KEYSPD|RIG_LEVEL_AF|RIG_LEVEL_AGC|\ + RIG_LEVEL_METER|RIG_LEVEL_BKINDL|RIG_LEVEL_SQL|\ + RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_COMP|\ + RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR) + +/* TBC */ +#define FT2000_FUNCS (RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_LOCK|\ + RIG_FUNC_MON|RIG_FUNC_NB|RIG_FUNC_NR|RIG_FUNC_VOX|\ + RIG_FUNC_FBKIN|RIG_FUNC_COMP|RIG_FUNC_ANF|RIG_FUNC_MN) + +/* TBC */ +#define FT2000_VFO_OPS (RIG_OP_TUNE|RIG_OP_CPY|RIG_OP_XCHG|\ + RIG_OP_UP|RIG_OP_DOWN|RIG_OP_BAND_UP|RIG_OP_BAND_DOWN|\ + RIG_OP_TO_VFO|RIG_OP_FROM_VFO|RIG_OP_TOGGLE) + +/* TBC */ +#define FT2000_STR_CAL { 16, \ + { \ + { 0, -54 }, /* S0 */ \ + { 12, -48 }, /* S1 */ \ + { 27, -42 }, /* S2 */ \ + { 40, -36 }, /* S3 */ \ + { 55, -30 }, /* S4 */ \ + { 65, -24 }, /* S5 */ \ + { 80, -18 }, /* S6 */ \ + { 95, -12 }, /* S7 */ \ + { 112, -6 }, /* S8 */ \ + { 130, 0 }, /* S9 */ \ + { 150, 10 }, /* +10 */ \ + { 172, 20 }, /* +20 */ \ + { 190, 30 }, /* +30 */ \ + { 220, 40 }, /* +40 */ \ + { 240, 50 }, /* +50 */ \ + { 255, 60 }, /* +60 */ \ + } } + + +/* + * Other features (used by rig_caps) + * + */ + +#define FT2000_TX_ANTS (RIG_ANT_1|RIG_ANT_2) + +#define FT2000_MEM_CHNL_LENGTH 1 /* 0x10 P1 = 01 return size */ +#define FT2000_OP_DATA_LENGTH 19 /* 0x10 P1 = 03 return size */ +#define FT2000_VFO_DATA_LENGTH 18 /* 0x10 P1 = 03 return size -- A & B returned */ +#define FT2000_MEM_CHNL_DATA_LENGTH 19 /* 0x10 P1 = 04, P4 = 0x01-0x20 return size */ +#define FT2000_STATUS_FLAGS_LENGTH 5 /* 0xf7, 0xfa return size */ +#define FT2000_ALL_DATA_LENGTH 649 /* 0x10 P1 = 00 return size */ + +/* Timing values in mS */ + +#define FT2000_PACING_INTERVAL 5 +#define FT2000_PACING_DEFAULT_VALUE 0 +#define FT2000_WRITE_DELAY 50 + + +/* Delay sequential fast writes */ + +#define FT2000_POST_WRITE_DELAY 5 + +#endif /* _FT2000_H */ diff --git a/yaesu/ft9000.c b/yaesu/ft9000.c new file mode 100644 index 000000000..d248dfb74 --- /dev/null +++ b/yaesu/ft9000.c @@ -0,0 +1,190 @@ +/* + * hamlib - (C) Frank Singleton 9000 (javabear at users.sourceforge.net) + * + * ft9000.c - (C) Nate Bargmann 2007 (n0nb at arrl.net) + * (C) Stephane Fillod 2008 + * + * This shared library provides an API for communicating + * via serial interface to an FT-9000 using the "CAT" interface + * + * + * $Id: ft9000.c,v 1.1 2008-12-14 20:02:03 fillods Exp $ + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "hamlib/rig.h" +#include "bandplan.h" +#include "serial.h" +#include "misc.h" +#include "yaesu.h" +#include "newcat.h" +#include "ft9000.h" +#include "idx_builtin.h" +#include "tones.h" + +/* + * ft9000 rigs capabilities. + * Also this struct is READONLY! + * + */ + +const struct rig_caps ft9000_caps = { + .rig_model = RIG_MODEL_FT9000, + .model_name = "FTDX-9000", + .mfg_name = "Yaesu", + .version = NEWCAT_VER, + .copyright = "LGPL", + .status = RIG_STATUS_UNTESTED, + .rig_type = RIG_TYPE_TRANSCEIVER, + .ptt_type = RIG_PTT_RIG, + .dcd_type = RIG_DCD_NONE, + .port_type = RIG_PORT_SERIAL, + .serial_rate_min = 4800, /* Default rate per manual */ + .serial_rate_max = 38400, + .serial_data_bits = 8, + .serial_stop_bits = 1, /* Assumed since manual makes no mention */ + .serial_parity = RIG_PARITY_NONE, + .serial_handshake = RIG_HANDSHAKE_NONE, + .write_delay = FT9000_WRITE_DELAY, + .post_write_delay = FT9000_POST_WRITE_DELAY, + .timeout = 2000, + .retry = 0, + .has_get_func = FT9000_FUNCS, + .has_set_func = FT9000_FUNCS, + .has_get_level = FT9000_LEVELS, + .has_set_level = RIG_LEVEL_SET(FT9000_LEVELS), + .has_get_parm = RIG_PARM_NONE, + .has_set_parm = RIG_PARM_NONE, + .level_gran = { + [LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } }, + [LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } }, + }, + .ctcss_list = common_ctcss_list, + .dcs_list = NULL, + .preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */ + .attenuator = { 6, 12, 18, RIG_DBLST_END, }, + .max_rit = Hz(9999), + .max_xit = Hz(9999), + .max_ifshift = Hz(1000), + .vfo_ops = FT9000_VFO_OPS, + .targetable_vfo = RIG_TARGETABLE_FREQ, + .transceive = RIG_TRN_OFF, /* May enable later as the 9000 has an Auto Info command */ + .bank_qty = 0, + .chan_desc_sz = 0, + .str_cal = FT9000_STR_CAL, + .chan_list = { + /* TBC */ + { 0, 99, RIG_MTYPE_MEM, NEWCAT_MEM_CAP }, + { 100, 117, RIG_MTYPE_EDGE, NEWCAT_MEM_CAP }, /* two by two */ + RIG_CHAN_END, + }, + + .rx_range_list1 = { + /* General coverage + ham */ + {kHz(30), MHz(60), FT9000_ALL_RX_MODES, -1, -1, FT9000_VFO_ALL, FT9000_TX_ANTS|RIG_ANT_5}, + RIG_FRNG_END, + }, + + .tx_range_list1 = { + FRQ_RNG_HF(1, FT9000_OTHER_TX_MODES, W(5), W(400), FT9000_VFO_ALL, FT9000_TX_ANTS), + FRQ_RNG_HF(1, FT9000_AM_TX_MODES, W(2), W(100), FT9000_VFO_ALL, FT9000_TX_ANTS), /* AM class */ + FRQ_RNG_6m(1, FT9000_OTHER_TX_MODES, W(5), W(400), FT9000_VFO_ALL, FT9000_TX_ANTS), + FRQ_RNG_6m(1, FT9000_AM_TX_MODES, W(2), W(100), FT9000_VFO_ALL, FT9000_TX_ANTS), /* AM class */ + + RIG_FRNG_END, + }, + + .rx_range_list2 = { + {kHz(30), MHz(56), FT9000_ALL_RX_MODES, -1, -1, FT9000_VFO_ALL, FT9000_TX_ANTS|RIG_ANT_5}, + RIG_FRNG_END, + }, + + .tx_range_list2 = { + FRQ_RNG_HF(2, FT9000_OTHER_TX_MODES, W(5), W(400), FT9000_VFO_ALL, FT9000_TX_ANTS), + FRQ_RNG_HF(2, FT9000_AM_TX_MODES, W(2), W(100), FT9000_VFO_ALL, FT9000_TX_ANTS), /* AM class */ + FRQ_RNG_6m(2, FT9000_OTHER_TX_MODES, W(5), W(400), FT9000_VFO_ALL, FT9000_TX_ANTS), + FRQ_RNG_6m(2, FT9000_AM_TX_MODES, W(2), W(100), FT9000_VFO_ALL, FT9000_TX_ANTS), /* AM class */ + + RIG_FRNG_END, + }, + + .tuning_steps = { + {FT9000_SSB_CW_RX_MODES, Hz(10)}, /* Normal */ + {FT9000_SSB_CW_RX_MODES, Hz(100)}, /* Fast */ + + {FT9000_AM_RX_MODES, Hz(100)}, /* Normal */ + {FT9000_AM_RX_MODES, kHz(1)}, /* Fast */ + + {FT9000_FM_RX_MODES, Hz(100)}, /* Normal */ + {FT9000_FM_RX_MODES, kHz(1)}, /* Fast */ + + RIG_TS_END, + + }, + + /* mode/filter list, .remember = order matters! */ + .filters = { + {FT9000_SSB_CW_RX_MODES, kHz(2.4)}, /* standard SSB/CW filter bandwidth */ + {RIG_MODE_CW, kHz(0.5)}, /* CW filter with narrow selection (must be installed!) */ + {RIG_MODE_AM, kHz(6)}, /* normal AM filter */ + {RIG_MODE_AM, kHz(2.4)}, /* AM filter with narrow selection (SSB filter switched in) */ + {FT9000_FM_RX_MODES, kHz(12)}, /* FM */ + + RIG_FLT_END, + }, + + .priv = NULL, + + .rig_init = newcat_init, + .rig_cleanup = newcat_cleanup, + .rig_open = newcat_open, /* port opened */ + .rig_close = newcat_close, /* port closed */ + + .set_freq = newcat_set_freq, + .get_freq = newcat_get_freq, + .set_mode = newcat_set_mode, + .get_mode = newcat_get_mode, + .set_vfo = newcat_set_vfo, + .get_vfo = newcat_get_vfo, + .set_ptt = newcat_set_ptt, + .get_ptt = newcat_get_ptt, + .set_split_vfo = newcat_set_split_vfo, + .get_split_vfo = newcat_get_split_vfo, + .set_rit = newcat_set_rit, + .get_rit = newcat_get_rit, + .set_xit = newcat_set_xit, + .get_xit = newcat_get_xit, + .set_ant = newcat_set_ant, + .get_ant = newcat_get_ant, + .get_func = newcat_get_func, + .set_func = newcat_set_func, + .get_level = newcat_get_level, + .set_level = newcat_set_level, + .get_mem = newcat_get_mem, + .set_mem = newcat_set_mem, + .vfo_op = newcat_vfo_op, + .get_info = newcat_get_info, + .power2mW = newcat_power2mW, + .mW2power = newcat_mW2power, +}; + diff --git a/yaesu/ft9000.h b/yaesu/ft9000.h new file mode 100644 index 000000000..60ea118fc --- /dev/null +++ b/yaesu/ft9000.h @@ -0,0 +1,127 @@ +/* + * hamlib - (C) Frank Singleton 2000 (javabear at users.sourceforge.net) + * + * ft9000.h - (C) Nate Bargmann 2007 (n0nb at arrl.net) + * (C) Stephane Fillod 2008 + * + * This shared library provides an API for communicating + * via serial interface to an FT-9000 using the "CAT" interface + * + * + * $Id: ft9000.h,v 1.1 2008-12-14 20:02:03 fillods Exp $ + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + + +#ifndef _FT9000_H +#define _FT9000_H 1 + +#if 0 +#define TRUE 1 +#define FALSE 0 +#define ON TRUE +#define OFF FALSE +#endif + +#define FT9000_VFO_ALL (RIG_VFO_A|RIG_VFO_B) + +/* Receiver caps */ + +#define FT9000_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ + RIG_MODE_RTTY|RIG_MODE_RTTYR|\ + RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM) +#define FT9000_SSB_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ + RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB) +#define FT9000_AM_RX_MODES (RIG_MODE_AM) +#define FT9000_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM) + + +/* TRX caps */ + +#define FT9000_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_RTTY| \ + RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM) +#define FT9000_AM_TX_MODES (RIG_MODE_AM) + +/* TBC */ +#define FT9000_LEVELS (RIG_LEVEL_ATT|RIG_LEVEL_PREAMP|\ + RIG_LEVEL_ALC|RIG_LEVEL_RAWSTR|RIG_LEVEL_SWR|\ + RIG_LEVEL_RFPOWER|RIG_LEVEL_RF|RIG_LEVEL_SQL|\ + RIG_LEVEL_MICGAIN|RIG_LEVEL_IF|RIG_LEVEL_CWPITCH|\ + RIG_LEVEL_KEYSPD|RIG_LEVEL_AF|RIG_LEVEL_AGC|\ + RIG_LEVEL_METER|RIG_LEVEL_BKINDL|RIG_LEVEL_SQL|\ + RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_COMP|\ + RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR) + +/* TBC */ +#define FT9000_FUNCS (RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_LOCK|\ + RIG_FUNC_MON|RIG_FUNC_NB|RIG_FUNC_NR|RIG_FUNC_VOX|\ + RIG_FUNC_FBKIN|RIG_FUNC_COMP|RIG_FUNC_ANF|RIG_FUNC_MN) + +/* TBC */ +#define FT9000_VFO_OPS (RIG_OP_TUNE|RIG_OP_CPY|RIG_OP_XCHG|\ + RIG_OP_UP|RIG_OP_DOWN|RIG_OP_BAND_UP|RIG_OP_BAND_DOWN|\ + RIG_OP_TO_VFO|RIG_OP_FROM_VFO|RIG_OP_TOGGLE) + +/* TBC */ +#define FT9000_STR_CAL { 16, \ + { \ + { 0, -54 }, /* S0 */ \ + { 12, -48 }, /* S1 */ \ + { 27, -42 }, /* S2 */ \ + { 40, -36 }, /* S3 */ \ + { 55, -30 }, /* S4 */ \ + { 65, -24 }, /* S5 */ \ + { 80, -18 }, /* S6 */ \ + { 95, -12 }, /* S7 */ \ + { 112, -6 }, /* S8 */ \ + { 130, 0 }, /* S9 */ \ + { 150, 10 }, /* +10 */ \ + { 172, 20 }, /* +20 */ \ + { 190, 30 }, /* +30 */ \ + { 220, 40 }, /* +40 */ \ + { 240, 50 }, /* +50 */ \ + { 255, 60 }, /* +60 */ \ + } } + + +/* + * Other features (used by rig_caps) + * + */ + +#define FT9000_TX_ANTS (RIG_ANT_1|RIG_ANT_2|RIG_ANT_3|RIG_ANT_4) + +#define FT9000_MEM_CHNL_LENGTH 1 /* 0x10 P1 = 01 return size */ +#define FT9000_OP_DATA_LENGTH 19 /* 0x10 P1 = 03 return size */ +#define FT9000_VFO_DATA_LENGTH 18 /* 0x10 P1 = 03 return size -- A & B returned */ +#define FT9000_MEM_CHNL_DATA_LENGTH 19 /* 0x10 P1 = 04, P4 = 0x01-0x20 return size */ +#define FT9000_STATUS_FLAGS_LENGTH 5 /* 0xf7, 0xfa return size */ +#define FT9000_ALL_DATA_LENGTH 649 /* 0x10 P1 = 00 return size */ + +/* Timing values in mS */ + +#define FT9000_PACING_INTERVAL 5 +#define FT9000_PACING_DEFAULT_VALUE 0 +#define FT9000_WRITE_DELAY 50 + + +/* Delay sequential fast writes */ + +#define FT9000_POST_WRITE_DELAY 5 + +#endif /* _FT9000_H */ diff --git a/yaesu/yaesu.c b/yaesu/yaesu.c index 08634b94a..b384a9dbe 100644 --- a/yaesu/yaesu.c +++ b/yaesu/yaesu.c @@ -1,13 +1,13 @@ /* * hamlib - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com) * - * yaesu.c - (C) Stephane Fillod 2001-2005 + * yaesu.c - (C) Stephane Fillod 2001-2008 * * This shared library provides an API for communicating * via serial interface to a Yaesu rig * * - * $Id: yaesu.c,v 1.29 2008-11-01 16:38:46 fillods Exp $ + * $Id: yaesu.c,v 1.30 2008-12-14 20:02:03 fillods Exp $ * * * This library is free software; you can redistribute it and/or @@ -95,6 +95,8 @@ DECLARE_INITRIG_BACKEND(yaesu) rig_register(&ft1000mp_caps); rig_register(&ft1000mpmkv_caps); rig_register(&ft1000mpmkvfld_caps); + rig_register(&ft2000_caps); + rig_register(&ft9000_caps); rig_register(&frg100_caps); rig_register(&frg8800_caps); rig_register(&frg9600_caps); diff --git a/yaesu/yaesu.h b/yaesu/yaesu.h index 8895ba13f..b4bf2219b 100644 --- a/yaesu/yaesu.h +++ b/yaesu/yaesu.h @@ -2,11 +2,11 @@ * hamlib - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com) * * yaesu.h - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com) - * and Stephane Fillod 2001-2005 + * and Stephane Fillod 2001-2008 * * Common yaesu declarations for hamlib * - * $Id: yaesu.h,v 1.28 2008-09-22 21:32:38 fillods Exp $ + * $Id: yaesu.h,v 1.29 2008-12-14 20:02:03 fillods Exp $ * * * @@ -67,6 +67,8 @@ extern const struct rig_caps ft1000mp_caps; extern const struct rig_caps ft1000mpmkv_caps; extern const struct rig_caps ft1000mpmkvfld_caps; extern const struct rig_caps ft1000d_caps; +extern const struct rig_caps ft2000_caps; +extern const struct rig_caps ft9000_caps; extern const struct rig_caps frg100_caps; extern const struct rig_caps frg8800_caps; extern const struct rig_caps frg9600_caps;