mirror of
https://github.com/Hamlib/Hamlib.git
synced 2024-09-21 18:37:18 +00:00
Fixed S-meter reading to use calibration table since frontend always uses RAWSTR.
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@2272 7ae35d74-ebe9-4afe-98af-79ac388436b8
This commit is contained in:
parent
fc84856c22
commit
fb3307e466
133
yaesu/ft817.c
133
yaesu/ft817.c
@ -11,7 +11,7 @@
|
|||||||
* copied back and adopted for the FT-817.
|
* copied back and adopted for the FT-817.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* $Id: ft817.c,v 1.14 2006-10-07 15:51:38 csete Exp $
|
* $Id: ft817.c,v 1.15 2008-01-05 15:28:57 csete Exp $
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
@ -145,48 +145,68 @@ static const tone_t static_ft817_dcs_list[] = {
|
|||||||
#define FT817_VFO_ALL (RIG_VFO_A|RIG_VFO_B)
|
#define FT817_VFO_ALL (RIG_VFO_A|RIG_VFO_B)
|
||||||
#define FT817_ANTS 0
|
#define FT817_ANTS 0
|
||||||
|
|
||||||
|
#define FT817_STR_CAL { 16, \
|
||||||
|
{ \
|
||||||
|
{ 0x00, -54 }, /* S0 */ \
|
||||||
|
{ 0x01, -48 }, \
|
||||||
|
{ 0x02, -42 }, \
|
||||||
|
{ 0x03, -36 }, \
|
||||||
|
{ 0x04, -30 }, \
|
||||||
|
{ 0x05, -24 }, \
|
||||||
|
{ 0x06, -18 }, \
|
||||||
|
{ 0x07, -12 }, \
|
||||||
|
{ 0x08, -6 }, \
|
||||||
|
{ 0x09, 0 }, /* S9 */ \
|
||||||
|
{ 0x0A, 10 }, /* +10 */ \
|
||||||
|
{ 0x0B, 20 }, /* +20 */ \
|
||||||
|
{ 0x0C, 30 }, /* +30 */ \
|
||||||
|
{ 0x0D, 40 }, /* +40 */ \
|
||||||
|
{ 0x0E, 50 }, /* +50 */ \
|
||||||
|
{ 0x0F, 60 } /* +60 */ \
|
||||||
|
} }
|
||||||
|
|
||||||
const struct rig_caps ft817_caps = {
|
const struct rig_caps ft817_caps = {
|
||||||
.rig_model = RIG_MODEL_FT817,
|
.rig_model = RIG_MODEL_FT817,
|
||||||
.model_name = "FT-817",
|
.model_name = "FT-817",
|
||||||
.mfg_name = "Yaesu",
|
.mfg_name = "Yaesu",
|
||||||
.version = "0.3",
|
.version = "0.4",
|
||||||
.copyright = "LGPL",
|
.copyright = "LGPL",
|
||||||
.status = RIG_STATUS_BETA,
|
.status = RIG_STATUS_STABLE,
|
||||||
.rig_type = RIG_TYPE_TRANSCEIVER,
|
.rig_type = RIG_TYPE_TRANSCEIVER,
|
||||||
.ptt_type = RIG_PTT_RIG,
|
.ptt_type = RIG_PTT_RIG,
|
||||||
.dcd_type = RIG_DCD_RIG,
|
.dcd_type = RIG_DCD_RIG,
|
||||||
.port_type = RIG_PORT_SERIAL,
|
.port_type = RIG_PORT_SERIAL,
|
||||||
.serial_rate_min = 4800,
|
.serial_rate_min = 4800,
|
||||||
.serial_rate_max = 38400,
|
.serial_rate_max = 38400,
|
||||||
.serial_data_bits = 8,
|
.serial_data_bits = 8,
|
||||||
.serial_stop_bits = 2,
|
.serial_stop_bits = 2,
|
||||||
.serial_parity = RIG_PARITY_NONE,
|
.serial_parity = RIG_PARITY_NONE,
|
||||||
.serial_handshake = RIG_HANDSHAKE_NONE,
|
.serial_handshake = RIG_HANDSHAKE_NONE,
|
||||||
.write_delay = FT817_WRITE_DELAY,
|
.write_delay = FT817_WRITE_DELAY,
|
||||||
.post_write_delay = FT817_POST_WRITE_DELAY,
|
.post_write_delay = FT817_POST_WRITE_DELAY,
|
||||||
.timeout = FT817_TIMEOUT,
|
.timeout = FT817_TIMEOUT,
|
||||||
.retry = 0,
|
.retry = 0,
|
||||||
.has_get_func = RIG_FUNC_NONE,
|
.has_get_func = RIG_FUNC_NONE,
|
||||||
.has_set_func = RIG_FUNC_LOCK | RIG_FUNC_TONE | RIG_FUNC_TSQL,
|
.has_set_func = RIG_FUNC_LOCK | RIG_FUNC_TONE | RIG_FUNC_TSQL,
|
||||||
.has_get_level = RIG_LEVEL_STRENGTH | RIG_LEVEL_RAWSTR | RIG_LEVEL_RFPOWER,
|
.has_get_level = RIG_LEVEL_STRENGTH | RIG_LEVEL_RAWSTR | RIG_LEVEL_RFPOWER,
|
||||||
.has_set_level = RIG_LEVEL_NONE,
|
.has_set_level = RIG_LEVEL_NONE,
|
||||||
.has_get_parm = RIG_PARM_NONE,
|
.has_get_parm = RIG_PARM_NONE,
|
||||||
.has_set_parm = RIG_PARM_NONE,
|
.has_set_parm = RIG_PARM_NONE,
|
||||||
.level_gran = {}, /* granularity */
|
.level_gran = {}, /* granularity */
|
||||||
.parm_gran = {},
|
.parm_gran = {},
|
||||||
.ctcss_list = static_common_ctcss_list,
|
.ctcss_list = static_common_ctcss_list,
|
||||||
.dcs_list = static_ft817_dcs_list, /* only 104 out of 106 supported */
|
.dcs_list = static_ft817_dcs_list, /* only 104 out of 106 supported */
|
||||||
.preamp = { RIG_DBLST_END, },
|
.preamp = { RIG_DBLST_END, },
|
||||||
.attenuator = { RIG_DBLST_END, },
|
.attenuator = { RIG_DBLST_END, },
|
||||||
.max_rit = Hz(9990),
|
.max_rit = Hz(9990),
|
||||||
.max_xit = Hz(0),
|
.max_xit = Hz(0),
|
||||||
.max_ifshift = Hz(0),
|
.max_ifshift = Hz(0),
|
||||||
.vfo_ops = RIG_OP_TOGGLE,
|
.vfo_ops = RIG_OP_TOGGLE,
|
||||||
.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, },
|
.chan_list = { RIG_CHAN_END, },
|
||||||
|
|
||||||
.rx_range_list1 = {
|
.rx_range_list1 = {
|
||||||
{kHz(100),MHz(56), FT817_ALL_RX_MODES,-1,-1},
|
{kHz(100),MHz(56), FT817_ALL_RX_MODES,-1,-1},
|
||||||
@ -252,6 +272,8 @@ const struct rig_caps ft817_caps = {
|
|||||||
RIG_FLT_END,
|
RIG_FLT_END,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
.str_cal = FT817_STR_CAL,
|
||||||
|
|
||||||
.priv = NULL,
|
.priv = NULL,
|
||||||
.rig_init = ft817_init,
|
.rig_init = ft817_init,
|
||||||
.rig_cleanup = ft817_cleanup,
|
.rig_cleanup = ft817_cleanup,
|
||||||
@ -578,6 +600,8 @@ static int ft817_get_pometer_level(RIG *rig, value_t *val)
|
|||||||
return RIG_OK;
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* frontend will always use RAWSTR+cal_table */
|
||||||
static int ft817_get_smeter_level(RIG *rig, value_t *val)
|
static int ft817_get_smeter_level(RIG *rig, value_t *val)
|
||||||
{
|
{
|
||||||
struct ft817_priv_data *p = (struct ft817_priv_data *) rig->state.priv;
|
struct ft817_priv_data *p = (struct ft817_priv_data *) rig->state.priv;
|
||||||
@ -587,12 +611,31 @@ static int ft817_get_smeter_level(RIG *rig, value_t *val)
|
|||||||
if ((n = ft817_get_status(rig, FT817_NATIVE_CAT_GET_RX_STATUS)) < 0)
|
if ((n = ft817_get_status(rig, FT817_NATIVE_CAT_GET_RX_STATUS)) < 0)
|
||||||
return n;
|
return n;
|
||||||
|
|
||||||
n = (p->rx_status & 0x0F) - 9;
|
//n = (p->rx_status & 0x0F) - 9;
|
||||||
|
|
||||||
val->i = n * ((n > 0) ? 10 : 6);
|
//val->i = n * ((n > 0) ? 10 : 6);
|
||||||
|
|
||||||
|
/* S-meter value is returned in the lower 4 bits.
|
||||||
|
0x00 = S0 (-54dB)
|
||||||
|
0x01 = S1
|
||||||
|
0x02 = S2
|
||||||
|
...
|
||||||
|
0x09 = S9 (0dB)
|
||||||
|
0x0A = S9+10 (10dB)
|
||||||
|
0x0B = S9+20 and so on
|
||||||
|
*/
|
||||||
|
n = (p->rx_status & 0x0F);
|
||||||
|
|
||||||
|
if (n < 0x0A) {
|
||||||
|
n = (6*n)-54;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
val->i = 10*(n-9);
|
||||||
|
}
|
||||||
|
|
||||||
return RIG_OK;
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static int ft817_get_raw_smeter_level(RIG *rig, value_t *val)
|
static int ft817_get_raw_smeter_level(RIG *rig, value_t *val)
|
||||||
{
|
{
|
||||||
@ -617,7 +660,9 @@ int ft817_get_level (RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||||||
switch (level) {
|
switch (level) {
|
||||||
|
|
||||||
case RIG_LEVEL_STRENGTH:
|
case RIG_LEVEL_STRENGTH:
|
||||||
|
/* The front-end will always call for RAWSTR and use the cal_table
|
||||||
return ft817_get_smeter_level(rig, val);
|
return ft817_get_smeter_level(rig, val);
|
||||||
|
*/
|
||||||
|
|
||||||
case RIG_LEVEL_RAWSTR:
|
case RIG_LEVEL_RAWSTR:
|
||||||
return ft817_get_raw_smeter_level(rig, val);
|
return ft817_get_raw_smeter_level(rig, val);
|
||||||
|
Loading…
Reference in New Issue
Block a user