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; return retval;
rfp = strstr(freqbuf, "RF"); 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) { if (!rfp) {
rig_debug(RIG_DEBUG_WARN, "NO RF in returned string in aor_get_freq: '%s'\n", rig_debug(RIG_DEBUG_WARN, "NO RF in returned string in aor_get_freq: '%s'\n",
freqbuf); freqbuf);
@ -203,7 +207,16 @@ int aor_set_vfo(RIG *rig, vfo_t vfo)
char *vfocmd; char *vfocmd;
switch (vfo) { 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_A: vfocmd = "VA" EOM; break;
case RIG_VFO_B: vfocmd = "VB" EOM; break; case RIG_VFO_B: vfocmd = "VB" EOM; break;
case RIG_VFO_C: vfocmd = "VC" 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) if (retval != RIG_OK)
return retval; 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]) { switch (vfobuf[1]) {
case 'S': case 'S':
case 'V': case 'V':
@ -248,6 +283,7 @@ int aor_get_vfo(RIG *rig, vfo_t *vfo)
vfobuf[1]); vfobuf[1]);
return -RIG_EINVAL; return -RIG_EINVAL;
} }
}
return RIG_OK; return RIG_OK;
} }
@ -258,6 +294,12 @@ int format8k_mode(RIG *rig, char *buf, rmode_t mode, pbwidth_t width)
switch (mode) { switch (mode) {
case RIG_MODE_AM: case RIG_MODE_AM:
if (rig->caps->rig_model == RIG_MODEL_AR8000)
{
aormode = AR8K_AM;
}
else
{
switch(width) { switch(width) {
case RIG_PASSBAND_NORMAL: case RIG_PASSBAND_NORMAL:
case s_kHz(9): aormode = AR8K_AM; break; 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); mode, width);
return -RIG_EINVAL; return -RIG_EINVAL;
} }
}
break; break;
case RIG_MODE_CW: aormode = AR8K_CW; break; case RIG_MODE_CW: aormode = AR8K_CW; break;
case RIG_MODE_USB: aormode = AR8K_USB; break; case RIG_MODE_USB: aormode = AR8K_USB; break;
case RIG_MODE_LSB: aormode = AR8K_LSB; break; case RIG_MODE_LSB: aormode = AR8K_LSB; break;
case RIG_MODE_WFM: aormode = AR8K_WFM; break; case RIG_MODE_WFM: aormode = AR8K_WFM; break;
case RIG_MODE_FM: case RIG_MODE_FM:
if (rig->caps->rig_model == RIG_MODEL_AR8000)
{
aormode = AR8K_NFM;
}
else
{
switch(width) { switch(width) {
case RIG_PASSBAND_NORMAL: case RIG_PASSBAND_NORMAL:
case s_kHz(12): aormode = AR8K_NFM; break; 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__, __FUNCTION__,
mode, width); mode, width);
return -RIG_EINVAL; return -RIG_EINVAL;
}
} }
break; break;
default: 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; int mdbuf_len, mdbuf2_len, retval;
mdbuf_len = priv->format_mode(rig, mdbuf, mode, width); mdbuf_len = priv->format_mode(rig, mdbuf, mode, width);
// Return on error
if(mdbuf_len<0) return mdbuf_len;
strcpy(mdbuf+mdbuf_len, EOM); strcpy(mdbuf+mdbuf_len, EOM);
mdbuf_len += strlen(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; unsigned att;
if (ack_len < 4 || ackbuf[0] != 'A' || ackbuf[1] != 'T') if (ack_len < 4 || ackbuf[0] != 'A' || ackbuf[1] != 'T')
return -RIG_EPROTO; return -RIG_EPROTO;
if (rig->caps->rig_model == RIG_MODEL_AR8000)
{
att = ackbuf[2]-'0';
}
else
{
att = ackbuf[3]-'0'; att = ackbuf[3]-'0';
}
if (att == 0) { if (att == 0) {
val->i = 0; val->i = 0;
break; break;

Wyświetl plik

@ -1,6 +1,6 @@
/* /*
* Hamlib AOR backend - AR8000 description * 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 $ * $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_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) #define AR8000_PARM (RIG_PARM_APO|RIG_PARM_BACKLIGHT|RIG_PARM_BEEP)
@ -50,6 +50,12 @@
{ 0xff, 60 } \ { 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. * ar8000 rig capabilities.
@ -62,9 +68,9 @@ const struct rig_caps ar8000_caps = {
.rig_model = RIG_MODEL_AR8000, .rig_model = RIG_MODEL_AR8000,
.model_name = "AR8000", .model_name = "AR8000",
.mfg_name = "AOR", .mfg_name = "AOR",
.version = BACKEND_VER, .version = BACKEND_VER ".1",
.copyright = "LGPL", .copyright = "LGPL",
.status = RIG_STATUS_UNTESTED, .status = RIG_STATUS_BETA,
.rig_type = RIG_TYPE_SCANNER, .rig_type = RIG_TYPE_SCANNER,
.ptt_type = RIG_PTT_NONE, .ptt_type = RIG_PTT_NONE,
.dcd_type = RIG_DCD_RIG, .dcd_type = RIG_DCD_RIG,
@ -90,7 +96,7 @@ const struct rig_caps ar8000_caps = {
.ctcss_list = NULL, /* FIXME: CTCSS list */ .ctcss_list = NULL, /* FIXME: CTCSS list */
.dcs_list = NULL, .dcs_list = NULL,
.preamp = { RIG_DBLST_END, }, .preamp = { RIG_DBLST_END, },
.attenuator = { 20, RIG_DBLST_END, }, /* TBC */ .attenuator = { 10, RIG_DBLST_END, },
.max_rit = Hz(0), .max_rit = Hz(0),
.max_xit = Hz(0), .max_xit = Hz(0),
.max_ifshift = Hz(0), .max_ifshift = Hz(0),
@ -146,7 +152,8 @@ const struct rig_caps ar8000_caps = {
RIG_FLT_END, RIG_FLT_END,
}, },
.priv = NULL, .priv = (void*)&ar8000_priv_caps,
.rig_init = NULL, .rig_init = NULL,
.rig_cleanup = NULL, .rig_cleanup = NULL,
.rig_open = NULL, .rig_open = NULL,