kopia lustrzana https://github.com/Hamlib/Hamlib
2002-10-30
Update: Merged my changes in ft920.c, .h with Stephane's get_freq update. Will get and set frequency and not much else! git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1232 7ae35d74-ebe9-4afe-98af-79ac388436b8Hamlib-1.1.4
rodzic
42a8b5409c
commit
4dae87e285
186
yaesu/ft920.c
186
yaesu/ft920.c
|
@ -3,6 +3,7 @@
|
||||||
*
|
*
|
||||||
* ft920.c - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com)
|
* ft920.c - (C) Frank Singleton 2000 (vk3fcs@ix.netcom.com)
|
||||||
* (C) Nate Bargmann 2002 (n0nb@arrl.net)
|
* (C) Nate Bargmann 2002 (n0nb@arrl.net)
|
||||||
|
* (C) Stephane Fillod 2002 (fillods@users.sourceforge.net)
|
||||||
*
|
*
|
||||||
* This shared library provides an API for communicating
|
* This shared library provides an API for communicating
|
||||||
* via serial interface to an FT-920 using the "CAT" interface
|
* via serial interface to an FT-920 using the "CAT" interface
|
||||||
|
@ -11,7 +12,7 @@
|
||||||
* pages 86 to 90
|
* pages 86 to 90
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* $Id: ft920.c,v 1.2 2002-10-29 23:47:37 fillods Exp $
|
* $Id: ft920.c,v 1.3 2002-10-31 01:00:29 n0nb Exp $
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
|
@ -51,7 +52,7 @@
|
||||||
|
|
||||||
/* Private helper function prototypes */
|
/* Private helper function prototypes */
|
||||||
|
|
||||||
static int ft920_get_update_data(RIG *rig);
|
static int ft920_get_update_data(RIG *rig, unsigned char ci, unsigned char rl);
|
||||||
static int ft920_send_priv_cmd(RIG *rig, unsigned char ci);
|
static int ft920_send_priv_cmd(RIG *rig, unsigned char ci);
|
||||||
|
|
||||||
/* Native ft920 cmd set prototypes. These are READ ONLY as each */
|
/* Native ft920 cmd set prototypes. These are READ ONLY as each */
|
||||||
|
@ -65,17 +66,13 @@ static const yaesu_cmd_set_t ncmd[] = {
|
||||||
{ 1, { 0x00, 0x00, 0x00, 0x01, 0x01 } }, /* split = on */
|
{ 1, { 0x00, 0x00, 0x00, 0x01, 0x01 } }, /* split = on */
|
||||||
{ 0, { 0x00, 0x00, 0x00, 0x00, 0x02 } }, /* recall memory */
|
{ 0, { 0x00, 0x00, 0x00, 0x00, 0x02 } }, /* recall memory */
|
||||||
{ 0, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* memory operations */
|
{ 0, { 0x00, 0x00, 0x00, 0x00, 0x03 } }, /* memory operations */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x00, 0x04 } }, /* dial lock = off */
|
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x01, 0x04 } }, /* dial lock = on */
|
|
||||||
{ 1, { 0x00, 0x00, 0x00, 0x00, 0x05 } }, /* select vfo A */
|
{ 1, { 0x00, 0x00, 0x00, 0x00, 0x05 } }, /* select vfo A */
|
||||||
{ 1, { 0x00, 0x00, 0x00, 0x01, 0x05 } }, /* select vfo B */
|
{ 1, { 0x00, 0x00, 0x00, 0x01, 0x05 } }, /* select vfo B */
|
||||||
{ 0, { 0x00, 0x00, 0x00, 0x00, 0x06 } }, /* copy memory data to vfo A */
|
{ 0, { 0x00, 0x00, 0x00, 0x00, 0x06 } }, /* copy memory data to vfo A */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x00, 0x07 } }, /* up 500 khz */
|
/* { 0, { 0x00, 0x00, 0x00, 0x00, 0x09 } }, */ /* clarifier operations */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x00, 0x08 } }, /* down 500 khz */
|
/* { 1, { 0x00, 0x00, 0x00, 0x01, 0x09 } }, */ /* RX clarifier on */
|
||||||
// { 0, { 0x00, 0x00, 0x00, 0x00, 0x09 } }, /* clarifier operations */
|
/* { 1, { 0x00, 0x00, 0x00, 0x80, 0x09 } }, */ /* TX clarifier on */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x01, 0x09 } }, /* RX clarifier on */
|
/* { 1, { 0x00, 0x00, 0x00, 0x81, 0x09 } }, */ /* TX clarifier on */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x80, 0x09 } }, /* TX clarifier on */
|
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x81, 0x09 } }, /* TX clarifier on */
|
|
||||||
{ 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* set freq */
|
{ 0, { 0x00, 0x00, 0x00, 0x00, 0x0a } }, /* set freq */
|
||||||
|
|
||||||
{ 1, { 0x00, 0x00, 0x00, 0x00, 0x0c } }, /* vfo A mode set LSB */
|
{ 1, { 0x00, 0x00, 0x00, 0x00, 0x0c } }, /* vfo A mode set LSB */
|
||||||
|
@ -86,34 +83,31 @@ static const yaesu_cmd_set_t ncmd[] = {
|
||||||
{ 1, { 0x00, 0x00, 0x00, 0x05, 0x0c } }, /* vfo A mode set AM */
|
{ 1, { 0x00, 0x00, 0x00, 0x05, 0x0c } }, /* vfo A mode set AM */
|
||||||
{ 1, { 0x00, 0x00, 0x00, 0x06, 0x0c } }, /* vfo A mode set FM */
|
{ 1, { 0x00, 0x00, 0x00, 0x06, 0x0c } }, /* vfo A mode set FM */
|
||||||
{ 1, { 0x00, 0x00, 0x00, 0x07, 0x0c } }, /* vfo A mode set FMN */
|
{ 1, { 0x00, 0x00, 0x00, 0x07, 0x0c } }, /* vfo A mode set FMN */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x08, 0x0c } }, /* vfo A mode set DATA-LSB */
|
{ 1, { 0x00, 0x00, 0x00, 0x08, 0x0c } }, /* vfo A mode set DATA-LSB */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x09, 0x0c } }, /* vfo A mode set DATA-LSB */
|
{ 1, { 0x00, 0x00, 0x00, 0x09, 0x0c } }, /* vfo A mode set DATA-LSB */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x0a, 0x0c } }, /* vfo A mode set DATA-USB */
|
{ 1, { 0x00, 0x00, 0x00, 0x0a, 0x0c } }, /* vfo A mode set DATA-USB */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x0b, 0x0c } }, /* vfo A mode set DATA-FM */
|
{ 1, { 0x00, 0x00, 0x00, 0x0b, 0x0c } }, /* vfo A mode set DATA-FM */
|
||||||
|
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x80, 0x0c } }, /* vfo B mode set LSB */
|
/* { 1, { 0x00, 0x00, 0x00, 0x80, 0x0c } }, */ /* vfo B mode set LSB */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x81, 0x0c } }, /* vfo B mode set USB */
|
/* { 1, { 0x00, 0x00, 0x00, 0x81, 0x0c } }, */ /* vfo B mode set USB */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x82, 0x0c } }, /* vfo B mode set CW-USB */
|
/* { 1, { 0x00, 0x00, 0x00, 0x82, 0x0c } }, */ /* vfo B mode set CW-USB */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x83, 0x0c } }, /* vfo B mode set CW-LSB */
|
/* { 1, { 0x00, 0x00, 0x00, 0x83, 0x0c } }, */ /* vfo B mode set CW-LSB */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x84, 0x0c } }, /* vfo B mode set AM */
|
/* { 1, { 0x00, 0x00, 0x00, 0x84, 0x0c } }, */ /* vfo B mode set AM */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x85, 0x0c } }, /* vfo B mode set AM */
|
/* { 1, { 0x00, 0x00, 0x00, 0x85, 0x0c } }, */ /* vfo B mode set AM */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x86, 0x0c } }, /* vfo B mode set FM */
|
/* { 1, { 0x00, 0x00, 0x00, 0x86, 0x0c } }, */ /* vfo B mode set FM */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x87, 0x0c } }, /* vfo B mode set FMN */
|
/* { 1, { 0x00, 0x00, 0x00, 0x87, 0x0c } }, */ /* vfo B mode set FMN */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x88, 0x0c } }, /* vfo B mode set DATA-LSB */
|
/* { 1, { 0x00, 0x00, 0x00, 0x88, 0x0c } }, */ /* vfo B mode set DATA-LSB */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x89, 0x0c } }, /* vfo B mode set DATA-LSB */
|
/* { 1, { 0x00, 0x00, 0x00, 0x89, 0x0c } }, */ /* vfo B mode set DATA-LSB */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x8a, 0x0c } }, /* vfo B mode set DATA-USB */
|
/* { 1, { 0x00, 0x00, 0x00, 0x8a, 0x0c } }, */ /* vfo B mode set DATA-USB */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x8b, 0x0c } }, /* vfo B mode set DATA-FM */
|
/* { 1, { 0x00, 0x00, 0x00, 0x8b, 0x0c } }, */ /* vfo B mode set DATA-FM */
|
||||||
|
|
||||||
{ 1, { 0x00, 0x00, 0x00, 0x05, 0x0e } }, /* update interval/pacing --hard coded for now */
|
{ 0, { 0x00, 0x00, 0x00, 0x00, 0x0e } }, /* update interval/pacing */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x00, 0x0f } }, /* ptt off */
|
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x01, 0x0f } }, /* ptt on */
|
|
||||||
{ 1, { 0x00, 0x00, 0x00, 0x03, 0x10 } }, /* status update VFO A & B update (28 bytes) hard coded for now */
|
{ 1, { 0x00, 0x00, 0x00, 0x03, 0x10 } }, /* status update VFO A & B update (28 bytes) hard coded for now */
|
||||||
// { 0, { 0x00, 0x00, 0x00, 0x00, 0x70 } }, /* keyer commands */
|
{ 1, { 0x00, 0x00, 0x00, 0x01, 0xFA } }, /* Read status flags */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x00, 0x81 } }, /* tuner off */
|
/* { 0, { 0x00, 0x00, 0x00, 0x00, 0x70 } }, */ /* keyer commands */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x01, 0x81 } }, /* tuner on */
|
/* { 1, { 0x00, 0x00, 0x00, 0x00, 0x81 } }, */ /* tuner off */
|
||||||
// { 1, { 0x00, 0x00, 0x00, 0x00, 0x82 } }, /* tuner start*/
|
/* { 1, { 0x00, 0x00, 0x00, 0x01, 0x81 } }, */ /* tuner on */
|
||||||
|
/* { 1, { 0x00, 0x00, 0x00, 0x00, 0x82 } }, */ /* tuner start*/
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -150,10 +144,10 @@ static const yaesu_cmd_set_t ncmd[] = {
|
||||||
struct ft920_priv_data {
|
struct ft920_priv_data {
|
||||||
unsigned char pacing; /* pacing value */
|
unsigned char pacing; /* pacing value */
|
||||||
unsigned int read_update_delay; /* depends on pacing value */
|
unsigned int read_update_delay; /* depends on pacing value */
|
||||||
unsigned char current_vfo; /* active VFO from last cmd , can be either RIG_VFO_A or RIG_VFO_B only */
|
unsigned char current_vfo; /* active VFO from last cmd */
|
||||||
unsigned char p_cmd[YAESU_CMD_LENGTH]; /* private copy of 1 constructed CAT cmd */
|
unsigned char p_cmd[YAESU_CMD_LENGTH]; /* private copy of 1 constructed CAT cmd */
|
||||||
yaesu_cmd_set_t pcs[FT_920_NATIVE_SIZE]; /* private cmd set */
|
yaesu_cmd_set_t pcs[FT_920_NATIVE_SIZE]; /* private cmd set */
|
||||||
unsigned char update_data[FT920_STATUS_UPDATE_DATA_LENGTH]; /* returned data */
|
unsigned char update_data[FT920_VFO_UPDATE_DATA_LENGTH]; /* returned data--max value, some are less */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -166,7 +160,7 @@ const struct rig_caps ft920_caps = {
|
||||||
.rig_model = RIG_MODEL_FT920,
|
.rig_model = RIG_MODEL_FT920,
|
||||||
.model_name = "FT-920",
|
.model_name = "FT-920",
|
||||||
.mfg_name = "Yaesu",
|
.mfg_name = "Yaesu",
|
||||||
.version = "0.0.1",
|
.version = "0.0.2",
|
||||||
.copyright = "GPL",
|
.copyright = "GPL",
|
||||||
.status = RIG_STATUS_ALPHA,
|
.status = RIG_STATUS_ALPHA,
|
||||||
.rig_type = RIG_TYPE_TRANSCEIVER,
|
.rig_type = RIG_TYPE_TRANSCEIVER,
|
||||||
|
@ -194,80 +188,91 @@ const struct rig_caps ft920_caps = {
|
||||||
.preamp = { RIG_DBLST_END, },
|
.preamp = { RIG_DBLST_END, },
|
||||||
.attenuator = { RIG_DBLST_END, },
|
.attenuator = { RIG_DBLST_END, },
|
||||||
.max_rit = Hz(9999),
|
.max_rit = Hz(9999),
|
||||||
.max_xit = Hz(0),
|
.max_xit = Hz(9999),
|
||||||
.max_ifshift = Hz(0),
|
.max_ifshift = Hz(0),
|
||||||
.targetable_vfo = 0,
|
.targetable_vfo = 0,
|
||||||
.transceive = RIG_TRN_OFF,
|
.transceive = RIG_TRN_OFF,
|
||||||
.bank_qty = 0,
|
.bank_qty = 0,
|
||||||
.chan_desc_sz = 0,
|
.chan_desc_sz = 0,
|
||||||
.chan_list = { RIG_CHAN_END, }, /* FIXME: memory channel list:20 */
|
.chan_list = { RIG_CHAN_END, }, /* FIXME: memory channel list: 122 (!) */
|
||||||
|
|
||||||
.rx_range_list1 = { RIG_FRNG_END, }, /* FIXME: enter region 1 setting */
|
.rx_range_list1 = { RIG_FRNG_END, }, /* FIXME: enter region 1 setting */
|
||||||
|
|
||||||
.tx_range_list1 = { RIG_FRNG_END, },
|
.tx_range_list1 = { RIG_FRNG_END, },
|
||||||
|
|
||||||
.rx_range_list2 = { { .start = kHz(100), .end = 29999900,
|
.rx_range_list2 = {
|
||||||
.modes = FT920_ALL_RX_MODES,.low_power = -1,.high_power = -1},
|
{kHz(100), MHz(30), FT920_ALL_RX_MODES, -1, -1 }, /* General coverage + ham */
|
||||||
RIG_FRNG_END, }, /* rx range */
|
{MHz(48), MHz(56), FT920_ALL_RX_MODES, -1, -1 }, /* 6m! */
|
||||||
|
RIG_FRNG_END,
|
||||||
|
}, /* Region 2 rx ranges */
|
||||||
|
|
||||||
.tx_range_list2 = { {kHz(1500),1999900,FT920_OTHER_TX_MODES,.low_power = 5000,.high_power = 100000}, /* 100W class */
|
.tx_range_list2 = {
|
||||||
|
{MHz(1.8), MHz(1.99999), FT920_OTHER_TX_MODES, W(5), W(100)}, /* 100W class */
|
||||||
|
{MHz(1.8), MHz(1.99999), FT920_AM_TX_MODES, W(2), W(25)}, /* 25W class */
|
||||||
|
|
||||||
{.start = kHz(1500),.end = 1999900,FT920_AM_TX_MODES,.low_power = 2000,.high_power = 25000}, /* 25W class */
|
{MHz(3.5), MHz(3.99999), FT920_OTHER_TX_MODES, W(5), W(100)},
|
||||||
|
{MHz(3.5), MHz(3.99999), FT920_AM_TX_MODES, W(2), W(25)},
|
||||||
|
|
||||||
{.start = kHz(3500),3999900,FT920_OTHER_TX_MODES,5000,100000},
|
{MHz(7), MHz(7.29999), FT920_OTHER_TX_MODES, W(5), W(100)},
|
||||||
{.start = kHz(3500),3999900,FT920_AM_TX_MODES,2000,25000},
|
{MHz(7), MHz(7.29999), FT920_AM_TX_MODES, W(2), W(25)},
|
||||||
|
|
||||||
{.start = kHz(7000),7499900,FT920_OTHER_TX_MODES,5000,100000},
|
{MHz(10.1), MHz(10.14999), FT920_OTHER_TX_MODES, W(5), W(100)},
|
||||||
{.start = kHz(7000),7499900,FT920_AM_TX_MODES,2000,25000},
|
{MHz(10.1), MHz(10.14999), FT920_AM_TX_MODES, W(2), W(25)},
|
||||||
|
|
||||||
{.start = MHz(10),10499900,FT920_OTHER_TX_MODES,5000,100000},
|
{MHz(14), MHz(14.34999), FT920_OTHER_TX_MODES, W(5), W(100)},
|
||||||
{.start = MHz(10),10499900,FT920_AM_TX_MODES,2000,25000},
|
{MHz(14), MHz(14.34999), FT920_AM_TX_MODES, W(2), W(25)},
|
||||||
|
|
||||||
{.start = MHz(14),14499900,FT920_OTHER_TX_MODES,5000,100000},
|
{MHz(18.068), MHz(18.16799), FT920_OTHER_TX_MODES, W(5), W(100)},
|
||||||
{.start = MHz(14),14499900,FT920_AM_TX_MODES,2000,25000},
|
{MHz(18.068), MHz(18.16799), FT920_AM_TX_MODES, W(2), W(25)},
|
||||||
|
|
||||||
{.start = MHz(18),18499900,FT920_OTHER_TX_MODES,5000,100000},
|
{MHz(21), MHz(21.44999), FT920_OTHER_TX_MODES, W(5), W(100)},
|
||||||
{.start = MHz(18),18499900,FT920_AM_TX_MODES,2000,25000},
|
{MHz(21), MHz(21.44999), FT920_AM_TX_MODES, W(2), W(25)},
|
||||||
|
|
||||||
{.start = MHz(21),21499900,FT920_OTHER_TX_MODES,5000,100000},
|
{MHz(24.89), MHz(24.98999), FT920_OTHER_TX_MODES, W(5), W(100)},
|
||||||
{.start = MHz(21),21499900,FT920_AM_TX_MODES,2000,25000},
|
{MHz(24.89), MHz(24.98999), FT920_AM_TX_MODES, W(2), W(25)},
|
||||||
|
|
||||||
{.start = kHz(24500),24999900,FT920_OTHER_TX_MODES,5000,100000},
|
{MHz(28), MHz(29.69999), FT920_OTHER_TX_MODES, W(5), W(100)},
|
||||||
{.start = kHz(24500),24999900,FT920_AM_TX_MODES,2000,25000},
|
{MHz(28), MHz(29.69999), FT920_AM_TX_MODES, W(2), W(25)},
|
||||||
|
|
||||||
{.start = MHz(28),29999900,FT920_OTHER_TX_MODES,5000,100000},
|
{MHz(50), MHz(53.99999), FT920_OTHER_TX_MODES, W(5), W(100)},
|
||||||
{.start = MHz(28),29999900,FT920_AM_TX_MODES,2000,25000},
|
{MHz(50), MHz(53.99999), FT920_AM_TX_MODES, W(2), W(25)},
|
||||||
|
|
||||||
RIG_FRNG_END, },
|
RIG_FRNG_END,
|
||||||
|
}, /* region 2 TX ranges */
|
||||||
|
|
||||||
|
.tuning_steps = {
|
||||||
|
{FT920_SSB_CW_RX_MODES, Hz(10)}, /* Normal */
|
||||||
|
{FT920_SSB_CW_RX_MODES, Hz(100)}, /* Fast */
|
||||||
|
|
||||||
|
{FT920_AM_RX_MODES, Hz(100)}, /* Normal */
|
||||||
|
{FT920_AM_RX_MODES, kHz(1)}, /* Fast */
|
||||||
|
|
||||||
.tuning_steps = { {FT920_SSB_CW_RX_MODES,25}, /* fast off */
|
{FT920_FM_RX_MODES, Hz(100)}, /* Normal */
|
||||||
{FT920_SSB_CW_RX_MODES,2500}, /* fast on */
|
{FT920_FM_RX_MODES, kHz(1)}, /* Fast */
|
||||||
|
|
||||||
{FT920_AM_RX_MODES,kHz(1)}, /* fast off */
|
|
||||||
{FT920_AM_RX_MODES,kHz(10)}, /* fast on */
|
|
||||||
|
|
||||||
{FT920_FM_RX_MODES,kHz(5)}, /* fast off */
|
|
||||||
{FT920_FM_RX_MODES,12500}, /* fast on */
|
|
||||||
|
|
||||||
RIG_TS_END,
|
RIG_TS_END,
|
||||||
|
|
||||||
|
/* The FT-920 has a Fine tuning step which increments in 1 Hz steps
|
||||||
|
* for SSB_CW_RX_MODES, and 10 Hz steps for AM_RX_MODES and
|
||||||
|
* FM_RX_MODES. It doesn't appear that anything finer than 10 Hz
|
||||||
|
* is available through the CAT interface, however. -N0NB
|
||||||
|
*/
|
||||||
},
|
},
|
||||||
|
|
||||||
/* mode/filter list, .remember = order matters! */
|
/* mode/filter list, .remember = order matters! */
|
||||||
|
|
||||||
.filters = { {RIG_MODE_SSB, kHz(2.2)}, /* standard SSB filter bandwidth */
|
.filters = {
|
||||||
{RIG_MODE_CW, kHz(1.8)}, /* normal CW filter */
|
{RIG_MODE_SSB, kHz(2.4)}, /* standard SSB filter bandwidth */
|
||||||
{RIG_MODE_CW, kHz(0.5)}, /* CW filter with narrow selection */
|
{RIG_MODE_CW, kHz(2.4)}, /* normal CW filter */
|
||||||
{RIG_MODE_AM, kHz(6)}, /* normal AM filter */
|
{RIG_MODE_CW, kHz(0.5)}, /* CW filter with narrow selection (must be installed!) */
|
||||||
{RIG_MODE_AM, kHz(2.4)}, /* AM filter with narrow selection */
|
{RIG_MODE_AM, kHz(15)}, /* normal AM filter (stock radio has no AM filter!) */
|
||||||
{RIG_MODE_FM, kHz(8)}, /* FM with optional FM unit */
|
{RIG_MODE_AM, kHz(2.4)}, /* AM filter with narrow selection (SSB filter switched in) */
|
||||||
{RIG_MODE_WFM, kHz(19)}, /* WideFM, with optional FM unit. */
|
{RIG_MODE_FM, kHz(12)}, /* FM with optional FM unit */
|
||||||
|
{RIG_MODE_WFM, kHz(12)}, /* WideFM, with optional FM unit. */
|
||||||
|
|
||||||
RIG_FLT_END,
|
RIG_FLT_END,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
.priv = NULL, /* private data */
|
.priv = NULL, /* private data */
|
||||||
|
|
||||||
.rig_init = ft920_init,
|
.rig_init = ft920_init,
|
||||||
|
@ -280,10 +285,7 @@ const struct rig_caps ft920_caps = {
|
||||||
.set_mode = ft920_set_mode, /* set mode */
|
.set_mode = ft920_set_mode, /* set mode */
|
||||||
.get_mode = ft920_get_mode, /* get mode */
|
.get_mode = ft920_get_mode, /* get mode */
|
||||||
.set_vfo = ft920_set_vfo, /* set vfo */
|
.set_vfo = ft920_set_vfo, /* set vfo */
|
||||||
|
|
||||||
.get_vfo = ft920_get_vfo, /* get vfo */
|
.get_vfo = ft920_get_vfo, /* get vfo */
|
||||||
// .set_ptt = ft920_set_ptt, /* set ptt */
|
|
||||||
// .get_ptt = ft920_get_ptt, /* get ptt */
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -443,7 +445,7 @@ int ft920_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) {
|
||||||
|
|
||||||
priv = (struct ft920_priv_data*)rig->state.priv;
|
priv = (struct ft920_priv_data*)rig->state.priv;
|
||||||
|
|
||||||
ft920_get_update_data(rig); /* get whole shebang from rig */
|
ft920_get_update_data(rig, FT_920_NATIVE_VFO_UPDATE, FT920_VFO_UPDATE_DATA_LENGTH); /* get VFO record from rig*/
|
||||||
|
|
||||||
if (vfo == RIG_VFO_CURR )
|
if (vfo == RIG_VFO_CURR )
|
||||||
vfo = priv->current_vfo; /* from previous vfo cmd */
|
vfo = priv->current_vfo; /* from previous vfo cmd */
|
||||||
|
@ -498,7 +500,7 @@ int ft920_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width ) {
|
||||||
cmd_index = FT_920_NATIVE_MODE_SET_AMW;
|
cmd_index = FT_920_NATIVE_MODE_SET_AMW;
|
||||||
break;
|
break;
|
||||||
case RIG_MODE_CW:
|
case RIG_MODE_CW:
|
||||||
cmd_index = FT_920_NATIVE_MODE_SET_CWW;
|
cmd_index = FT_920_NATIVE_MODE_SET_CW_USB;
|
||||||
break;
|
break;
|
||||||
case RIG_MODE_USB:
|
case RIG_MODE_USB:
|
||||||
cmd_index = FT_920_NATIVE_MODE_SET_USB;
|
cmd_index = FT_920_NATIVE_MODE_SET_USB;
|
||||||
|
@ -571,7 +573,8 @@ int ft920_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) {
|
||||||
|
|
||||||
p = (struct ft920_priv_data*)rig->state.priv;
|
p = (struct ft920_priv_data*)rig->state.priv;
|
||||||
|
|
||||||
ft920_get_update_data(rig); /* get whole shebang from rig */
|
/* FIXME: wrong command for mode--is part of VFO record -N0NB */
|
||||||
|
ft920_get_update_data(rig, FT_920_NATIVE_UPDATE, FT920_STATUS_UPDATE_DATA_LENGTH);
|
||||||
|
|
||||||
mymode = p->update_data[FT920_SUMO_DISPLAYED_MODE];
|
mymode = p->update_data[FT920_SUMO_DISPLAYED_MODE];
|
||||||
mymode &= MODE_MASK; /* mask out bits 5 and 6 */
|
mymode &= MODE_MASK; /* mask out bits 5 and 6 */
|
||||||
|
@ -686,7 +689,8 @@ int ft920_get_vfo(RIG *rig, vfo_t *vfo) {
|
||||||
|
|
||||||
p = (struct ft920_priv_data*)rig->state.priv;
|
p = (struct ft920_priv_data*)rig->state.priv;
|
||||||
|
|
||||||
ft920_get_update_data(rig); /* get whole shebang from rig */
|
/* Get flags for VFO status */
|
||||||
|
ft920_get_update_data(rig, FT_920_NATIVE_UPDATE, FT920_STATUS_UPDATE_DATA_LENGTH);
|
||||||
|
|
||||||
status = p->update_data[FT920_SUMO_DISPLAYED_STATUS];
|
status = p->update_data[FT920_SUMO_DISPLAYED_STATUS];
|
||||||
status &= SF_VFOAB; /* check VFO bit*/
|
status &= SF_VFOAB; /* check VFO bit*/
|
||||||
|
@ -713,11 +717,15 @@ int ft920_get_vfo(RIG *rig, vfo_t *vfo) {
|
||||||
/*
|
/*
|
||||||
* private helper function. Retrieves update data from rig.
|
* private helper function. Retrieves update data from rig.
|
||||||
* using pacing value and buffer indicated in *priv struct.
|
* using pacing value and buffer indicated in *priv struct.
|
||||||
|
* Extended to be command agnostic as 920 has several ways to
|
||||||
|
* get data and several ways to return it.
|
||||||
*
|
*
|
||||||
* need to use this when doing ft920_get_* stuff
|
* need to use this when doing ft920_get_* stuff
|
||||||
|
*
|
||||||
|
* Variables: ci = command index, rl = read length of returned data
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int ft920_get_update_data(RIG *rig) {
|
static int ft920_get_update_data(RIG *rig, unsigned char ci, unsigned char rl) {
|
||||||
struct rig_state *rig_s;
|
struct rig_state *rig_s;
|
||||||
struct ft920_priv_data *p;
|
struct ft920_priv_data *p;
|
||||||
unsigned char *cmd; /* points to sequence to send */
|
unsigned char *cmd; /* points to sequence to send */
|
||||||
|
@ -744,11 +752,9 @@ static int ft920_get_update_data(RIG *rig) {
|
||||||
|
|
||||||
/* send UPDATE comand to fetch data*/
|
/* send UPDATE comand to fetch data*/
|
||||||
|
|
||||||
ft920_send_priv_cmd(rig,FT_920_NATIVE_UPDATE);
|
ft920_send_priv_cmd(rig, ci);
|
||||||
|
|
||||||
/* n = read_sleep(rig_s->fd,p->update_data, FT920_STATUS_UPDATE_DATA_LENGTH, FT920_DEFAULT_READ_TIMEOUT); */
|
n = read_block(&rig_s->rigport, p->update_data, rl);
|
||||||
n = read_block(&rig_s->rigport, p->update_data,
|
|
||||||
FT920_STATUS_UPDATE_DATA_LENGTH);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,14 @@
|
||||||
* hamlib - (C) Frank Singleton 2000 (vk3fcs@@ix.netcom.com)
|
* hamlib - (C) Frank Singleton 2000 (vk3fcs@@ix.netcom.com)
|
||||||
*
|
*
|
||||||
* ft920.h - (C) Frank Singleton 2000 (vk3fcs@@ix.netcom.com)
|
* ft920.h - (C) Frank Singleton 2000 (vk3fcs@@ix.netcom.com)
|
||||||
|
* (C) Nate Bargmann 2002 (n0nb@arrl.net)
|
||||||
|
* (C) Stephane Fillod 2002 (fillods@users.sourceforge.net)
|
||||||
|
*
|
||||||
* This shared library provides an API for communicating
|
* This shared library provides an API for communicating
|
||||||
* via serial interface to an FT-920 using the "CAT" interface
|
* via serial interface to an FT-920 using the "CAT" interface
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* $Id: ft920.h,v 1.2 2002-10-29 23:53:39 fillods Exp $
|
* $Id: ft920.h,v 1.3 2002-10-31 01:00:30 n0nb Exp $
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
|
@ -29,14 +32,15 @@
|
||||||
#ifndef _FT920_H
|
#ifndef _FT920_H
|
||||||
#define _FT920_H 1
|
#define _FT920_H 1
|
||||||
|
|
||||||
#define FT920_STATUS_UPDATE_DATA_LENGTH 28
|
#define FT920_STATUS_UPDATE_DATA_LENGTH 8 /* 0xfa return size */
|
||||||
|
#define FT920_VFO_UPDATE_DATA_LENGTH 28 /* 0x10 P1 = 03 return size */
|
||||||
|
|
||||||
#define FT920_PACING_INTERVAL 5
|
#define FT920_PACING_INTERVAL 5
|
||||||
#define FT920_PACING_DEFAULT_VALUE 0
|
#define FT920_PACING_DEFAULT_VALUE 1
|
||||||
#define FT920_WRITE_DELAY 50
|
#define FT920_WRITE_DELAY 50
|
||||||
|
|
||||||
|
|
||||||
/* Sequential fast writes confuse my FT920 without this delay */
|
/* Delay sequential fast writes */
|
||||||
|
|
||||||
#define FT920_POST_WRITE_DELAY 5
|
#define FT920_POST_WRITE_DELAY 5
|
||||||
|
|
||||||
|
@ -74,27 +78,24 @@ enum ft920_native_cmd_e {
|
||||||
FT_920_NATIVE_SPLIT_ON,
|
FT_920_NATIVE_SPLIT_ON,
|
||||||
FT_920_NATIVE_RECALL_MEM,
|
FT_920_NATIVE_RECALL_MEM,
|
||||||
FT_920_NATIVE_VFO_TO_MEM,
|
FT_920_NATIVE_VFO_TO_MEM,
|
||||||
// FT_920_NATIVE_DLOCK_OFF,
|
|
||||||
// FT_920_NATIVE_DLOCK_ON,
|
|
||||||
FT_920_NATIVE_VFO_A,
|
FT_920_NATIVE_VFO_A,
|
||||||
FT_920_NATIVE_VFO_B,
|
FT_920_NATIVE_VFO_B,
|
||||||
FT_920_NATIVE_M_TO_VFO,
|
FT_920_NATIVE_M_TO_VFO,
|
||||||
// FT_920_NATIVE_UP_500K,
|
|
||||||
// FT_920_NATIVE_DOWN_500K,
|
|
||||||
// FT_920_NATIVE_CLARIFY_OFF,
|
|
||||||
// FT_920_NATIVE_CLARIFY_ON,
|
|
||||||
FT_920_NATIVE_FREQ_SET,
|
FT_920_NATIVE_FREQ_SET,
|
||||||
FT_920_NATIVE_MODE_SET_LSB,
|
FT_920_NATIVE_MODE_SET_LSB,
|
||||||
FT_920_NATIVE_MODE_SET_USB,
|
FT_920_NATIVE_MODE_SET_USB,
|
||||||
FT_920_NATIVE_MODE_SET_CWW,
|
FT_920_NATIVE_MODE_SET_CW_USB,
|
||||||
FT_920_NATIVE_MODE_SET_CWN,
|
FT_920_NATIVE_MODE_SET_CW_LSB,
|
||||||
FT_920_NATIVE_MODE_SET_AMW,
|
FT_920_NATIVE_MODE_SET_AMW,
|
||||||
FT_920_NATIVE_MODE_SET_AMN,
|
FT_920_NATIVE_MODE_SET_AMN,
|
||||||
FT_920_NATIVE_MODE_SET_FMW,
|
FT_920_NATIVE_MODE_SET_FMW,
|
||||||
FT_920_NATIVE_MODE_SET_FMN,
|
FT_920_NATIVE_MODE_SET_FMN,
|
||||||
|
FT_920_NATIVE_MODE_SET_DATA_LSB,
|
||||||
|
FT_920_NATIVE_MODE_SET_DATA_LSB1,
|
||||||
|
FT_920_NATIVE_MODE_SET_DATA_USB,
|
||||||
|
FT_920_NATIVE_MODE_SET_DATA_FM,
|
||||||
FT_920_NATIVE_PACING,
|
FT_920_NATIVE_PACING,
|
||||||
// FT_920_NATIVE_PTT_OFF,
|
FT_920_NATIVE_VFO_UPDATE,
|
||||||
// FT_920_NATIVE_PTT_ON,
|
|
||||||
FT_920_NATIVE_UPDATE,
|
FT_920_NATIVE_UPDATE,
|
||||||
FT_920_NATIVE_SIZE /* end marker, value indicates number of */
|
FT_920_NATIVE_SIZE /* end marker, value indicates number of */
|
||||||
/* native cmd entries */
|
/* native cmd entries */
|
||||||
|
@ -191,10 +192,6 @@ int ft920_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width); /* get
|
||||||
int ft920_set_vfo(RIG *rig, vfo_t vfo); /* select vfo */
|
int ft920_set_vfo(RIG *rig, vfo_t vfo); /* select vfo */
|
||||||
int ft920_get_vfo(RIG *rig, vfo_t *vfo); /* get vfo */
|
int ft920_get_vfo(RIG *rig, vfo_t *vfo); /* get vfo */
|
||||||
|
|
||||||
// int ft920_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt);
|
|
||||||
// int ft920_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Below is leftovers of old interface. TODO
|
* Below is leftovers of old interface. TODO
|
||||||
|
|
Ładowanie…
Reference in New Issue