Patch ID:2845171 "Initial changes to get the AOR8000 working"

by JohnU (johncunderwood) 


git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@2730 7ae35d74-ebe9-4afe-98af-79ac388436b8
Hamlib-1.2.10
Stéphane Fillod, F8CFE 2009-09-14 21:22:59 +00:00
rodzic bbafe261fd
commit 1a12ca681f
2 zmienionych plików z 73 dodań i 7 usunięć

Wyświetl plik

@ -183,6 +183,10 @@ int aor_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
return retval;
rfp = strstr(freqbuf, "RF");
if (!rfp && rig->caps->rig_model == RIG_MODEL_AR8000)
rfp = strstr(freqbuf, "VA");
if (!rfp && rig->caps->rig_model == RIG_MODEL_AR8000)
rfp = strstr(freqbuf, "VB");
if (!rfp) {
rig_debug(RIG_DEBUG_WARN, "NO RF in returned string in aor_get_freq: '%s'\n",
freqbuf);
@ -203,7 +207,16 @@ int aor_set_vfo(RIG *rig, vfo_t vfo)
char *vfocmd;
switch (vfo) {
case RIG_VFO_VFO: vfocmd = "VF" EOM; break;
case RIG_VFO_VFO:
if (rig->caps->rig_model == RIG_MODEL_AR8000)
{
vfocmd = "RF" EOM;
}
else
{
vfocmd = "VF" EOM;
}
break;
case RIG_VFO_A: vfocmd = "VA" EOM; break;
case RIG_VFO_B: vfocmd = "VB" EOM; break;
case RIG_VFO_C: vfocmd = "VC" EOM; break;
@ -233,6 +246,28 @@ int aor_get_vfo(RIG *rig, vfo_t *vfo)
if (retval != RIG_OK)
return retval;
if (rig->caps->rig_model == RIG_MODEL_AR8000)
{
switch (vfobuf[0])
{
case 'S':
case 'D':
*vfo = RIG_VFO_VFO;
break;
case 'V':
*vfo = RIG_VFO_N(vfobuf[4]-'A');
break;
case 'M':
*vfo = RIG_VFO_MEM;
break;
default:
rig_debug(RIG_DEBUG_ERR,"aor_get_vfo: unknown vfo %s\n",
vfobuf);
return -RIG_EINVAL;
}
}
else
{
switch (vfobuf[1]) {
case 'S':
case 'V':
@ -248,6 +283,7 @@ int aor_get_vfo(RIG *rig, vfo_t *vfo)
vfobuf[1]);
return -RIG_EINVAL;
}
}
return RIG_OK;
}
@ -258,6 +294,12 @@ int format8k_mode(RIG *rig, char *buf, rmode_t mode, pbwidth_t width)
switch (mode) {
case RIG_MODE_AM:
if (rig->caps->rig_model == RIG_MODEL_AR8000)
{
aormode = AR8K_AM;
}
else
{
switch(width) {
case RIG_PASSBAND_NORMAL:
case s_kHz(9): aormode = AR8K_AM; break;
@ -271,12 +313,19 @@ int format8k_mode(RIG *rig, char *buf, rmode_t mode, pbwidth_t width)
mode, width);
return -RIG_EINVAL;
}
}
break;
case RIG_MODE_CW: aormode = AR8K_CW; break;
case RIG_MODE_USB: aormode = AR8K_USB; break;
case RIG_MODE_LSB: aormode = AR8K_LSB; break;
case RIG_MODE_WFM: aormode = AR8K_WFM; break;
case RIG_MODE_FM:
if (rig->caps->rig_model == RIG_MODEL_AR8000)
{
aormode = AR8K_NFM;
}
else
{
switch(width) {
case RIG_PASSBAND_NORMAL:
case s_kHz(12): aormode = AR8K_NFM; break;
@ -288,6 +337,7 @@ int format8k_mode(RIG *rig, char *buf, rmode_t mode, pbwidth_t width)
__FUNCTION__,
mode, width);
return -RIG_EINVAL;
}
}
break;
default:
@ -311,6 +361,8 @@ int aor_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
int mdbuf_len, mdbuf2_len, retval;
mdbuf_len = priv->format_mode(rig, mdbuf, mode, width);
// Return on error
if(mdbuf_len<0) return mdbuf_len;
strcpy(mdbuf+mdbuf_len, EOM);
mdbuf_len += strlen(EOM);
@ -532,7 +584,14 @@ int aor_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
unsigned att;
if (ack_len < 4 || ackbuf[0] != 'A' || ackbuf[1] != 'T')
return -RIG_EPROTO;
if (rig->caps->rig_model == RIG_MODEL_AR8000)
{
att = ackbuf[2]-'0';
}
else
{
att = ackbuf[3]-'0';
}
if (att == 0) {
val->i = 0;
break;

Wyświetl plik

@ -1,6 +1,6 @@
/*
* Hamlib AOR backend - AR8000 description
* Copyright (c) 2000-2008 by Stephane Fillod
* Copyright (c) 2000-2009 by Stephane Fillod
*
* $Id: ar8000.c,v 1.7 2008-04-11 17:10:45 fillods Exp $
*
@ -34,7 +34,7 @@
#define AR8000_FUNC_ALL (RIG_FUNC_TSQL|RIG_FUNC_ABM|RIG_FUNC_AFC)
#define AR8000_LEVEL (RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR)
#define AR8000_LEVEL (RIG_LEVEL_ATT|RIG_LEVEL_RAWSTR)
#define AR8000_PARM (RIG_PARM_APO|RIG_PARM_BACKLIGHT|RIG_PARM_BEEP)
@ -50,6 +50,12 @@
{ 0xff, 60 } \
} }
static const struct aor_priv_caps ar8000_priv_caps = {
.format_mode = format8k_mode,
.parse_aor_mode = parse8k_aor_mode,
.bank_base1 = 'A',
.bank_base2 = 'a',
};
/*
* ar8000 rig capabilities.
@ -62,9 +68,9 @@ const struct rig_caps ar8000_caps = {
.rig_model = RIG_MODEL_AR8000,
.model_name = "AR8000",
.mfg_name = "AOR",
.version = BACKEND_VER,
.version = BACKEND_VER ".1",
.copyright = "LGPL",
.status = RIG_STATUS_UNTESTED,
.status = RIG_STATUS_BETA,
.rig_type = RIG_TYPE_SCANNER,
.ptt_type = RIG_PTT_NONE,
.dcd_type = RIG_DCD_RIG,
@ -90,7 +96,7 @@ const struct rig_caps ar8000_caps = {
.ctcss_list = NULL, /* FIXME: CTCSS list */
.dcs_list = NULL,
.preamp = { RIG_DBLST_END, },
.attenuator = { 20, RIG_DBLST_END, }, /* TBC */
.attenuator = { 10, RIG_DBLST_END, },
.max_rit = Hz(0),
.max_xit = Hz(0),
.max_ifshift = Hz(0),
@ -146,7 +152,8 @@ const struct rig_caps ar8000_caps = {
RIG_FLT_END,
},
.priv = NULL,
.priv = (void*)&ar8000_priv_caps,
.rig_init = NULL,
.rig_cleanup = NULL,
.rig_open = NULL,