kopia lustrzana https://github.com/Hamlib/Hamlib
Fixed CWPITCH function on IC-R75 to use 'set mode data' command. Added level granularity steps
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1826 7ae35d74-ebe9-4afe-98af-79ac388436b8Hamlib-1.2.3
rodzic
4e38224cad
commit
3fd5d8f272
37
icom/icom.c
37
icom/icom.c
|
@ -2,7 +2,7 @@
|
|||
* Hamlib CI-V backend - main file
|
||||
* Copyright (c) 2000-2004 by Stephane Fillod
|
||||
*
|
||||
* $Id: icom.c,v 1.87 2004-08-21 23:53:39 fillods Exp $
|
||||
* $Id: icom.c,v 1.88 2004-08-27 01:49:38 fineware 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
|
||||
|
@ -614,9 +614,6 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
case RIG_LEVEL_NR:
|
||||
icom_val = val.f * 240;
|
||||
break;
|
||||
case RIG_LEVEL_CWPITCH:
|
||||
icom_val = ((float)val.i - 300.0) / 600.0 * 255;
|
||||
break;
|
||||
case RIG_LEVEL_PBT_IN:
|
||||
case RIG_LEVEL_PBT_OUT:
|
||||
icom_val = (val.f / 10.0) + 128;
|
||||
|
@ -700,6 +697,14 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
case RIG_LEVEL_CWPITCH:
|
||||
lvl_cn = C_CTL_LVL;
|
||||
lvl_sc = S_LVL_CWPITCH;
|
||||
/* use 'set mode' call for CWPITCH on IC-R75*/
|
||||
if (rig->caps->rig_model == RIG_MODEL_ICR75) {
|
||||
lvl_cn = C_CTL_MEM;
|
||||
lvl_sc = S_MEM_MODE_SLCT;
|
||||
lvl_len = 3;
|
||||
lvlbuf[0] = S_PRM_CWPITCH;
|
||||
to_bcd_be(lvlbuf+1, (long long)icom_val, 4);
|
||||
}
|
||||
break;
|
||||
case RIG_LEVEL_RFPOWER:
|
||||
lvl_cn = C_CTL_LVL;
|
||||
|
@ -776,8 +781,8 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
{
|
||||
struct icom_priv_data *priv;
|
||||
struct rig_state *rs;
|
||||
unsigned char lvlbuf[MAXFRAMELEN];
|
||||
int lvl_len;
|
||||
unsigned char lvlbuf[MAXFRAMELEN], lvl2buf[MAXFRAMELEN];
|
||||
int lvl_len, lvl2_len;
|
||||
int lvl_cn, lvl_sc; /* Command Number, Subcommand */
|
||||
int icom_val;
|
||||
int cmdhead;
|
||||
|
@ -786,7 +791,7 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
rs = &rig->state;
|
||||
priv = (struct icom_priv_data*)rs->priv;
|
||||
|
||||
|
||||
lvl2_len = 0;
|
||||
/* Optimize:
|
||||
* sort the switch cases with the most frequent first
|
||||
*/
|
||||
|
@ -843,6 +848,13 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
case RIG_LEVEL_CWPITCH:
|
||||
lvl_cn = C_CTL_LVL;
|
||||
lvl_sc = S_LVL_CWPITCH;
|
||||
/* use 'set mode' call for CWPITCH on IC-R75*/
|
||||
if (rig->caps->rig_model == RIG_MODEL_ICR75) {
|
||||
lvl_cn = C_CTL_MEM;
|
||||
lvl_sc = S_MEM_MODE_SLCT;
|
||||
lvl2_len = 1;
|
||||
lvl2buf[0] = S_PRM_CWPITCH;
|
||||
}
|
||||
break;
|
||||
case RIG_LEVEL_RFPOWER:
|
||||
lvl_cn = C_CTL_LVL;
|
||||
|
@ -893,7 +905,8 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
retval = icom_transaction (rig, lvl_cn, lvl_sc, NULL, 0,
|
||||
/* use lvl2buf and lvl2_len for 'set mode' subcommand */
|
||||
retval = icom_transaction (rig, lvl_cn, lvl_sc, lvl2buf, lvl2_len,
|
||||
lvlbuf, &lvl_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
@ -903,6 +916,11 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
*/
|
||||
cmdhead = (lvl_sc == -1) ? 1:2;
|
||||
lvl_len -= cmdhead;
|
||||
/* back off one char since first char in buffer is now 'set mode' subcommand */
|
||||
if ((rig->caps->rig_model == RIG_MODEL_ICR75)&&(level==RIG_LEVEL_CWPITCH)){
|
||||
cmdhead = 3;
|
||||
lvl_len--;
|
||||
}
|
||||
|
||||
if (lvlbuf[0] != ACK && lvlbuf[0] != lvl_cn) {
|
||||
rig_debug(RIG_DEBUG_ERR,"icom_get_level: ack NG (%#.2x), "
|
||||
|
@ -955,9 +973,6 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
case RIG_LEVEL_NR:
|
||||
val->f = (float)icom_val / 240;
|
||||
break;
|
||||
case RIG_LEVEL_CWPITCH:
|
||||
val->i = ((float)icom_val / 255.0 * 600.0) + 300.0;
|
||||
break;
|
||||
case RIG_LEVEL_PBT_IN:
|
||||
case RIG_LEVEL_PBT_OUT:
|
||||
if (icom_val == 255)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Hamlib CI-V backend - defines for the ICOM "CI-V" interface.
|
||||
* Copyright (c) 2000-2002 by Stephane Fillod
|
||||
*
|
||||
* $Id: icom_defs.h,v 1.15 2004-08-21 23:53:39 fillods Exp $
|
||||
* $Id: icom_defs.h,v 1.16 2004-08-27 01:49:38 fineware 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
|
||||
|
@ -313,6 +313,7 @@
|
|||
* C_CTL_MODE Misc CI-V Mode settings
|
||||
*/
|
||||
#define S_PRM_BEEP 0x02
|
||||
#define S_PRM_CWPITCH 0x10
|
||||
#define S_PRM_LANG 0x15
|
||||
#define S_PRM_BACKLT 0x21
|
||||
#define S_PRM_SLEEP 0x32
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Hamlib CI-V backend - description of IC-R75
|
||||
* Copyright (c) 2000-2004 by Stephane Fillod
|
||||
*
|
||||
* $Id: icr75.c,v 1.3 2004-08-21 23:53:39 fillods Exp $
|
||||
* $Id: icr75.c,v 1.4 2004-08-27 01:49:38 fineware 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
|
||||
|
@ -130,9 +130,10 @@ const struct rig_caps icr75_caps = {
|
|||
.has_set_parm = RIG_PARM_SET(ICR75_PARM_ALL),
|
||||
.level_gran = {
|
||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||
[LVL_PBT_IN] = { .min = { .f = -1280 }, .max = { .f = +1280 } },
|
||||
[LVL_PBT_OUT] = { .min = { .f = -1280 }, .max = { .f = +1280 } },
|
||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 900 } },
|
||||
[LVL_PBT_IN] = { .min = { .f = -1280 }, .max = { .f = +1280 }, .step = { .f = 15 } },
|
||||
[LVL_PBT_OUT] = { .min = { .f = -1280 }, .max = { .f = +1280 }, .step = { .f = 15 } },
|
||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 900 }, .step = { .i = 10 } },
|
||||
[LVL_NR] = { .min = { .f = 0.0 }, .max = { .f = 1.0 }, .step = { .f = 0.066666667 } },
|
||||
},
|
||||
.parm_gran = {
|
||||
[PARM_APO] = { .min = { .i = 1 }, .max = { .i = 1439} },
|
||||
|
|
Ładowanie…
Reference in New Issue