kopia lustrzana https://github.com/Hamlib/Hamlib
fix special LEVEL_ATT for IC7800
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@2736 7ae35d74-ebe9-4afe-98af-79ac388436b8Hamlib-1.2.10
rodzic
b487c49021
commit
50e361fa6c
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Hamlib CI-V backend - description of IC-7800 and variations
|
* Hamlib CI-V backend - description of IC-7800 and variations
|
||||||
* Copyright (c) 2004 by Stephane Fillod
|
* Copyright (c) 2009 by Stephane Fillod
|
||||||
*
|
*
|
||||||
* $Id: ic7800.c,v 1.5 2008-10-26 13:45:21 y32kn Exp $
|
* $Id: ic7800.c,v 1.5 2008-10-26 13:45:21 y32kn Exp $
|
||||||
*
|
*
|
||||||
|
@ -67,6 +67,9 @@
|
||||||
} }
|
} }
|
||||||
|
|
||||||
|
|
||||||
|
static int ic7800_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val);
|
||||||
|
static int ic7800_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IC-7800 rig capabilities.
|
* IC-7800 rig capabilities.
|
||||||
*
|
*
|
||||||
|
@ -83,7 +86,7 @@ const struct rig_caps ic7800_caps = {
|
||||||
.rig_model = RIG_MODEL_IC7800,
|
.rig_model = RIG_MODEL_IC7800,
|
||||||
.model_name = "IC-7800",
|
.model_name = "IC-7800",
|
||||||
.mfg_name = "Icom",
|
.mfg_name = "Icom",
|
||||||
.version = BACKEND_VER,
|
.version = BACKEND_VER ".1",
|
||||||
.copyright = "LGPL",
|
.copyright = "LGPL",
|
||||||
.status = RIG_STATUS_UNTESTED,
|
.status = RIG_STATUS_UNTESTED,
|
||||||
.rig_type = RIG_TYPE_TRANSCEIVER,
|
.rig_type = RIG_TYPE_TRANSCEIVER,
|
||||||
|
@ -193,8 +196,8 @@ const struct rig_caps ic7800_caps = {
|
||||||
.set_rit = icom_set_rit,
|
.set_rit = icom_set_rit,
|
||||||
|
|
||||||
.decode_event = icom_decode_event,
|
.decode_event = icom_decode_event,
|
||||||
.set_level = icom_set_level,
|
.set_level = ic7800_set_level,
|
||||||
.get_level = icom_get_level,
|
.get_level = ic7800_get_level,
|
||||||
.set_func = icom_set_func,
|
.set_func = icom_set_func,
|
||||||
.get_func = icom_get_func,
|
.get_func = icom_get_func,
|
||||||
.set_parm = icom_set_parm,
|
.set_parm = icom_set_parm,
|
||||||
|
@ -224,3 +227,47 @@ const struct rig_caps ic7800_caps = {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* IC-7800 has 0x11 command using index instead of backend's real dB value
|
||||||
|
*
|
||||||
|
* c.f. http://www.plicht.de/ekki/civ/civ-p42.html
|
||||||
|
*/
|
||||||
|
int ic7800_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (level == RIG_LEVEL_ATT && val.i != 0) {
|
||||||
|
/* Convert dB to index */
|
||||||
|
for (i=0; i < 7; i++) {
|
||||||
|
if (val.i == rig->state.attenuator[i]) {
|
||||||
|
val.i = i+1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* TODO: Should fail when not found? */
|
||||||
|
}
|
||||||
|
|
||||||
|
return icom_set_level(rig, vfo, level, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* IC-7800 has 0x11 command using index instead of backend's real dB value
|
||||||
|
*/
|
||||||
|
int ic7800_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = icom_get_level(rig, vfo, level, val);
|
||||||
|
if (ret != RIG_OK)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
/* Convert index to dB
|
||||||
|
* Rem: ATT index 0 means attenuator Off
|
||||||
|
*/
|
||||||
|
if (level == RIG_LEVEL_ATT && val->i > 0 && val->i <= 7)
|
||||||
|
val->i = rig->state.attenuator[val->i - 1];
|
||||||
|
|
||||||
|
return RIG_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue