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 * Hamlib Alinco backend - main file
* Copyright (c) 2001-2003 by Stephane Fillod * 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 * This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as * it under the terms of the GNU Library General Public License as
@ -40,7 +40,8 @@
/* Line Feed */ /* Line Feed */
#define EOM "\x0a" #define EOM "\x0d"
#define LF "\x0a"
#define BUFSZ 32 #define BUFSZ 32
@ -111,19 +112,23 @@ int alinco_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, int *
return retval; 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) * TODO: check whether cmd and echobuf match (optional)
*/ */
retval = read_string(&rs->rigport, echobuf, BUFSZ, EOM, strlen(EOM)); retval = read_string(&rs->rigport, echobuf, BUFSZ, LF, strlen(LF));
if (retval != RIG_OK) /* if (retval <= 3)
return retval; return retval; */
/* no data expected, TODO: flush input? */ /* no data expected, TODO: flush input? */
if (!data || !data_len) if (!data || !data_len)
return 0; 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; return RIG_OK;
} }
@ -167,7 +172,7 @@ int alinco_get_vfo(RIG *rig, vfo_t *vfo)
if (retval != RIG_OK) if (retval != RIG_OK)
return retval; return retval;
if (vfo_len != 4 || vfo_len != 6) { if (vfo_len != 4) {
rig_debug(RIG_DEBUG_ERR,"alinco_get_vfo: wrong answer %s, " rig_debug(RIG_DEBUG_ERR,"alinco_get_vfo: wrong answer %s, "
"len=%d\n", vfobuf, vfo_len); "len=%d\n", vfobuf, vfo_len);
return -RIG_ERJCTED; return -RIG_ERJCTED;
@ -178,7 +183,7 @@ int alinco_get_vfo(RIG *rig, vfo_t *vfo)
*vfo = RIG_VFO_A; *vfo = RIG_VFO_A;
else if (!strcmp(vfobuf, "VFOB")) else if (!strcmp(vfobuf, "VFOB"))
*vfo = RIG_VFO_B; *vfo = RIG_VFO_B;
else if (!strcmp(vfobuf, "Memory") || !strcmp(vfobuf, "MEMO")) else if (!strcmp(vfobuf, "MEMO"))
*vfo = RIG_VFO_MEM; *vfo = RIG_VFO_MEM;
else { else {
rig_debug(RIG_DEBUG_ERR,"alinco_get_vfo: unsupported VFO %s\n", 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) int alinco_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
{ {
char mdbuf[BUFSZ]; char mdbuf[BUFSZ];
int mdbuf_len, narrow_filter, retval; int mdbuf_len, wide_filter, retval;
char amode; char amode;
switch (mode) { switch (mode) {
/* FIXME: MD_CWL or MD_CWU? */ /* 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_USB: amode = MD_USB; break;
case RIG_MODE_LSB: amode = MD_LSB; break; case RIG_MODE_LSB: amode = MD_LSB; break;
case RIG_MODE_FM: amode = MD_FM; 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 && if (width != RIG_PASSBAND_NORMAL &&
width < rig_passband_normal(rig, mode)) width < rig_passband_normal(rig, mode))
narrow_filter = 1; wide_filter = 0;
else 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); retval = alinco_transaction (rig, mdbuf, mdbuf_len, NULL, NULL);
return retval; return retval;
@ -440,12 +445,15 @@ int alinco_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit)
if (retval != RIG_OK) if (retval != RIG_OK)
return retval; 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, " rig_debug(RIG_DEBUG_ERR,"alinco_get_rit: wrong answer %s, "
"len=%d\n", ritbuf, rit_len); "len=%d\n", ritbuf, rit_len);
return -RIG_ERJCTED; return -RIG_ERJCTED;
} }
ritbuf[rit_len] = '\0'; ritbuf[rit_len] = '\0';
ritbuf[0] = ' ';
ritbuf[1] = ' ';
ritbuf[2] = ' ';
*rit = atoi(ritbuf); *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) if (retval != RIG_OK)
return retval; return retval;
if (lvl_len != 5) { if (lvl_len != 6) {
rig_debug(RIG_DEBUG_ERR,"alinco_get_level: wrong answer" rig_debug(RIG_DEBUG_ERR,"alinco_get_level: wrong answer"
"len=%d\n", lvl_len); "len=%d\n", lvl_len);
return -RIG_ERJCTED; return -RIG_ERJCTED;
} }
lvlbuf[5] = '\0'; lvlbuf[6] = '\0';
val->i = atoi(lvlbuf+3); val->i = atoi(lvlbuf+3);
break; break;

Wyświetl plik

@ -2,7 +2,7 @@
* Hamlib Alinco backend - DX77 description * Hamlib Alinco backend - DX77 description
* Copyright (c) 2001-2003 by Stephane Fillod * 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 * This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as * 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, .rig_model = RIG_MODEL_DX77,
.model_name = "DX-77", .model_name = "DX-77",
.mfg_name = "Alinco", .mfg_name = "Alinco",
.version = "0.2", .version = "0.3",
.copyright = "LGPL", .copyright = "LGPL",
.status = RIG_STATUS_UNTESTED, .status = RIG_STATUS_BETA,
.rig_type = RIG_TYPE_TRANSCEIVER, .rig_type = RIG_TYPE_TRANSCEIVER,
.ptt_type = RIG_PTT_NONE, .ptt_type = RIG_PTT_NONE,
.dcd_type = RIG_DCD_NONE, .dcd_type = RIG_DCD_NONE,
@ -158,6 +158,7 @@ const struct rig_caps dx77_caps = {
/* mode/filter list, remember: order matters! */ /* mode/filter list, remember: order matters! */
.filters = { .filters = {
{RIG_MODE_SSB|RIG_MODE_CW, kHz(2.7)}, {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|RIG_MODE_FM, kHz(8)},
{RIG_MODE_AM, kHz(2.7)}, {RIG_MODE_AM, kHz(2.7)},
RIG_FLT_END, RIG_FLT_END,