kopia lustrzana https://github.com/Hamlib/Hamlib
better error handling
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@543 7ae35d74-ebe9-4afe-98af-79ac388436b8Hamlib-1.1.2
rodzic
acb239203a
commit
bb4c5fa6fa
|
@ -6,7 +6,7 @@
|
|||
* via serial interface to a Kenwood radio.
|
||||
*
|
||||
*
|
||||
* $Id: alinco.c,v 1.2 2001-06-04 17:01:21 f4cfe Exp $
|
||||
* $Id: alinco.c,v 1.3 2001-06-12 07:07:10 f4cfe Exp $
|
||||
*
|
||||
*
|
||||
*
|
||||
|
@ -99,12 +99,14 @@
|
|||
*/
|
||||
int alinco_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, int *data_len)
|
||||
{
|
||||
int i, count;
|
||||
int i, count, retval;
|
||||
struct rig_state *rs;
|
||||
|
||||
rs = &rig->state;
|
||||
|
||||
write_block(&rs->rigport, cmd, cmd_len);
|
||||
retval = write_block(&rs->rigport, cmd, cmd_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
/* no data expected, TODO: flush input? */
|
||||
if (!data || !data_len)
|
||||
|
@ -118,11 +120,13 @@ int alinco_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, int *
|
|||
count = fread_block(&rs->rigport, data+i, 1);
|
||||
if (count > 0)
|
||||
i += count;
|
||||
else if (count < 0)
|
||||
return count;
|
||||
} while (count > 0);
|
||||
|
||||
*data_len = i;
|
||||
|
||||
return i;
|
||||
return RIG_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -148,9 +152,7 @@ int alinco_set_vfo(RIG *rig, vfo_t vfo)
|
|||
}
|
||||
cmd_len = sprintf(cmdbuf, AL CMD_VFO "%c" EOM, vfo_num);
|
||||
|
||||
alinco_transaction (rig, cmdbuf, cmd_len, NULL, NULL);
|
||||
|
||||
return RIG_OK;
|
||||
return alinco_transaction (rig, cmdbuf, cmd_len, NULL, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -160,10 +162,12 @@ int alinco_set_vfo(RIG *rig, vfo_t vfo)
|
|||
int alinco_get_vfo(RIG *rig, vfo_t *vfo)
|
||||
{
|
||||
char vfobuf[16];
|
||||
int vfo_len;
|
||||
int vfo_len, retval;
|
||||
|
||||
alinco_transaction(rig, AL CMD_RMV EOM, strlen(AL CMD_RMV EOM),
|
||||
vfobuf, &vfo_len);
|
||||
retval = alinco_transaction(rig, AL CMD_RMV EOM,
|
||||
strlen(AL CMD_RMV EOM), vfobuf, &vfo_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (vfo_len != 4 || vfo_len != 6) {
|
||||
rig_debug(RIG_DEBUG_ERR,"alinco_get_vfo: wrong answer %s, "
|
||||
|
@ -202,9 +206,7 @@ int alinco_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
|||
/* at least 6 digits */
|
||||
freq_len = sprintf(freqbuf, AL CMD_RXFREQ "%06Ld" EOM, freq);
|
||||
|
||||
alinco_transaction (rig, freqbuf, freq_len, NULL, NULL);
|
||||
|
||||
return RIG_OK;
|
||||
return alinco_transaction (rig, freqbuf, freq_len, NULL, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -212,10 +214,12 @@ int alinco_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
|||
*/
|
||||
static int current_data_read(RIG *rig, char *databuf)
|
||||
{
|
||||
int data_len;
|
||||
int data_len, retval;
|
||||
|
||||
alinco_transaction (rig, AL CMD_RDATA EOM, strlen(AL CMD_RDATA EOM),
|
||||
databuf, &data_len);
|
||||
retval = alinco_transaction (rig, AL CMD_RDATA EOM,
|
||||
strlen(AL CMD_RDATA EOM), databuf, &data_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (data_len != 26) {
|
||||
rig_debug(RIG_DEBUG_ERR,"alinco_current_data_read: "
|
||||
|
@ -252,7 +256,7 @@ 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[16];
|
||||
int mdbuf_len, narrow_filter;
|
||||
int mdbuf_len, narrow_filter, retval;
|
||||
char amode;
|
||||
|
||||
switch (mode) {
|
||||
|
@ -270,7 +274,9 @@ int alinco_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||
}
|
||||
|
||||
mdbuf_len = sprintf(mdbuf, AL CMD_MODE "%c" EOM, amode);
|
||||
alinco_transaction (rig, mdbuf, mdbuf_len, NULL, NULL);
|
||||
retval = alinco_transaction (rig, mdbuf, mdbuf_len, NULL, NULL);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
/*
|
||||
* TODO: please DX77 owners, check this, I'm not sure
|
||||
|
@ -283,9 +289,9 @@ int alinco_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||
narrow_filter = 0;
|
||||
|
||||
mdbuf_len = sprintf(mdbuf, AL CMD_FLTER "%02d" EOM, narrow_filter);
|
||||
alinco_transaction (rig, mdbuf, mdbuf_len, NULL, NULL);
|
||||
retval = alinco_transaction (rig, mdbuf, mdbuf_len, NULL, NULL);
|
||||
|
||||
return RIG_OK;
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -351,11 +357,13 @@ int alinco_set_split(RIG *rig, vfo_t vfo, split_t split)
|
|||
*/
|
||||
int alinco_get_split(RIG *rig, vfo_t vfo, split_t *split)
|
||||
{
|
||||
int splt_len;
|
||||
int splt_len, retval;
|
||||
char spltbuf[32];
|
||||
|
||||
alinco_transaction (rig, AL CMD_RSPLT EOM, strlen(AL CMD_RSPLT EOM),
|
||||
spltbuf, &splt_len);
|
||||
retval = alinco_transaction (rig, AL CMD_RSPLT EOM,
|
||||
strlen(AL CMD_RSPLT EOM), spltbuf, &splt_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (splt_len != 2) {
|
||||
rig_debug(RIG_DEBUG_ERR,"alinco_get_split: wrong answer %s, "
|
||||
|
@ -433,12 +441,14 @@ int alinco_get_split_freq(RIG *rig, vfo_t vfo, freq_t *rx_freq, freq_t *tx_freq)
|
|||
*/
|
||||
int alinco_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit)
|
||||
{
|
||||
int rit_len;
|
||||
int rit_len, retval;
|
||||
char ritbuf[32];
|
||||
|
||||
/* read in Hertz unit */
|
||||
alinco_transaction (rig, AL CMD_RIT "0" EOM, strlen(AL CMD_RIT "0" EOM),
|
||||
ritbuf, &rit_len);
|
||||
retval = alinco_transaction (rig, AL CMD_RIT "0" EOM,
|
||||
strlen(AL CMD_RIT "0" EOM), ritbuf, &rit_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (rit_len > 5 || (ritbuf[0] != '+' && ritbuf[0] != '-')) {
|
||||
rig_debug(RIG_DEBUG_ERR,"alinco_get_rit: wrong answer %s, "
|
||||
|
@ -615,8 +625,10 @@ int alinco_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
switch (level) {
|
||||
case RIG_LEVEL_STRENGTH:
|
||||
/* read A/D converted value */
|
||||
alinco_transaction (rig, AL CMD_SMETER "1" EOM,
|
||||
retval = alinco_transaction (rig, AL CMD_SMETER "1" EOM,
|
||||
strlen(AL CMD_SMETER "1" EOM), lvlbuf, &lvl_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (lvl_len != 5) {
|
||||
rig_debug(RIG_DEBUG_ERR,"alinco_get_level: wrong answer"
|
||||
|
@ -660,8 +672,10 @@ int alinco_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
break;
|
||||
|
||||
case RIG_LEVEL_RFPOWER:
|
||||
alinco_transaction (rig, AL CMD_RPOWER EOM,
|
||||
retval = alinco_transaction (rig, AL CMD_RPOWER EOM,
|
||||
strlen(AL CMD_RPOWER EOM), lvlbuf, &lvl_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (lvl_len != 1) {
|
||||
rig_debug(RIG_DEBUG_ERR,"alinco_get_level: wrong answer"
|
||||
|
@ -714,10 +728,12 @@ int alinco_set_ctcss(RIG *rig, vfo_t vfo, tone_t tone)
|
|||
int alinco_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
|
||||
{
|
||||
char pttbuf[16];
|
||||
int ptt_len;
|
||||
int ptt_len, retval;
|
||||
|
||||
alinco_transaction (rig, AL CMD_PTT EOM, strlen(AL CMD_PTT EOM),
|
||||
pttbuf, &ptt_len);
|
||||
retval = alinco_transaction (rig, AL CMD_PTT EOM,
|
||||
strlen(AL CMD_PTT EOM), pttbuf, &ptt_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (ptt_len != 3 || ptt_len != 4) {
|
||||
rig_debug(RIG_DEBUG_ERR,"alinco_get_ptt: wrong answer %s, "
|
||||
|
@ -746,10 +762,12 @@ int alinco_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
|
|||
int alinco_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd)
|
||||
{
|
||||
char dcdbuf[16];
|
||||
int dcd_len;
|
||||
int dcd_len, retval;
|
||||
|
||||
alinco_transaction (rig, AL CMD_SQL EOM, strlen(AL CMD_SQL EOM),
|
||||
dcdbuf, &dcd_len);
|
||||
retval = alinco_transaction (rig, AL CMD_SQL EOM,
|
||||
strlen(AL CMD_SQL EOM), dcdbuf, &dcd_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (dcd_len != 4 || dcd_len != 5) {
|
||||
rig_debug(RIG_DEBUG_ERR,"alinco_get_dcd: wrong answer %s, "
|
||||
|
@ -785,9 +803,7 @@ int alinco_set_mem(RIG *rig, vfo_t vfo, int ch)
|
|||
|
||||
cmd_len = sprintf(cmdbuf, AL CMD_MCALL "%02d" EOM, ch);
|
||||
|
||||
alinco_transaction (rig, cmdbuf, cmd_len, NULL, NULL);
|
||||
|
||||
return RIG_OK;
|
||||
return alinco_transaction (rig, cmdbuf, cmd_len, NULL, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -797,10 +813,12 @@ int alinco_set_mem(RIG *rig, vfo_t vfo, int ch)
|
|||
int alinco_get_mem(RIG *rig, vfo_t vfo, int *ch)
|
||||
{
|
||||
char membuf[16];
|
||||
int mem_len;
|
||||
int mem_len, retval;
|
||||
|
||||
alinco_transaction (rig, AL CMD_RMEM EOM, strlen(AL CMD_RMEM EOM),
|
||||
membuf, &mem_len);
|
||||
retval = alinco_transaction (rig, AL CMD_RMEM EOM,
|
||||
strlen(AL CMD_RMEM EOM), membuf, &mem_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (mem_len != 2) {
|
||||
rig_debug(RIG_DEBUG_ERR,"alinco_get_mem: wrong answer %s, "
|
||||
|
|
76
aor/aor.c
76
aor/aor.c
|
@ -6,7 +6,7 @@
|
|||
* via serial interface to an AOR scanner.
|
||||
*
|
||||
*
|
||||
* $Id: aor.c,v 1.8 2001-06-04 17:01:21 f4cfe Exp $
|
||||
* $Id: aor.c,v 1.9 2001-06-12 07:07:11 f4cfe Exp $
|
||||
*
|
||||
*
|
||||
*
|
||||
|
@ -68,17 +68,23 @@
|
|||
* aor_transaction
|
||||
* We assume that rig!=NULL, rig->state!= NULL, data!=NULL, data_len!=NULL
|
||||
* Otherwise, you'll get a nice seg fault. You've been warned!
|
||||
* return value: RIG_OK if everything's fine, negative value otherwise
|
||||
* TODO: error case handling
|
||||
*/
|
||||
int aor_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, int *data_len)
|
||||
{
|
||||
int i;
|
||||
int i, retval;
|
||||
struct rig_state *rs;
|
||||
|
||||
rs = &rig->state;
|
||||
|
||||
write_block(&rs->rigport, cmd, cmd_len);
|
||||
write_block(&rs->rigport, "\n", 1);
|
||||
retval = write_block(&rs->rigport, cmd, cmd_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
retval = write_block(&rs->rigport, "\n", 1);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
/*
|
||||
* buffered read are quite helpful here!
|
||||
|
@ -86,12 +92,16 @@ int aor_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, int *dat
|
|||
*/
|
||||
i = 0;
|
||||
do {
|
||||
fread_block(&rs->rigport, data+i, 1);
|
||||
retval = fread_block(&rs->rigport, data+i, 1);
|
||||
if (retval == 0)
|
||||
continue; /* huh!? */
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
} while (data[i++] != CR);
|
||||
|
||||
*data_len = i;
|
||||
|
||||
return i;
|
||||
return RIG_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -105,9 +115,7 @@ int aor_close(RIG *rig)
|
|||
|
||||
/* terminate remote operation via the RS-232 */
|
||||
|
||||
aor_transaction (rig, "EX", 2, ackbuf, &ack_len);
|
||||
|
||||
return RIG_OK;
|
||||
return aor_transaction (rig, "EX", 2, ackbuf, &ack_len);
|
||||
}
|
||||
|
||||
|
||||
|
@ -118,7 +126,7 @@ int aor_close(RIG *rig)
|
|||
int aor_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
||||
{
|
||||
unsigned char freqbuf[16], ackbuf[16];
|
||||
int freq_len,ack_len;
|
||||
int freq_len, ack_len, retval;
|
||||
|
||||
/*
|
||||
* actually, frequency must be like nnnnnnnnm0,
|
||||
|
@ -126,13 +134,9 @@ int aor_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
|||
*/
|
||||
freq_len = sprintf(freqbuf,"RF%010Ld", freq);
|
||||
|
||||
aor_transaction (rig, freqbuf, freq_len, ackbuf, &ack_len);
|
||||
|
||||
if (ack_len != 1 || ackbuf[0] != CR) {
|
||||
rig_debug(RIG_DEBUG_ERR,"aor_set_freq: ack NG, len=%d\n",
|
||||
ack_len);
|
||||
return -RIG_ERJCTED;
|
||||
}
|
||||
retval = aor_transaction (rig, freqbuf, freq_len, ackbuf, &ack_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
return RIG_OK;
|
||||
}
|
||||
|
@ -145,9 +149,11 @@ int aor_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
|
|||
{
|
||||
unsigned char freqbuf[16];
|
||||
char *rfp;
|
||||
int freq_len;
|
||||
int freq_len, retval;
|
||||
|
||||
aor_transaction (rig, "RX", 2, freqbuf, &freq_len);
|
||||
retval = aor_transaction (rig, "RX", 2, freqbuf, &freq_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
rfp = strstr(freqbuf, "RF");
|
||||
sscanf(rfp+2,"%Ld", freq);
|
||||
|
@ -162,7 +168,7 @@ int aor_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
|
|||
int aor_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
||||
{
|
||||
unsigned char mdbuf[16],ackbuf[16];
|
||||
int mdbuf_len,ack_len,aormode;
|
||||
int mdbuf_len, ack_len, aormode, retval;
|
||||
|
||||
switch (mode) {
|
||||
case RIG_MODE_AM:
|
||||
|
@ -203,15 +209,9 @@ int aor_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||
}
|
||||
|
||||
mdbuf_len = sprintf(mdbuf, "MD%c", aormode);
|
||||
aor_transaction (rig, mdbuf, mdbuf_len, ackbuf, &ack_len);
|
||||
retval = aor_transaction (rig, mdbuf, mdbuf_len, ackbuf, &ack_len);
|
||||
|
||||
if (ack_len != 1 || ackbuf[0] != CR) {
|
||||
rig_debug(RIG_DEBUG_ERR,"aor_set_mode: ack NG, len=%d\n",
|
||||
ack_len);
|
||||
return -RIG_ERJCTED;
|
||||
}
|
||||
|
||||
return RIG_OK;
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -221,10 +221,12 @@ int aor_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||
int aor_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
|
||||
{
|
||||
unsigned char ackbuf[16];
|
||||
int ack_len;
|
||||
int ack_len, retval;
|
||||
|
||||
|
||||
aor_transaction (rig, "MD", 2, ackbuf, &ack_len);
|
||||
retval = aor_transaction (rig, "MD", 2, ackbuf, &ack_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (ack_len != 2 || ackbuf[1] != CR) {
|
||||
rig_debug(RIG_DEBUG_ERR,"aor_get_mode: ack NG, len=%d\n",
|
||||
|
@ -278,15 +280,7 @@ int aor_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts)
|
|||
*/
|
||||
ts_len = sprintf(tsbuf,"ST%06ld", ts);
|
||||
|
||||
aor_transaction (rig, tsbuf, ts_len, ackbuf, &ack_len);
|
||||
|
||||
if (ack_len != 1 || ackbuf[0] != CR) {
|
||||
rig_debug(RIG_DEBUG_ERR,"aor_set_ts: ack NG, len=%d\n",
|
||||
ack_len);
|
||||
return -RIG_ERJCTED;
|
||||
}
|
||||
|
||||
return RIG_OK;
|
||||
return aor_transaction (rig, tsbuf, ts_len, ackbuf, &ack_len);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -302,9 +296,7 @@ int aor_set_powerstat(RIG *rig, powerstat_t status)
|
|||
return -RIG_EINVAL;
|
||||
|
||||
/* turn off power */
|
||||
aor_transaction (rig, "QP", 2, ackbuf, &ack_len);
|
||||
|
||||
return RIG_OK;
|
||||
return aor_transaction (rig, "QP", 2, ackbuf, &ack_len);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* via serial interface to a Kenwood radio.
|
||||
*
|
||||
*
|
||||
* $Id: kenwood.c,v 1.8 2001-06-04 21:18:39 f4cfe Exp $
|
||||
* $Id: kenwood.c,v 1.9 2001-06-12 07:07:11 f4cfe Exp $
|
||||
*
|
||||
*
|
||||
*
|
||||
|
@ -75,9 +75,7 @@ struct kenwood_id {
|
|||
static const struct kenwood_id kenwood_id_list[] = {
|
||||
{ RIG_MODEL_R5000, 5 },
|
||||
{ RIG_MODEL_TS870S, 15 },
|
||||
#ifdef RIG_MODEL_TS2000
|
||||
{ RIG_MODEL_TS2000, 19 },
|
||||
#endif
|
||||
{ -1, UNKNOWN_ID },
|
||||
};
|
||||
|
||||
|
@ -96,16 +94,19 @@ const int kenwood38_ctcss_list[] = {
|
|||
* kenwood_transaction
|
||||
* We assume that rig!=NULL, rig->state!= NULL, data!=NULL, data_len!=NULL
|
||||
* Otherwise, you'll get a nice seg fault. You've been warned!
|
||||
* TODO: error case handling
|
||||
* return value: RIG_OK if everything's fine, negative value otherwise
|
||||
* TODO: error case handling, error codes from the rig, ..
|
||||
*/
|
||||
int kenwood_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, int *data_len)
|
||||
{
|
||||
int i;
|
||||
int i, retval;
|
||||
struct rig_state *rs;
|
||||
|
||||
rs = &rig->state;
|
||||
|
||||
write_block(&rs->rigport, cmd, cmd_len);
|
||||
retval = write_block(&rs->rigport, cmd, cmd_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
/*
|
||||
* buffered read are quite helpful here!
|
||||
|
@ -113,12 +114,16 @@ int kenwood_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, int
|
|||
*/
|
||||
i = 0;
|
||||
do {
|
||||
fread_block(&rs->rigport, data+i, 1);
|
||||
retval = fread_block(&rs->rigport, data+i, 1);
|
||||
if (retval == 0)
|
||||
continue; /* huh!? */
|
||||
if (retval < 0)
|
||||
return retval;
|
||||
} while (data[i++] != EOM);
|
||||
|
||||
*data_len = i;
|
||||
|
||||
return i;
|
||||
return RIG_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -128,7 +133,7 @@ int kenwood_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, int
|
|||
int kenwood_set_vfo(RIG *rig, vfo_t vfo)
|
||||
{
|
||||
unsigned char cmdbuf[16], ackbuf[16];
|
||||
int ack_len;
|
||||
int ack_len, retval;
|
||||
char vfo_function;
|
||||
|
||||
/*
|
||||
|
@ -150,13 +155,15 @@ int kenwood_set_vfo(RIG *rig, vfo_t vfo)
|
|||
cmdbuf[3] = EOM;
|
||||
|
||||
/* set RX VFO */
|
||||
kenwood_transaction (rig, cmdbuf, 4, ackbuf, &ack_len);
|
||||
retval = kenwood_transaction (rig, cmdbuf, 4, ackbuf, &ack_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
/* set TX VFO */
|
||||
cmdbuf[0] = 'T';
|
||||
kenwood_transaction (rig, cmdbuf, 4, ackbuf, &ack_len);
|
||||
retval = kenwood_transaction (rig, cmdbuf, 4, ackbuf, &ack_len);
|
||||
|
||||
return RIG_OK;
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -166,18 +173,20 @@ int kenwood_set_vfo(RIG *rig, vfo_t vfo)
|
|||
int kenwood_get_vfo(RIG *rig, vfo_t *vfo)
|
||||
{
|
||||
unsigned char vfobuf[16];
|
||||
int vfo_len;
|
||||
int vfo_len, retval;
|
||||
|
||||
|
||||
/* query RX VFO */
|
||||
kenwood_transaction (rig, "FR;", 3, vfobuf, &vfo_len);
|
||||
retval = kenwood_transaction (rig, "FR;", 3, vfobuf, &vfo_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
/*
|
||||
* FIXME: vfo==RIG_VFO_CURR
|
||||
*/
|
||||
|
||||
if (vfo_len != 4 || vfobuf[1] != 'R') {
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_vfo: wrong answer %s, "
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_vfo: unexpected answer %s, "
|
||||
"len=%d\n", vfobuf, vfo_len);
|
||||
return -RIG_ERJCTED;
|
||||
}
|
||||
|
@ -204,14 +213,17 @@ int kenwood_get_vfo(RIG *rig, vfo_t *vfo)
|
|||
int kenwood_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
||||
{
|
||||
unsigned char freqbuf[16], ackbuf[16];
|
||||
int freq_len,ack_len;
|
||||
int freq_len, ack_len, retval;
|
||||
char vfo_letter;
|
||||
|
||||
/*
|
||||
* better FIXME: vfo==RIG_VFO_CURR
|
||||
*/
|
||||
if (vfo == RIG_VFO_CURR)
|
||||
kenwood_get_vfo(rig, &vfo);
|
||||
if (vfo == RIG_VFO_CURR) {
|
||||
retval = kenwood_get_vfo(rig, &vfo);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
}
|
||||
|
||||
switch (vfo) {
|
||||
case RIG_VFO_A: vfo_letter = 'A'; break;
|
||||
|
@ -224,17 +236,9 @@ int kenwood_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
|||
}
|
||||
freq_len = sprintf(freqbuf,"F%c%011Ld;", vfo_letter, freq);
|
||||
|
||||
kenwood_transaction (rig, freqbuf, freq_len, ackbuf, &ack_len);
|
||||
retval = kenwood_transaction (rig, freqbuf, freq_len, ackbuf, &ack_len);
|
||||
|
||||
#if 0
|
||||
if (ack_len != 1) {
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_set_freq: ack NG, len=%d\n",
|
||||
ack_len);
|
||||
return -RIG_ERJCTED;
|
||||
}
|
||||
#endif
|
||||
|
||||
return RIG_OK;
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -245,14 +249,17 @@ int kenwood_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
|
|||
{
|
||||
unsigned char freqbuf[16];
|
||||
unsigned char cmdbuf[4];
|
||||
int freq_len;
|
||||
int freq_len, retval;
|
||||
char vfo_letter;
|
||||
|
||||
/*
|
||||
* better FIXME: vfo==RIG_VFO_CURR
|
||||
*/
|
||||
if (vfo == RIG_VFO_CURR)
|
||||
kenwood_get_vfo(rig, &vfo);
|
||||
if (vfo == RIG_VFO_CURR) {
|
||||
retval = kenwood_get_vfo(rig, &vfo);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
}
|
||||
|
||||
switch (vfo) {
|
||||
case RIG_VFO_A: vfo_letter = 'A'; break;
|
||||
|
@ -267,7 +274,9 @@ int kenwood_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
|
|||
cmdbuf[1] = vfo_letter;
|
||||
cmdbuf[2] = EOM;
|
||||
|
||||
kenwood_transaction (rig, cmdbuf, 3, freqbuf, &freq_len);
|
||||
retval = kenwood_transaction (rig, cmdbuf, 3, freqbuf, &freq_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
sscanf(freqbuf,"%Ld", freq);
|
||||
|
||||
|
@ -281,7 +290,7 @@ int kenwood_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
|
|||
int kenwood_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
||||
{
|
||||
unsigned char mdbuf[16],ackbuf[16];
|
||||
int mdbuf_len,ack_len,kmode;
|
||||
int mdbuf_len, ack_len, kmode, retval;
|
||||
|
||||
switch (mode) {
|
||||
case RIG_MODE_CW: kmode = MD_CW; break;
|
||||
|
@ -291,23 +300,15 @@ int kenwood_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||
case RIG_MODE_AM: kmode = MD_AM; break;
|
||||
case RIG_MODE_RTTY: kmode = MD_FSK; break;
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_set_mode: unsupported mode %d\n",
|
||||
mode);
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_set_mode: "
|
||||
"unsupported mode %d\n", mode);
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
mdbuf_len = sprintf(mdbuf, "MD%c;", kmode);
|
||||
kenwood_transaction (rig, mdbuf, mdbuf_len, ackbuf, &ack_len);
|
||||
retval = kenwood_transaction (rig, mdbuf, mdbuf_len, ackbuf, &ack_len);
|
||||
|
||||
#if 0
|
||||
if (ack_len != 1) {
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_set_mode: ack NG, len=%d\n",
|
||||
ack_len);
|
||||
return -RIG_ERJCTED;
|
||||
}
|
||||
#endif
|
||||
|
||||
return RIG_OK;
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -317,10 +318,12 @@ int kenwood_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||
int kenwood_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
|
||||
{
|
||||
unsigned char ackbuf[16];
|
||||
int ack_len;
|
||||
int ack_len, retval;
|
||||
|
||||
|
||||
kenwood_transaction (rig, "MD;", 2, ackbuf, &ack_len);
|
||||
retval = kenwood_transaction (rig, "MD;", 2, ackbuf, &ack_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (ack_len != 4) {
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_mode: ack NG, len=%d\n",
|
||||
|
@ -328,7 +331,7 @@ int kenwood_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
|
|||
return -RIG_ERJCTED;
|
||||
}
|
||||
|
||||
*width = RIG_PASSBAND_NORMAL;
|
||||
*width = RIG_PASSBAND_NORMAL; /* FIXME */
|
||||
switch (ackbuf[0]) {
|
||||
case MD_CW: *mode = RIG_MODE_CW; break;
|
||||
case MD_USB: *mode = RIG_MODE_USB; break;
|
||||
|
@ -340,12 +343,12 @@ int kenwood_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
|
|||
case MD_CWR: *mode = RIG_MODE_CWR; break;
|
||||
#endif
|
||||
#ifdef RIG_MODE_RTTYR
|
||||
case MD_FSK: *mode = RIG_MODE_RTTY; break;
|
||||
case MD_FSKR: *mode = RIG_MODE_RTTY; break;
|
||||
#endif
|
||||
case MD_NONE: *mode = RIG_MODE_NONE; break;
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_mode: unsupported mode %d\n",
|
||||
ackbuf[0]);
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_mode: "
|
||||
"unsupported mode %d\n", ackbuf[0]);
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
|
@ -358,10 +361,12 @@ int kenwood_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
|
|||
static int get_kenwood_level(RIG *rig, const char *cmd, int cmd_len, float *f)
|
||||
{
|
||||
unsigned char lvlbuf[16];
|
||||
int lvl_len;
|
||||
int lvl_len, retval;
|
||||
int lvl;
|
||||
|
||||
kenwood_transaction (rig, cmd, cmd_len, lvlbuf, &lvl_len);
|
||||
retval = kenwood_transaction (rig, cmd, cmd_len, lvlbuf, &lvl_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (lvl_len != 4) {
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_level: wrong answer len=%d\n",
|
||||
|
@ -386,7 +391,7 @@ static int get_kenwood_level(RIG *rig, const char *cmd, int cmd_len, float *f)
|
|||
int kenwood_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
||||
{
|
||||
unsigned char lvlbuf[16];
|
||||
int lvl_len;
|
||||
int lvl_len, retval;
|
||||
int lvl;
|
||||
int i;
|
||||
|
||||
|
@ -395,11 +400,13 @@ int kenwood_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
*/
|
||||
switch (level) {
|
||||
case RIG_LEVEL_STRENGTH:
|
||||
kenwood_transaction (rig, "SM;", 3, lvlbuf, &lvl_len);
|
||||
retval = kenwood_transaction (rig, "SM;", 3, lvlbuf, &lvl_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (lvl_len != 4) {
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_level: wrong answer len=%d\n",
|
||||
lvl_len);
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_level: "
|
||||
"wrong answer len=%d\n", lvl_len);
|
||||
return -RIG_ERJCTED;
|
||||
}
|
||||
|
||||
|
@ -414,11 +421,13 @@ int kenwood_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
return -RIG_ENIMPL;
|
||||
|
||||
case RIG_LEVEL_ATT:
|
||||
kenwood_transaction (rig, "RA;", 3, lvlbuf, &lvl_len);
|
||||
retval = kenwood_transaction (rig, "RA;", 3, lvlbuf, &lvl_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (lvl_len != 5) {
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_level: wrong answer len=%d\n",
|
||||
lvl_len);
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_level: "
|
||||
"unexpected answer len=%d\n", lvl_len);
|
||||
return -RIG_ERJCTED;
|
||||
}
|
||||
|
||||
|
@ -429,8 +438,7 @@ int kenwood_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
for (i=0; i<lvl && i<MAXDBLSTSIZ; i++)
|
||||
if (rig->state.attenuator[i] == 0) {
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_level: "
|
||||
"unexpected att level %d\n",
|
||||
lvl);
|
||||
"unexpected att level %d\n", lvl);
|
||||
return -RIG_EPROTO;
|
||||
}
|
||||
if (i != lvl)
|
||||
|
@ -501,9 +509,7 @@ int kenwood_set_ctcss(RIG *rig, vfo_t vfo, unsigned int tone)
|
|||
/* TODO: replace menu no 57 by a define */
|
||||
tone_len = sprintf(tonebuf,"EX%03d%04d;", 57, i+1);
|
||||
|
||||
kenwood_transaction (rig, tonebuf, tone_len, ackbuf, &ack_len);
|
||||
|
||||
return RIG_OK;
|
||||
return kenwood_transaction (rig, tonebuf, tone_len, ackbuf, &ack_len);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -514,14 +520,16 @@ int kenwood_get_ctcss(RIG *rig, vfo_t vfo, unsigned int *tone)
|
|||
{
|
||||
const struct rig_caps *caps;
|
||||
unsigned char tonebuf[16];
|
||||
int tone_len, i;
|
||||
int tone_len, i, retval;
|
||||
unsigned int tone_idx;
|
||||
|
||||
caps = rig->caps;
|
||||
|
||||
/* TODO: replace menu no 57 by a define */
|
||||
|
||||
kenwood_transaction (rig, "EX057;", 6, tonebuf, &tone_len);
|
||||
retval = kenwood_transaction (rig, "EX057;", 6, tonebuf, &tone_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (tone_len != 10) {
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_ctcss: unexpected reply '%s', "
|
||||
|
@ -560,10 +568,8 @@ int kenwood_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
|
|||
unsigned char ackbuf[16];
|
||||
int ack_len;
|
||||
|
||||
kenwood_transaction (rig, ptt==RIG_PTT_ON? "TX;":"RX;", 3,
|
||||
return kenwood_transaction (rig, ptt==RIG_PTT_ON? "TX;":"RX;", 3,
|
||||
ackbuf, &ack_len);
|
||||
|
||||
return RIG_OK;
|
||||
}
|
||||
|
||||
|
||||
|
@ -574,9 +580,11 @@ int kenwood_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
|
|||
int kenwood_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd)
|
||||
{
|
||||
unsigned char busybuf[16];
|
||||
int busy_len;
|
||||
int busy_len, retval;
|
||||
|
||||
kenwood_transaction (rig, "BY;", 3, busybuf, &busy_len);
|
||||
retval = kenwood_transaction (rig, "BY;", 3, busybuf, &busy_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (busy_len != 4) {
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_dcd: wrong answer len=%d\n",
|
||||
|
@ -600,17 +608,7 @@ int kenwood_set_trn(RIG *rig, vfo_t vfo, int trn)
|
|||
|
||||
trn_len = sprintf(trnbuf,"AI%c;", trn==RIG_TRN_RIG?'1':'0');
|
||||
|
||||
kenwood_transaction (rig, trnbuf, trn_len, ackbuf, &ack_len);
|
||||
|
||||
#if 0
|
||||
if (ack_len != 1) {
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_set_trn: ack NG, len=%d\n",
|
||||
ack_len);
|
||||
return -RIG_ERJCTED;
|
||||
}
|
||||
#endif
|
||||
|
||||
return RIG_OK;
|
||||
return kenwood_transaction (rig, trnbuf, trn_len, ackbuf, &ack_len);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -620,9 +618,11 @@ int kenwood_set_trn(RIG *rig, vfo_t vfo, int trn)
|
|||
int kenwood_get_trn(RIG *rig, vfo_t vfo, int *trn)
|
||||
{
|
||||
unsigned char trnbuf[16];
|
||||
int trn_len;
|
||||
int trn_len, retval;
|
||||
|
||||
kenwood_transaction (rig, "AI;", 3, trnbuf, &trn_len);
|
||||
retval = kenwood_transaction (rig, "AI;", 3, trnbuf, &trn_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (trn_len != 4) {
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_trn: wrong answer"
|
||||
|
@ -645,9 +645,7 @@ int kenwood_set_powerstat(RIG *rig, powerstat_t status)
|
|||
|
||||
pwr_len = sprintf(pwrbuf,"PS%c;", status==RIG_POWER_ON?'1':'0');
|
||||
|
||||
kenwood_transaction (rig, pwrbuf, pwr_len, ackbuf, &ack_len);
|
||||
|
||||
return RIG_OK;
|
||||
return kenwood_transaction (rig, pwrbuf, pwr_len, ackbuf, &ack_len);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -657,9 +655,11 @@ int kenwood_set_powerstat(RIG *rig, powerstat_t status)
|
|||
int kenwood_get_powerstat(RIG *rig, powerstat_t *status)
|
||||
{
|
||||
unsigned char pwrbuf[16];
|
||||
int pwr_len;
|
||||
int pwr_len, retval;
|
||||
|
||||
kenwood_transaction (rig, "PS;", 3, pwrbuf, &pwr_len);
|
||||
retval = kenwood_transaction (rig, "PS;", 3, pwrbuf, &pwr_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (pwr_len != 4) {
|
||||
rig_debug(RIG_DEBUG_ERR,"kenwood_get_powerstat: wrong answer "
|
||||
|
@ -696,9 +696,7 @@ int kenwood_reset(RIG *rig, reset_t reset)
|
|||
}
|
||||
rst_len = sprintf(rstbuf,"SR%c;", rst);
|
||||
|
||||
kenwood_transaction (rig, rstbuf, rst_len, ackbuf, &ack_len);
|
||||
|
||||
return RIG_OK;
|
||||
return kenwood_transaction (rig, rstbuf, rst_len, ackbuf, &ack_len);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -709,7 +707,7 @@ int kenwood_send_morse(RIG *rig, vfo_t vfo, const char *msg)
|
|||
{
|
||||
unsigned char morsebuf[30], ackbuf[16];
|
||||
int morse_len, ack_len;
|
||||
int msg_len, buff_len;
|
||||
int msg_len, buff_len, retval;
|
||||
const char *p;
|
||||
|
||||
p = msg;
|
||||
|
@ -726,8 +724,11 @@ int kenwood_send_morse(RIG *rig, vfo_t vfo, const char *msg)
|
|||
strncat(morsebuf, p, buff_len);
|
||||
strcat(morsebuf, ";");
|
||||
morse_len = 4 + buff_len;
|
||||
kenwood_transaction (rig, morsebuf, morse_len,
|
||||
retval = kenwood_transaction (rig, morsebuf, morse_len,
|
||||
ackbuf, &ack_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
msg_len -= buff_len;
|
||||
p += buff_len;
|
||||
}
|
||||
|
|
78
pcr/pcr.c
78
pcr/pcr.c
|
@ -6,7 +6,7 @@
|
|||
* via serial interface to an Icom PCR-1xxx radio.
|
||||
*
|
||||
*
|
||||
* $Id: pcr.c,v 1.5 2001-06-04 17:01:21 f4cfe Exp $
|
||||
* $Id: pcr.c,v 1.6 2001-06-12 07:07:11 f4cfe Exp $
|
||||
*
|
||||
*
|
||||
*
|
||||
|
@ -95,12 +95,14 @@ const int pcr1_ctcss_list[] = {
|
|||
*/
|
||||
int pcr_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, int *data_len)
|
||||
{
|
||||
int i;
|
||||
int i, retval;
|
||||
struct rig_state *rs;
|
||||
|
||||
rs = &rig->state;
|
||||
|
||||
write_block(&rs->rigport, cmd, cmd_len);
|
||||
retval = write_block(&rs->rigport, cmd, cmd_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
/*
|
||||
* buffered read are quite helpful here!
|
||||
|
@ -108,12 +110,16 @@ int pcr_transaction(RIG *rig, const char *cmd, int cmd_len, char *data, int *dat
|
|||
*/
|
||||
i = 0;
|
||||
do {
|
||||
fread_block(&rs->rigport, data+i, 1);
|
||||
} while (data[i++] != ';');
|
||||
retval = fread_block(&rs->rigport, data+i, 1);
|
||||
if (retval == 0)
|
||||
continue; /* huh!? */
|
||||
if (retval < 0)
|
||||
return retval;
|
||||
} while (i++ < *data_len);
|
||||
|
||||
*data_len = i;
|
||||
*data_len = i; /* useless ? */
|
||||
|
||||
return i;
|
||||
return RIG_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -134,13 +140,13 @@ int pcr_init(RIG *rig)
|
|||
}
|
||||
|
||||
/*
|
||||
* FIXME: how can we retrieve current status?
|
||||
* FIXME: how can we retrieve initial status?
|
||||
*/
|
||||
priv->last_freq = MHz(145);
|
||||
priv->last_mode = MD_FM;
|
||||
priv->last_filter = FLT_15kHz;
|
||||
|
||||
rig->state.priv = (void*)priv;
|
||||
rig->state.priv = (rig_ptr_t)priv;
|
||||
|
||||
return RIG_OK;
|
||||
}
|
||||
|
@ -170,14 +176,17 @@ int pcr_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
|||
{
|
||||
struct pcr_priv_data *priv;
|
||||
unsigned char freqbuf[32], ackbuf[16];
|
||||
int freq_len,ack_len;
|
||||
int freq_len, ack_len, retval;
|
||||
|
||||
priv = (struct pcr_priv_data *)rig->state.priv;
|
||||
|
||||
freq_len = sprintf(freqbuf,"K0%010Ld0%c0%c00" CRLF, freq,
|
||||
priv->last_mode, priv->last_filter);
|
||||
|
||||
pcr_transaction (rig, freqbuf, freq_len, ackbuf, &ack_len);
|
||||
ack_len = 6;
|
||||
retval = pcr_transaction (rig, freqbuf, freq_len, ackbuf, &ack_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (ack_len != 6) {
|
||||
rig_debug(RIG_DEBUG_ERR,"pcr_set_freq: ack NG, len=%d\n",
|
||||
|
@ -213,7 +222,7 @@ int pcr_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||
{
|
||||
struct pcr_priv_data *priv;
|
||||
unsigned char mdbuf[32],ackbuf[16];
|
||||
int mdbuf_len, ack_len;
|
||||
int mdbuf_len, ack_len, retval;
|
||||
int pcrmode, pcrfilter;
|
||||
|
||||
priv = (struct pcr_priv_data *)rig->state.priv;
|
||||
|
@ -255,7 +264,10 @@ int pcr_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||
mdbuf_len = sprintf(mdbuf,"K0%010Ld0%c0%c00" CRLF, priv->last_freq,
|
||||
pcrmode, pcrfilter);
|
||||
|
||||
pcr_transaction (rig, mdbuf, mdbuf_len, ackbuf, &ack_len);
|
||||
ack_len = 6;
|
||||
retval = pcr_transaction (rig, mdbuf, mdbuf_len, ackbuf, &ack_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (ack_len != 6) {
|
||||
rig_debug(RIG_DEBUG_ERR,"pcr_set_mode: ack NG, len=%d\n",
|
||||
|
@ -315,7 +327,7 @@ const char *pcr_get_info(RIG *rig)
|
|||
struct pcr_priv_data *priv;
|
||||
unsigned char ackbuf[16];
|
||||
static char buf[100]; /* FIXME: reentrancy */
|
||||
int ack_len;
|
||||
int ack_len, retval;
|
||||
int proto_version = 0, frmwr_version = 0;
|
||||
int options = 0, country_code = 0;
|
||||
char *country;
|
||||
|
@ -325,47 +337,51 @@ const char *pcr_get_info(RIG *rig)
|
|||
/*
|
||||
* protocol version
|
||||
*/
|
||||
pcr_transaction (rig, "G2?" CRLF, 5, ackbuf, &ack_len);
|
||||
|
||||
if (ack_len != 6) {
|
||||
ack_len = 6;
|
||||
retval = pcr_transaction (rig, "G2?" CRLF, 5, ackbuf, &ack_len);
|
||||
if (retval != RIG_OK || ack_len != 6) {
|
||||
rig_debug(RIG_DEBUG_ERR,"pcr_get_info: ack NG, len=%d\n",
|
||||
ack_len);
|
||||
} else {
|
||||
sscanf(ackbuf, "G2%d", &proto_version);
|
||||
}
|
||||
sscanf(ackbuf, "G2%d", &proto_version);
|
||||
|
||||
/*
|
||||
* Firmware version
|
||||
*/
|
||||
pcr_transaction (rig, "G4?" CRLF, 5, ackbuf, &ack_len);
|
||||
|
||||
if (ack_len != 6) {
|
||||
ack_len = 6;
|
||||
retval = pcr_transaction (rig, "G4?" CRLF, 5, ackbuf, &ack_len);
|
||||
if (retval != RIG_OK || ack_len != 6) {
|
||||
rig_debug(RIG_DEBUG_ERR,"pcr_get_info: ack NG, len=%d\n",
|
||||
ack_len);
|
||||
} else {
|
||||
sscanf(ackbuf, "G4%d", &frmwr_version);
|
||||
}
|
||||
sscanf(ackbuf, "G4%d", &frmwr_version);
|
||||
|
||||
|
||||
/*
|
||||
* optional devices
|
||||
*/
|
||||
pcr_transaction (rig, "GD?" CRLF, 5, ackbuf, &ack_len);
|
||||
|
||||
if (ack_len != 6) {
|
||||
ack_len = 6;
|
||||
retval = pcr_transaction (rig, "GD?" CRLF, 5, ackbuf, &ack_len);
|
||||
if (retval != RIG_OK || ack_len != 6) {
|
||||
rig_debug(RIG_DEBUG_ERR,"pcr_get_info: ack NG, len=%d\n",
|
||||
ack_len);
|
||||
} else {
|
||||
sscanf(ackbuf, "GD%d", &options);
|
||||
}
|
||||
sscanf(ackbuf, "GD%d", &options);
|
||||
|
||||
/*
|
||||
* Country
|
||||
*/
|
||||
pcr_transaction (rig, "GE?" CRLF, 5, ackbuf, &ack_len);
|
||||
|
||||
if (ack_len != 6) {
|
||||
ack_len = 6;
|
||||
retval = pcr_transaction (rig, "GE?" CRLF, 5, ackbuf, &ack_len);
|
||||
if (retval != RIG_OK || ack_len != 6) {
|
||||
rig_debug(RIG_DEBUG_ERR,"pcr_get_info: ack NG, len=%d\n",
|
||||
ack_len);
|
||||
} else {
|
||||
sscanf(ackbuf, "GE%d", &country_code);
|
||||
}
|
||||
sscanf(ackbuf, "GE%d", &country_code);
|
||||
|
||||
switch (country_code) {
|
||||
case COUNTRY_JAPAN: country = "Japan"; break;
|
||||
case COUNTRY_USA: country = "USA"; break;
|
||||
|
|
Ładowanie…
Reference in New Issue