kopia lustrzana https://github.com/Hamlib/Hamlib
* implemented RIG_LEVEL_KEYSPD and RIG_LEVEL_PREAMP
* fixed RIG_LEVEL_ATT * fix kenwood_set_channel prototype git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@2628 7ae35d74-ebe9-4afe-98af-79ac388436b8Hamlib-1.2.9
rodzic
4c46fb604b
commit
080cb8cbaa
|
@ -3,7 +3,7 @@
|
||||||
* Copyright (c) 2000-2009 by Stephane Fillod
|
* Copyright (c) 2000-2009 by Stephane Fillod
|
||||||
* Copyright (C) 2009 Alessandro Zummo <a.zummo@towertech.it>
|
* Copyright (C) 2009 Alessandro Zummo <a.zummo@towertech.it>
|
||||||
*
|
*
|
||||||
* $Id: kenwood.c,v 1.115 2009-02-09 20:59:31 azummo Exp $
|
* $Id: kenwood.c,v 1.116 2009-02-10 22:48:24 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
|
||||||
|
@ -30,6 +30,7 @@
|
||||||
#include <string.h> /* String function definitions */
|
#include <string.h> /* String function definitions */
|
||||||
#include <unistd.h> /* UNIX standard function definitions */
|
#include <unistd.h> /* UNIX standard function definitions */
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
#include "hamlib/rig.h"
|
#include "hamlib/rig.h"
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
|
@ -905,14 +906,36 @@ int kenwood_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
||||||
|
|
||||||
case RIG_LEVEL_ATT:
|
case RIG_LEVEL_ATT:
|
||||||
/* set the attenuator if a correct value is entered */
|
/* set the attenuator if a correct value is entered */
|
||||||
for (i=0; i<MAXDBLSTSIZ; i++)
|
if (val.i == 0)
|
||||||
if (kenwood_val == rig->state.attenuator[i])
|
sprintf(levelbuf, "RA00");
|
||||||
{
|
else {
|
||||||
sprintf(levelbuf, "RA%02d", kenwood_val/6);
|
for (i=0; i<MAXDBLSTSIZ && rig->state.attenuator[i]; i++) {
|
||||||
break;
|
if (val.i == rig->state.attenuator[i])
|
||||||
|
{
|
||||||
|
sprintf(levelbuf, "RA%02d", i+1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
if (val.i != rig->state.attenuator[i])
|
||||||
sprintf(levelbuf, "RA00");
|
return -RIG_EINVAL;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RIG_LEVEL_PREAMP:
|
||||||
|
/* set the preamp if a correct value is entered */
|
||||||
|
if (val.i == 0)
|
||||||
|
sprintf(levelbuf, "PA0");
|
||||||
|
else {
|
||||||
|
for (i=0; i<MAXDBLSTSIZ && rig->state.preamp[i]; i++) {
|
||||||
|
if (val.i == rig->state.preamp[i])
|
||||||
|
{
|
||||||
|
sprintf(levelbuf, "PA%01d", i+1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (val.i != rig->state.preamp[i])
|
||||||
|
return -RIG_EINVAL;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_LEVEL_SLOPE_HIGH:
|
case RIG_LEVEL_SLOPE_HIGH:
|
||||||
|
@ -933,6 +956,12 @@ int kenwood_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
||||||
sprintf(levelbuf, "PT%02d", (val.i / 50) - 8);
|
sprintf(levelbuf, "PT%02d", (val.i / 50) - 8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case RIG_LEVEL_KEYSPD:
|
||||||
|
if(val.i > 50 || val.i < 5)
|
||||||
|
return -RIG_EINVAL;
|
||||||
|
sprintf(levelbuf, "KS%03d", val.i);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
rig_debug(RIG_DEBUG_ERR,"Unsupported set_level %d", level);
|
rig_debug(RIG_DEBUG_ERR,"Unsupported set_level %d", level);
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
|
@ -1008,16 +1037,45 @@ int kenwood_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
||||||
if (lvl == 0) {
|
if (lvl == 0) {
|
||||||
val->i = 0;
|
val->i = 0;
|
||||||
} else {
|
} else {
|
||||||
for (i=0; i<lvl && i<MAXDBLSTSIZ; i++)
|
for (i=0; i<lvl && i<MAXDBLSTSIZ; i++) {
|
||||||
if (rig->state.attenuator[i] == 0) {
|
if (rig->state.attenuator[i] == 0) {
|
||||||
rig_debug(RIG_DEBUG_ERR,"%s: "
|
rig_debug(RIG_DEBUG_ERR,"%s: "
|
||||||
"unexpected att level %d\n",
|
"unexpected att level %d\n",
|
||||||
__func__, lvl);
|
__func__, lvl);
|
||||||
return -RIG_EPROTO;
|
return -RIG_EPROTO;
|
||||||
}
|
}
|
||||||
if (i != lvl)
|
}
|
||||||
return -RIG_EINTERNAL;
|
if (i != lvl)
|
||||||
val->i = rig->state.attenuator[i-1];
|
return -RIG_EINTERNAL;
|
||||||
|
val->i = rig->state.attenuator[i-1];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RIG_LEVEL_PREAMP:
|
||||||
|
retval = kenwood_safe_transaction(rig, "PA", lvlbuf, 50, 4);
|
||||||
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
|
|
||||||
|
if (lvlbuf[2] == '0')
|
||||||
|
val->i = 0;
|
||||||
|
else if (isdigit(lvlbuf[2])) {
|
||||||
|
lvl = lvlbuf[2]-'0';
|
||||||
|
for (i=0; i<lvl && i<MAXDBLSTSIZ; i++) {
|
||||||
|
if (rig->state.preamp[i] == 0) {
|
||||||
|
rig_debug(RIG_DEBUG_ERR,"%s: "
|
||||||
|
"unexpected preamp level %d\n",
|
||||||
|
__func__, lvl);
|
||||||
|
return -RIG_EPROTO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (i != lvl)
|
||||||
|
return -RIG_EINTERNAL;
|
||||||
|
val->i = rig->state.preamp[i-1];
|
||||||
|
} else {
|
||||||
|
rig_debug(RIG_DEBUG_ERR,"%s: "
|
||||||
|
"unexpected preamp char '%c'\n",
|
||||||
|
__func__, lvlbuf[2]);
|
||||||
|
return -RIG_EPROTO;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1072,13 +1130,19 @@ int kenwood_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
||||||
val->i = (val->i * 1000) + 1000; /* 00 - 08 */
|
val->i = (val->i * 1000) + 1000; /* 00 - 08 */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_LEVEL_PREAMP:
|
case RIG_LEVEL_KEYSPD:
|
||||||
|
retval = kenwood_safe_transaction(rig, "KS", lvlbuf, 50, 6);
|
||||||
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
|
|
||||||
|
sscanf(lvlbuf+2, "%d", &val->i);
|
||||||
|
break;
|
||||||
|
|
||||||
case RIG_LEVEL_IF:
|
case RIG_LEVEL_IF:
|
||||||
case RIG_LEVEL_APF:
|
case RIG_LEVEL_APF:
|
||||||
case RIG_LEVEL_NR:
|
case RIG_LEVEL_NR:
|
||||||
case RIG_LEVEL_PBT_IN:
|
case RIG_LEVEL_PBT_IN:
|
||||||
case RIG_LEVEL_PBT_OUT:
|
case RIG_LEVEL_PBT_OUT:
|
||||||
case RIG_LEVEL_KEYSPD:
|
|
||||||
case RIG_LEVEL_NOTCHF:
|
case RIG_LEVEL_NOTCHF:
|
||||||
case RIG_LEVEL_COMP:
|
case RIG_LEVEL_COMP:
|
||||||
case RIG_LEVEL_BKINDL:
|
case RIG_LEVEL_BKINDL:
|
||||||
|
@ -1756,7 +1820,7 @@ int kenwood_get_channel(RIG *rig, channel_t *chan)
|
||||||
return RIG_OK;
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int kenwood_set_channel(RIG *rig, channel_t *chan)
|
int kenwood_set_channel(RIG *rig, const channel_t *chan)
|
||||||
{
|
{
|
||||||
char buf[26];
|
char buf[26];
|
||||||
char mode, tx_mode = 0;
|
char mode, tx_mode = 0;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* Hamlib Kenwood backend - main header
|
* Hamlib Kenwood backend - main header
|
||||||
* Copyright (c) 2000-2009 by Stephane Fillod
|
* Copyright (c) 2000-2009 by Stephane Fillod
|
||||||
*
|
*
|
||||||
* $Id: kenwood.h,v 1.53 2009-02-09 20:59:31 azummo Exp $
|
* $Id: kenwood.h,v 1.54 2009-02-10 22:48:25 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
|
||||||
|
@ -120,7 +120,7 @@ int kenwood_set_mem(RIG *rig, vfo_t vfo, int ch);
|
||||||
int kenwood_get_mem(RIG *rig, vfo_t vfo, int *ch);
|
int kenwood_get_mem(RIG *rig, vfo_t vfo, int *ch);
|
||||||
int kenwood_get_mem_if(RIG *rig, vfo_t vfo, int *ch);
|
int kenwood_get_mem_if(RIG *rig, vfo_t vfo, int *ch);
|
||||||
int kenwood_get_channel(RIG *rig, channel_t *chan);
|
int kenwood_get_channel(RIG *rig, channel_t *chan);
|
||||||
int kenwood_set_channel(RIG *rig, channel_t *chan);
|
int kenwood_set_channel(RIG *rig, const channel_t *chan);
|
||||||
int kenwood_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch);
|
int kenwood_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch);
|
||||||
const char * kenwood_get_info(RIG *rig);
|
const char * kenwood_get_info(RIG *rig);
|
||||||
int kenwood_get_id(RIG *rig, char *buf);
|
int kenwood_get_id(RIG *rig, char *buf);
|
||||||
|
|
Ładowanie…
Reference in New Issue