Merge pull request #435 from mikaelnousiainen/yaesu-ft991-and-ftdx5000-fixes

Yaesu newcat backend fixes for multiple rigs
pull/436/head
Michael Black 2020-11-08 07:31:38 -06:00 zatwierdzone przez GitHub
commit 78b469d193
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
21 zmienionych plików z 1676 dodań i 597 usunięć

Wyświetl plik

@ -495,7 +495,7 @@ typedef unsigned int vfo_t;
* \brief Macro for bandpass to be set to normal
* \def RIG_PASSBAND_NORMAL
*/
#define RIG_PASSBAND_NORMAL s_Hz(0) // was 0 but collided with Yasue SH00; capability
#define RIG_PASSBAND_NORMAL s_Hz(0) // was 0 but collided with Yaesu SH00; capability
/**
* \brief Macro for bandpass to be left alone

Wyświetl plik

@ -112,14 +112,16 @@ const struct rig_caps ftdx1200_caps =
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } },
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 4000 }, .step = { .i = 10 } },
},
.ctcss_list = common_ctcss_list,
.dcs_list = NULL,
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
.preamp = { 10, 20, RIG_DBLST_END, },
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
.max_rit = Hz(9999),
.max_xit = Hz(9999),
.max_ifshift = Hz(1000),
.max_ifshift = Hz(1200),
.vfo_ops = FTDX1200_VFO_OPS,
.targetable_vfo = RIG_TARGETABLE_FREQ,
.transceive = RIG_TRN_OFF, /* May enable later as the 1200 has an Auto Info command */
@ -172,12 +174,11 @@ const struct rig_caps ftdx1200_caps =
{FTDX1200_FM_RX_MODES, kHz(1)}, /* Fast */
RIG_TS_END,
},
/* mode/filter list, .remember = order matters! */
.filters = {
{FTDX1200_CW_RTTY_PKT_RX_MODES, Hz(2400)}, /* Normal CW, RTTY, PKT/USER */
{FTDX1200_CW_RTTY_PKT_RX_MODES, Hz(1800)}, /* Normal CW, RTTY, PKT/USER */
{FTDX1200_CW_RTTY_PKT_RX_MODES, Hz(500)}, /* Narrow CW, RTTY, PKT/USER */
{FTDX1200_CW_RTTY_PKT_RX_MODES, Hz(2400)}, /* Wide CW, RTTY, PKT/USER */
{RIG_MODE_SSB, Hz(2400)}, /* Normal SSB */
@ -185,8 +186,10 @@ const struct rig_caps ftdx1200_caps =
{RIG_MODE_SSB, Hz(4000)}, /* Wide SSB */
{RIG_MODE_AM, Hz(9000)}, /* Normal AM */
{RIG_MODE_AM, Hz(6000)}, /* Narrow AM */
{FTDX1200_FM_RX_MODES, Hz(12000)}, /* Normal FM */
{FTDX1200_FM_RX_MODES, Hz(8000)}, /* Narrow FM */
{FTDX1200_FM_WIDE_RX_MODES, Hz(16000)}, /* Normal FM */
{FTDX1200_FM_WIDE_RX_MODES, Hz(9000)}, /* Narrow FM */
{RIG_MODE_FMN, Hz(9000)}, /* Narrow FM */
{FTDX1200_CW_RTTY_PKT_RX_MODES | RIG_MODE_SSB, RIG_FLT_ANY},
RIG_FLT_END,
},

Wyświetl plik

@ -34,12 +34,13 @@
/* Receiver caps */
#define FTDX1200_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|RIG_MODE_FM)
RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|RIG_MODE_FM|RIG_MODE_FMN)
#define FTDX1200_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 FTDX1200_AM_RX_MODES (RIG_MODE_AM)
#define FTDX1200_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM)
#define FTDX1200_FM_WIDE_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM)
#define FTDX1200_FM_RX_MODES (FTDX1200_FM_WIDE_RX_MODES|RIG_MODE_FMN)
#define FTDX1200_CW_RTTY_PKT_RX_MODES (RIG_MODE_RTTY|RIG_MODE_RTTYR|\
RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|RIG_MODE_CW|RIG_MODE_CWR)

Wyświetl plik

@ -40,12 +40,49 @@
#include "idx_builtin.h"
#include "tones.h"
/*
* ft2000 rigs capabilities.
* Also this struct is READONLY!
*
*/
const struct newcat_priv_caps ft2000_priv_caps =
{
.roofing_filter_count = 7,
.roofing_filters =
{
// The index must match ext level combo index
{ .index = 0, .set_value = '0', .get_value = 0, .width = 15000, .optional = 0 },
{ .index = 1, .set_value = '1', .get_value = '1', .width = 15000, .optional = 0 },
{ .index = 2, .set_value = '2', .get_value = '2', .width = 6000, .optional = 0 },
{ .index = 3, .set_value = '3', .get_value = '3', .width = 3000, .optional = 0 },
{ .index = 4, .set_value = 0, .get_value = '4', .width = 15000, .optional = 0 },
{ .index = 5, .set_value = 0, .get_value = '5', .width = 6000, .optional = 0 },
{ .index = 6, .set_value = 0, .get_value = '6', .width = 3000, .optional = 0 },
}
};
const struct confparams ft2000_ext_levels[] =
{
{
TOK_ROOFING_FILTER,
"ROOFINGFILTER",
"Roofing filter",
"Roofing filter",
NULL,
RIG_CONF_COMBO,
{ .c = { .combostr = {
"AUTO", "15 kHz", "6 kHz", "3 kHz",
"AUTO - 15 kHz", "AUTO - 6 kHz", "AUTO - 3 kHz",
NULL }
} }
},
{ RIG_CONF_END, NULL, }
};
int ft2000_ext_tokens[] =
{
TOK_ROOFING_FILTER, TOK_BACKEND_NONE
};
/*
* FT-2000 rig capabilities
*/
const struct rig_caps ft2000_caps =
{
RIG_MODEL(RIG_MODEL_FT2000),
@ -78,10 +115,12 @@ const struct rig_caps ft2000_caps =
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 4000 }, .step = { .i = 10 } },
},
.ctcss_list = common_ctcss_list,
.dcs_list = NULL,
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
.preamp = { 10, 17, RIG_DBLST_END, },
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
.max_rit = Hz(9999),
.max_xit = Hz(9999),
@ -138,7 +177,6 @@ const struct rig_caps ft2000_caps =
{FT2000_FM_RX_MODES, kHz(1)}, /* Fast */
RIG_TS_END,
},
/* mode/filter list, .remember = order matters! */
@ -157,7 +195,10 @@ const struct rig_caps ft2000_caps =
RIG_FLT_END,
},
.priv = NULL,
.ext_tokens = ft2000_ext_tokens,
.extlevels = ft2000_ext_levels,
.priv = &ft2000_priv_caps,
.rig_init = newcat_init,
.rig_cleanup = newcat_cleanup,
@ -207,5 +248,7 @@ const struct rig_caps ft2000_caps =
.get_trn = newcat_get_trn,
.set_channel = newcat_set_channel,
.get_channel = newcat_get_channel,
.set_ext_level = newcat_set_ext_level,
.get_ext_level = newcat_get_ext_level,
};

Wyświetl plik

@ -115,11 +115,13 @@ const struct rig_caps ftdx3000_caps =
.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 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } },
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 4000 }, .step = { .i = 10 } },
},
.ctcss_list = common_ctcss_list,
.dcs_list = NULL,
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
.preamp = { 10, 17, RIG_DBLST_END, },
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
.max_rit = Hz(9999),
.max_xit = Hz(9999),
@ -138,7 +140,7 @@ const struct rig_caps ftdx3000_caps =
.rx_range_list1 = {
/* General coverage + ham, ANT_5 is RX only antenna */
{kHz(30), MHz(60), FTDX5000_ALL_RX_MODES, -1, -1, FTDX5000_VFO_ALL, FTDX5000_TX_ANTS | RIG_ANT_5, "USA"},
{kHz(30), MHz(60), FTDX5000_ALL_RX_MODES, -1, -1, FTDX5000_VFO_ALL, FTDX5000_TX_ANTS, "USA"},
RIG_FRNG_END,
},
@ -152,7 +154,7 @@ const struct rig_caps ftdx3000_caps =
},
.rx_range_list2 = {
{kHz(30), MHz(60), FTDX5000_ALL_RX_MODES, -1, -1, FTDX5000_VFO_ALL, FTDX5000_TX_ANTS | RIG_ANT_5, "EUR"},
{kHz(30), MHz(60), FTDX5000_ALL_RX_MODES, -1, -1, FTDX5000_VFO_ALL, FTDX5000_TX_ANTS, "EUR"},
RIG_FRNG_END,
},
@ -176,7 +178,6 @@ const struct rig_caps ftdx3000_caps =
{FTDX5000_FM_RX_MODES, kHz(1)}, /* Fast */
RIG_TS_END,
},
/* mode/filter list, .remember = order matters! */
@ -184,13 +185,14 @@ const struct rig_caps ftdx3000_caps =
{FTDX5000_CW_RTTY_PKT_RX_MODES, Hz(1800)}, /* Normal CW, RTTY, PKT/USER */
{FTDX5000_CW_RTTY_PKT_RX_MODES, Hz(500)}, /* Narrow CW, RTTY, PKT/USER */
{FTDX5000_CW_RTTY_PKT_RX_MODES, Hz(2400)}, /* Wide CW, RTTY, PKT/USER */
{RIG_MODE_SSB, Hz(2400)}, /* Normal SSB */
{RIG_MODE_SSB, Hz(1800)}, /* Narrow SSB */
{RIG_MODE_SSB, Hz(3000)}, /* Wide SSB */
{RIG_MODE_AM, Hz(9000)}, /* Normal AM */
{RIG_MODE_AM, Hz(6000)}, /* Narrow AM */
{FTDX5000_FM_RX_MODES, Hz(15000)}, /* Normal FM */
{FTDX5000_FM_RX_MODES, Hz(8000)}, /* Narrow FM */
{RIG_MODE_SSB, Hz(2400)}, /* Normal SSB */
{RIG_MODE_SSB, Hz(1800)}, /* Narrow SSB */
{RIG_MODE_SSB, Hz(4000)}, /* Wide SSB */
{FTDX5000_AM_RX_MODES, Hz(9000)}, /* Normal AM */
{FTDX5000_AM_RX_MODES, Hz(6000)}, /* Narrow AM */
{FTDX5000_FM_RX_MODES, Hz(16000)}, /* Normal FM */
{FTDX5000_FM_RX_MODES, Hz(9000)}, /* Narrow FM */
{FTDX5000_CW_RTTY_PKT_RX_MODES | RIG_MODE_SSB, RIG_FLT_ANY},
RIG_FLT_END,
},

Wyświetl plik

@ -77,11 +77,13 @@ const struct rig_caps ft450_caps =
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_CWPITCH] = { .min = { .i = 400 }, .max = { .i = 800 }, .step = { .i = 100 } },
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 4000 }, .step = { .i = 10 } },
},
.ctcss_list = common_ctcss_list,
.dcs_list = NULL,
.preamp = { 10, RIG_DBLST_END, }, /* TBC */
.attenuator = { 18, RIG_DBLST_END, }, /* TBC */
.preamp = { 10, RIG_DBLST_END, }, /* TBC: Not specified in manual */
.attenuator = { 20, RIG_DBLST_END, },
.max_rit = Hz(9999),
.max_xit = Hz(0),
.max_ifshift = Hz(1000),

Wyświetl plik

@ -110,11 +110,13 @@ const struct rig_caps ftdx5000_caps =
.level_gran = {
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } },
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 4000 }, .step = { .i = 10 } },
},
.ctcss_list = common_ctcss_list,
.dcs_list = NULL,
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC: Not specified in manual */
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
.max_rit = Hz(9999),
.max_xit = Hz(9999),
@ -171,21 +173,21 @@ const struct rig_caps ftdx5000_caps =
{FTDX5000_FM_RX_MODES, kHz(1)}, /* Fast */
RIG_TS_END,
},
/* mode/filter list, .remember = order matters! */
.filters = {
{FTDX5000_CW_RTTY_PKT_RX_MODES, Hz(1800)}, /* Normal CW, RTTY, PKT/USER */
{FTDX5000_CW_RTTY_PKT_RX_MODES, Hz(1700)}, /* Normal CW, RTTY, PKT/USER */
{FTDX5000_CW_RTTY_PKT_RX_MODES, Hz(500)}, /* Narrow CW, RTTY, PKT/USER */
{FTDX5000_CW_RTTY_PKT_RX_MODES, Hz(2400)}, /* Wide CW, RTTY, PKT/USER */
{RIG_MODE_SSB, Hz(2400)}, /* Normal SSB */
{RIG_MODE_SSB, Hz(1800)}, /* Narrow SSB */
{RIG_MODE_SSB, Hz(3000)}, /* Wide SSB */
{RIG_MODE_AM, Hz(9000)}, /* Normal AM */
{RIG_MODE_AM, Hz(6000)}, /* Narrow AM */
{FTDX5000_FM_RX_MODES, Hz(15000)}, /* Normal FM */
{FTDX5000_FM_RX_MODES, Hz(8000)}, /* Narrow FM */
{RIG_MODE_SSB, Hz(4000)}, /* Wide SSB */
{FTDX5000_AM_RX_MODES, Hz(9000)}, /* Normal AM */
{FTDX5000_AM_RX_MODES, Hz(6000)}, /* Narrow AM */
{FTDX5000_FM_RX_MODES, Hz(16000)}, /* Normal FM */
{FTDX5000_FM_RX_MODES, Hz(9000)}, /* Narrow FM */
{FTDX5000_CW_RTTY_PKT_RX_MODES | RIG_MODE_SSB, RIG_FLT_ANY},
RIG_FLT_END,
},

Wyświetl plik

@ -32,13 +32,13 @@
/* Receiver caps */
#define FTDX5000_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\
#define FTDX5000_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_AMN|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\
RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|\
RIG_MODE_FM|RIG_MODE_FMN)
#define FTDX5000_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 FTDX5000_AM_RX_MODES (RIG_MODE_AM)
#define FTDX5000_AM_RX_MODES (RIG_MODE_AM|RIG_MODE_AMN)
#define FTDX5000_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_FMN)
#define FTDX5000_CW_RTTY_PKT_RX_MODES (RIG_MODE_RTTY|RIG_MODE_RTTYR|\
RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|RIG_MODE_CW|RIG_MODE_CWR)
@ -47,7 +47,7 @@
#define FTDX5000_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_RTTY| \
RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_FMN) /* 100 W class */
#define FTDX5000_AM_TX_MODES (RIG_MODE_AM) /* set 25W max */
#define FTDX5000_AM_TX_MODES (RIG_MODE_AM|RIG_MODE_AMN) /* set 25W max */
/* TBC */
#define FTDX5000_LEVELS (RIG_LEVEL_ATT|RIG_LEVEL_PREAMP|\
@ -100,7 +100,7 @@
*
*/
#define FTDX5000_TX_ANTS (RIG_ANT_1|RIG_ANT_2)
#define FTDX5000_TX_ANTS (RIG_ANT_1|RIG_ANT_2|RIG_ANT_3|RIG_ANT_4)
#define FTDX5000_MEM_CHNL_LENGTH 1 /* 0x10 P1 = 01 return size */
#define FTDX5000_OP_DATA_LENGTH 19 /* 0x10 P1 = 03 return size */

Wyświetl plik

@ -77,14 +77,16 @@ const struct rig_caps ft891_caps =
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 3200 }, .step = { .i = 10 } },
},
.ctcss_list = common_ctcss_list,
.dcs_list = NULL,
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
.preamp = { 10, RIG_DBLST_END, }, /* TBC */
.attenuator = { 12, RIG_DBLST_END, },
.max_rit = Hz(9999),
.max_xit = Hz(9999),
.max_ifshift = Hz(1000),
.max_ifshift = Hz(1200),
.vfo_ops = FT891_VFO_OPS,
.targetable_vfo = RIG_TARGETABLE_FREQ,
.transceive = RIG_TRN_OFF, /* May enable later as the 950 has an Auto Info command */
@ -170,6 +172,7 @@ const struct rig_caps ft891_caps =
{RIG_MODE_SSB, Hz(600)}, /* SSB */
{RIG_MODE_SSB, Hz(400)}, /* SSB */
{RIG_MODE_SSB, Hz(200)}, /* SSB */
{FT891_CW_RTTY_PKT_RX_MODES | RIG_MODE_SSB, RIG_FLT_ANY },
{RIG_MODE_AM, Hz(9000)}, /* Normal AM */
{RIG_MODE_AM, Hz(6000)}, /* Narrow AM */
{FT891_FM_RX_MODES, Hz(16000)}, /* Normal FM */
@ -200,8 +203,6 @@ const struct rig_caps ft891_caps =
.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,

Wyświetl plik

@ -95,7 +95,7 @@
*
*/
#define FT891_ANTS (RIG_ANT_1|RIG_ANT_2)
#define FT891_ANTS (RIG_ANT_CURR)
#define FT891_MEM_CHNL_LENGTH 1 /* 0x10 P1 = 01 return size */
#define FT891_OP_DATA_LENGTH 19 /* 0x10 P1 = 03 return size */

Wyświetl plik

@ -78,11 +78,13 @@ const struct rig_caps ft9000_caps =
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 3000 }, .step = { .i = 10 } },
},
.ctcss_list = common_ctcss_list,
.dcs_list = NULL,
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
.preamp = { 10, RIG_DBLST_END, }, /* TBC: Not specified in manual */
.attenuator = { RIG_DBLST_END, },
.max_rit = Hz(9999),
.max_xit = Hz(9999),
.max_ifshift = Hz(1000),

Wyświetl plik

@ -68,14 +68,13 @@
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|RIG_LEVEL_NOTCHF)
RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF|RIG_LEVEL_MONITOR_GAIN)
/* 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|\
RIG_FUNC_RIT|RIG_FUNC_XIT\
)
RIG_FUNC_NB|RIG_FUNC_NR|RIG_FUNC_VOX|\
RIG_FUNC_FBKIN|RIG_FUNC_COMP|RIG_FUNC_ANF|\
RIG_FUNC_RIT|RIG_FUNC_XIT)
/* TBC */
#define FT9000_VFO_OPS (RIG_OP_TUNE|RIG_OP_CPY|RIG_OP_XCHG|\

Wyświetl plik

@ -25,7 +25,6 @@
*
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@ -39,12 +38,48 @@
#include "ft950.h"
#include "idx_builtin.h"
/*
* ft950 rigs capabilities.
* Also this struct is READONLY!
*
*/
const struct newcat_priv_caps ft950_priv_caps =
{
.roofing_filter_count = 7,
.roofing_filters =
{
// The index must match ext level combo index
{ .index = 0, .set_value = '0', .get_value = 0, .width = 15000, .optional = 0 },
{ .index = 1, .set_value = '1', .get_value = '1', .width = 15000, .optional = 0 },
{ .index = 2, .set_value = '2', .get_value = '2', .width = 6000, .optional = 0 },
{ .index = 3, .set_value = '3', .get_value = '3', .width = 3000, .optional = 0 },
{ .index = 4, .set_value = 0, .get_value = '4', .width = 15000, .optional = 0 },
{ .index = 5, .set_value = 0, .get_value = '5', .width = 6000, .optional = 0 },
{ .index = 6, .set_value = 0, .get_value = '6', .width = 3000, .optional = 0 },
}
};
const struct confparams ft950_ext_levels[] =
{
{
TOK_ROOFING_FILTER,
"ROOFINGFILTER",
"Roofing filter",
"Roofing filter",
NULL,
RIG_CONF_COMBO,
{ .c = { .combostr = {
"AUTO", "15 kHz", "6 kHz", "3 kHz",
"AUTO - 15 kHz", "AUTO - 6 kHz", "AUTO - 3 kHz",
NULL }
} }
},
{ RIG_CONF_END, NULL, }
};
int ft950_ext_tokens[] =
{
TOK_ROOFING_FILTER, TOK_BACKEND_NONE
};
/*
* FT-950 rig capabilities
*/
const struct rig_caps ft950_caps =
{
RIG_MODEL(RIG_MODEL_FT950),
@ -77,10 +112,12 @@ const struct rig_caps ft950_caps =
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 3000 }, .step = { .i = 10 } },
},
.ctcss_list = common_ctcss_list,
.dcs_list = NULL,
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
.preamp = { 10, 17, RIG_DBLST_END, },
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
.max_rit = Hz(9999),
.max_xit = Hz(9999),
@ -140,7 +177,6 @@ const struct rig_caps ft950_caps =
{FT950_FM_RX_MODES, kHz(1)}, /* Fast */
RIG_TS_END,
},
/* mode/filter list, .remember = order matters! */
@ -177,22 +213,25 @@ const struct rig_caps ft950_caps =
{RIG_MODE_SSB, Hz(200)}, /* SSB */
{RIG_MODE_AM, Hz(9000)}, /* Normal AM */
{RIG_MODE_AM, Hz(6000)}, /* Narrow AM */
{FT950_FM_RX_MODES, Hz(16000)}, /* Normal FM */
{FT950_FM_RX_MODES, Hz(9000)}, /* Narrow FM */
{FT950_FM_WIDE_RX_MODES, Hz(16000)}, /* Normal FM */
{FT950_FM_WIDE_RX_MODES, Hz(9000)}, /* Narrow FM */
{RIG_MODE_FMN, Hz(9000)}, /* Narrow FM */
{FT950_CW_RTTY_PKT_RX_MODES | RIG_MODE_SSB, RIG_FLT_ANY},
RIG_FLT_END,
},
.ext_tokens = ft950_ext_tokens,
.extlevels = ft950_ext_levels,
.priv = NULL, /* private data FIXME: */
.priv = &ft950_priv_caps,
.rig_init = newcat_init,
.rig_cleanup = newcat_cleanup,
.rig_open = newcat_open, /* port opened */
.rig_close = newcat_close, /* port closed */
.cfgparams = newcat_cfg_params,
.cfgparams = newcat_cfg_params,
.set_conf = newcat_set_conf,
.get_conf = newcat_get_conf,
.set_freq = newcat_set_freq,
@ -235,5 +274,7 @@ const struct rig_caps ft950_caps =
.get_trn = newcat_get_trn,
.set_channel = newcat_set_channel,
.get_channel = newcat_get_channel,
.set_ext_level = newcat_set_ext_level,
.get_ext_level = newcat_get_ext_level,
};

Wyświetl plik

@ -38,19 +38,20 @@
/* Receiver caps */
#define FT950_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)
RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|RIG_MODE_FMN)
#define FT950_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 FT950_AM_RX_MODES (RIG_MODE_AM)
#define FT950_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM)
#define FT950_FM_WIDE_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM)
#define FT950_FM_RX_MODES (FT950_FM_WIDE_RX_MODES|RIG_MODE_FMN)
#define FT950_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR)
#define FT950_CW_RTTY_PKT_RX_MODES (RIG_MODE_RTTY|RIG_MODE_RTTYR|\
RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|RIG_MODE_CW|RIG_MODE_CWR)
/* TRX caps */
#define FT950_OTHER_TX_MODES (RIG_MODE_CW| RIG_MODE_USB| RIG_MODE_LSB ) /* 100 W class */
#define FT950_AM_TX_MODES (RIG_MODE_AM ) /* set 25W max */
#define FT950_OTHER_TX_MODES (RIG_MODE_CW| RIG_MODE_USB| RIG_MODE_LSB) /* 100 W class */
#define FT950_AM_TX_MODES (RIG_MODE_AM) /* set 25W max */
#define FT950_LEVELS (RIG_LEVEL_ATT|RIG_LEVEL_PREAMP|\
RIG_LEVEL_ALC|RIG_LEVEL_RAWSTR|RIG_LEVEL_SWR|\

Wyświetl plik

@ -76,14 +76,16 @@ const struct rig_caps ft991_caps =
// cppcheck-suppress *
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 3200 }, .step = { .i = 10 } },
},
.ctcss_list = common_ctcss_list,
.dcs_list = common_dcs_list,
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
.preamp = { 10, 20, RIG_DBLST_END, },
.attenuator = { 12, RIG_DBLST_END, },
.max_rit = Hz(9999),
.max_xit = Hz(9999),
.max_ifshift = Hz(1000),
.max_ifshift = Hz(1200),
.vfo_ops = FT991_VFO_OPS,
.targetable_vfo = RIG_TARGETABLE_FREQ,
.transceive = RIG_TRN_OFF, /* May enable later as the 950 has an Auto Info command */
@ -161,10 +163,11 @@ const struct rig_caps ft991_caps =
{RIG_MODE_SSB, Hz(600)}, /* SSB */
{RIG_MODE_SSB, Hz(400)}, /* SSB */
{RIG_MODE_SSB, Hz(200)}, /* SSB */
{FT991_CW_RTTY_PKT_RX_MODES | RIG_MODE_SSB, RIG_FLT_ANY },
{RIG_MODE_AM, Hz(9000)}, /* Normal AM */
{RIG_MODE_AMN, Hz(6000)}, /* Narrow AM */
{FT991_FM_RX_MODES, Hz(16000)}, /* Normal FM */
{FT991_FM_RX_MODES, Hz(9000)}, /* Narrow FM */
{RIG_MODE_AMN, Hz(6000)}, /* Narrow AM */
{FT991_FM_WIDE_RX_MODES, Hz(16000)}, /* Normal FM */
{RIG_MODE_FMN, Hz(9000)}, /* Narrow FM */
RIG_FLT_END,
},
@ -192,8 +195,6 @@ const struct rig_caps ft991_caps =
.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,

Wyświetl plik

@ -38,7 +38,8 @@
#define FT991_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 FT991_AM_RX_MODES (RIG_MODE_AM|RIG_MODE_AMN)
#define FT991_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_FMN|RIG_MODE_C4FM)
#define FT991_FM_WIDE_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_C4FM)
#define FT991_FM_RX_MODES (FT991_FM_WIDE_RX_MODES|RIG_MODE_FMN)
#define FT991_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR)
#define FT991_CW_RTTY_PKT_RX_MODES (RIG_MODE_RTTY|RIG_MODE_RTTYR|\
RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|RIG_MODE_CW|RIG_MODE_CWR)

Wyświetl plik

@ -104,6 +104,8 @@ const struct rig_caps ftdx101d_caps =
.level_gran = {
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } },
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 3200 }, .step = { .i = 10 } },
},
.ctcss_list = common_ctcss_list,
.dcs_list = NULL,
@ -125,7 +127,7 @@ const struct rig_caps ftdx101d_caps =
.rx_range_list1 = {
/* General coverage + ham, ANT_5 is RX only antenna */
{kHz(30), MHz(60), FTDX101_ALL_RX_MODES, -1, -1, FTDX101_VFO_ALL, FTDX101_TX_ANTS | RIG_ANT_5, "USA"},
{kHz(30), MHz(60), FTDX101_ALL_RX_MODES, -1, -1, FTDX101_VFO_ALL, FTDX101_TX_ANTS, "USA"},
RIG_FRNG_END,
},
@ -139,7 +141,7 @@ const struct rig_caps ftdx101d_caps =
},
.rx_range_list2 = {
{kHz(30), MHz(60), FTDX101_ALL_RX_MODES, -1, -1, FTDX101_VFO_ALL, FTDX101_TX_ANTS | RIG_ANT_5, "EUR"},
{kHz(30), MHz(60), FTDX101_ALL_RX_MODES, -1, -1, FTDX101_VFO_ALL, FTDX101_TX_ANTS, "EUR"},
RIG_FRNG_END,
},

Wyświetl plik

@ -91,7 +91,7 @@
* Other features (used by rig_caps)
*/
#define FTDX101_TX_ANTS (RIG_ANT_1|RIG_ANT_2)
#define FTDX101_TX_ANTS (RIG_ANT_1|RIG_ANT_2|RIG_ANT_3)
#define FTDX101_MEM_CHNL_LENGTH 1 /* 0x10 P1 = 01 return size */
#define FTDX101_OP_DATA_LENGTH 19 /* 0x10 P1 = 03 return size */

Plik diff jest za duży Load Diff

Wyświetl plik

@ -49,6 +49,7 @@
#endif
#include <unistd.h>
#include <math.h>
#include <hamlib/rig.h>
#include <hamlib/amplifier.h>
@ -230,6 +231,48 @@ unsigned long long HAMLIB_API from_bcd_be(const unsigned char bcd_data[],
return f;
}
/**
* \brief Convert duration of one morse code dot (element) to milliseconds at the given speed.
* \param wpm morse code speed in words per minute
* \return double duration in milliseconds
*
* The morse code speed is calculated using the standard based on word PARIS.
*
* "If you send PARIS 5 times in a minute (5WPM) you have sent 250 elements (using correct spacing).
* 250 elements into 60 seconds per minute = 240 milliseconds per element."
*
* Source: http://kent-engineers.com/codespeed.htm
*/
double morse_code_dot_to_millis(int wpm)
{
return 240.0 * (5.0 / (double) wpm);
}
/**
* \brief Convert duration of tenths of morse code dots to milliseconds at the given speed.
* \param tenths_of_dots number of 1/10ths of dots
* \param wpm morse code speed in words per minute
* \return int duration in milliseconds
*
* The morse code speed is calculated using the standard based on word PARIS.
*/
int dot10ths_to_millis(int dot10ths, int wpm)
{
return ceil(morse_code_dot_to_millis(wpm) * (double) dot10ths / 10.0);
}
/**
* \brief Convert duration in milliseconds to tenths of morse code dots at the given speed.
* \param millis duration in milliseconds
* \param wpm morse code speed in words per minute
* \return int number of 1/10ths of dots
*
* The morse code speed is calculated using the standard based on word PARIS.
*/
int millis_to_dot10ths(int millis, int wpm)
{
return ceil(millis / morse_code_dot_to_millis(wpm) * 10.0);
}
//! @cond Doxygen_Suppress
#ifndef llabs

Wyświetl plik

@ -72,6 +72,10 @@ extern HAMLIB_EXPORT(unsigned long long) from_bcd_be(const unsigned char
bcd_data[],
unsigned bcd_len);
extern HAMLIB_EXPORT(double) morse_code_dot_to_millis(int wpm);
extern HAMLIB_EXPORT(int) dot10ths_to_millis(int dot10ths, int wpm);
extern HAMLIB_EXPORT(int) millis_to_dot10ths(int millis, int wpm);
extern HAMLIB_EXPORT(int) sprintf_freq(char *str, freq_t);
/* flag that determines if AI mode should be restored on exit on