patch from Ben NJ8J

git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1688 7ae35d74-ebe9-4afe-98af-79ac388436b8
Hamlib-1.2.0
Stéphane Fillod, F8CFE 2004-02-15 00:30:29 +00:00
rodzic 2e2721147f
commit 06df356369
2 zmienionych plików z 29 dodań i 20 usunięć

Wyświetl plik

@ -2,7 +2,7 @@
* Hamlib Alinco backend - main file
* Copyright (c) 2001-2003 by Stephane Fillod
*
* $Id: alinco.c,v 1.20 2003-12-22 07:39:46 fillods Exp $
* $Id: alinco.c,v 1.21 2004-02-15 00:30:29 fillods Exp $
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
@ -40,7 +40,8 @@
/* Line Feed */
#define EOM "\x0a"
#define EOM "\x0d"
#define LF "\x0a"
#define BUFSZ 32
@ -111,19 +112,23 @@ int alinco_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, int *
return retval;
/*
* Transceiver sends an echo of cmd
* Transceiver sends an echo of cmd followed by a CR/LF
* TODO: check whether cmd and echobuf match (optional)
*/
retval = read_string(&rs->rigport, echobuf, BUFSZ, EOM, strlen(EOM));
if (retval != RIG_OK)
return retval;
retval = read_string(&rs->rigport, echobuf, BUFSZ, LF, strlen(LF));
/* if (retval <= 3)
return retval; */
/* no data expected, TODO: flush input? */
if (!data || !data_len)
return 0;
*data_len = read_string(&rs->rigport, data, BUFSZ, EOM, strlen(EOM));
*data_len = read_string(&rs->rigport, data, BUFSZ, LF, strlen(LF));
/* strip CR/LF from string
*/
*data_len -= 2;
data[*data_len] = 0;
return RIG_OK;
}
@ -167,7 +172,7 @@ int alinco_get_vfo(RIG *rig, vfo_t *vfo)
if (retval != RIG_OK)
return retval;
if (vfo_len != 4 || vfo_len != 6) {
if (vfo_len != 4) {
rig_debug(RIG_DEBUG_ERR,"alinco_get_vfo: wrong answer %s, "
"len=%d\n", vfobuf, vfo_len);
return -RIG_ERJCTED;
@ -178,7 +183,7 @@ int alinco_get_vfo(RIG *rig, vfo_t *vfo)
*vfo = RIG_VFO_A;
else if (!strcmp(vfobuf, "VFOB"))
*vfo = RIG_VFO_B;
else if (!strcmp(vfobuf, "Memory") || !strcmp(vfobuf, "MEMO"))
else if (!strcmp(vfobuf, "MEMO"))
*vfo = RIG_VFO_MEM;
else {
rig_debug(RIG_DEBUG_ERR,"alinco_get_vfo: unsupported VFO %s\n",
@ -254,12 +259,12 @@ int alinco_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
int alinco_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
{
char mdbuf[BUFSZ];
int mdbuf_len, narrow_filter, retval;
int mdbuf_len, wide_filter, retval;
char amode;
switch (mode) {
/* FIXME: MD_CWL or MD_CWU? */
case RIG_MODE_CW: amode = MD_CWL; break;
case RIG_MODE_CW: amode = MD_CWU; break;
case RIG_MODE_USB: amode = MD_USB; break;
case RIG_MODE_LSB: amode = MD_LSB; break;
case RIG_MODE_FM: amode = MD_FM; break;
@ -282,11 +287,11 @@ int alinco_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
*/
if (width != RIG_PASSBAND_NORMAL &&
width < rig_passband_normal(rig, mode))
narrow_filter = 1;
wide_filter = 0;
else
narrow_filter = 0;
wide_filter = 1;
mdbuf_len = sprintf(mdbuf, AL CMD_FLTER "%02d" EOM, narrow_filter);
mdbuf_len = sprintf(mdbuf, AL CMD_FLTER "%02d" EOM, wide_filter);
retval = alinco_transaction (rig, mdbuf, mdbuf_len, NULL, NULL);
return retval;
@ -440,12 +445,15 @@ int alinco_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit)
if (retval != RIG_OK)
return retval;
if (rit_len > 5 || (ritbuf[0] != '+' && ritbuf[0] != '-')) {
if (rit_len != 8) { /* || (ritbuf[0] != '+' && ritbuf[0] != '-')) { */
rig_debug(RIG_DEBUG_ERR,"alinco_get_rit: wrong answer %s, "
"len=%d\n", ritbuf, rit_len);
return -RIG_ERJCTED;
}
ritbuf[rit_len] = '\0';
ritbuf[0] = ' ';
ritbuf[1] = ' ';
ritbuf[2] = ' ';
*rit = atoi(ritbuf);
@ -617,13 +625,13 @@ int alinco_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
if (retval != RIG_OK)
return retval;
if (lvl_len != 5) {
if (lvl_len != 6) {
rig_debug(RIG_DEBUG_ERR,"alinco_get_level: wrong answer"
"len=%d\n", lvl_len);
return -RIG_ERJCTED;
}
lvlbuf[5] = '\0';
lvlbuf[6] = '\0';
val->i = atoi(lvlbuf+3);
break;

Wyświetl plik

@ -2,7 +2,7 @@
* Hamlib Alinco backend - DX77 description
* Copyright (c) 2001-2003 by Stephane Fillod
*
* $Id: dx77.c,v 1.9 2003-12-08 08:37:39 fillods Exp $
* $Id: dx77.c,v 1.10 2004-02-15 00:30:29 fillods Exp $
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
@ -79,9 +79,9 @@ const struct rig_caps dx77_caps = {
.rig_model = RIG_MODEL_DX77,
.model_name = "DX-77",
.mfg_name = "Alinco",
.version = "0.2",
.version = "0.3",
.copyright = "LGPL",
.status = RIG_STATUS_UNTESTED,
.status = RIG_STATUS_BETA,
.rig_type = RIG_TYPE_TRANSCEIVER,
.ptt_type = RIG_PTT_NONE,
.dcd_type = RIG_DCD_NONE,
@ -158,6 +158,7 @@ const struct rig_caps dx77_caps = {
/* mode/filter list, remember: order matters! */
.filters = {
{RIG_MODE_SSB|RIG_MODE_CW, kHz(2.7)},
{RIG_MODE_CW, kHz(0.5)},
{RIG_MODE_AM|RIG_MODE_FM, kHz(8)},
{RIG_MODE_AM, kHz(2.7)},
RIG_FLT_END,