From: Mark J. F. <fin...@us...> - 2004-08-27 01:49:48
|
Update of /cvsroot/hamlib/hamlib/icom In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15405/icom Modified Files: icom_defs.h icr75.c icom.c Log Message: Fixed CWPITCH function on IC-R75 to use 'set mode data' command. Added level granularity steps Index: icom_defs.h =================================================================== RCS file: /cvsroot/hamlib/hamlib/icom/icom_defs.h,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -r1.15 -r1.16 *** icom_defs.h 21 Aug 2004 23:53:39 -0000 1.15 --- icom_defs.h 27 Aug 2004 01:49:38 -0000 1.16 *************** *** 314,317 **** --- 314,318 ---- */ #define S_PRM_BEEP 0x02 + #define S_PRM_CWPITCH 0x10 #define S_PRM_LANG 0x15 #define S_PRM_BACKLT 0x21 Index: icr75.c =================================================================== RCS file: /cvsroot/hamlib/hamlib/icom/icr75.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** icr75.c 21 Aug 2004 23:53:39 -0000 1.3 --- icr75.c 27 Aug 2004 01:49:38 -0000 1.4 *************** *** 131,137 **** .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 } }, }, .parm_gran = { --- 131,138 ---- .level_gran = { [LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } }, ! [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 = { Index: icom.c =================================================================== RCS file: /cvsroot/hamlib/hamlib/icom/icom.c,v retrieving revision 1.87 retrieving revision 1.88 diff -C2 -r1.87 -r1.88 *** icom.c 21 Aug 2004 23:53:39 -0000 1.87 --- icom.c 27 Aug 2004 01:49:38 -0000 1.88 *************** *** 453,457 **** struct rig_state *rs; unsigned char ackbuf[MAXFRAMELEN]; ! unsigned char icmode; signed char icmode_ext; int ack_len, retval, err; --- 453,457 ---- struct rig_state *rs; unsigned char ackbuf[MAXFRAMELEN]; ! unsigned char icmode; signed char icmode_ext; int ack_len, retval, err; *************** *** 615,621 **** 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: --- 615,618 ---- *************** *** 624,628 **** icom_val = 255; break; ! default: break; } --- 621,625 ---- icom_val = 255; break; ! default: break; } *************** *** 701,704 **** --- 698,709 ---- 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: *************** *** 777,782 **** struct icom_priv_data *priv; struct rig_state *rs; ! unsigned char lvlbuf[MAXFRAMELEN]; ! int lvl_len; int lvl_cn, lvl_sc; /* Command Number, Subcommand */ int icom_val; --- 782,787 ---- struct icom_priv_data *priv; struct rig_state *rs; ! unsigned char lvlbuf[MAXFRAMELEN], lvl2buf[MAXFRAMELEN]; ! int lvl_len, lvl2_len; int lvl_cn, lvl_sc; /* Command Number, Subcommand */ int icom_val; *************** *** 787,791 **** priv = (struct icom_priv_data*)rs->priv; ! /* Optimize: * sort the switch cases with the most frequent first --- 792,796 ---- priv = (struct icom_priv_data*)rs->priv; ! lvl2_len = 0; /* Optimize: * sort the switch cases with the most frequent first *************** *** 844,847 **** --- 849,859 ---- 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: *************** *** 894,898 **** } ! retval = icom_transaction (rig, lvl_cn, lvl_sc, NULL, 0, lvlbuf, &lvl_len); if (retval != RIG_OK) --- 906,911 ---- } ! /* 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) *************** *** 904,907 **** --- 917,925 ---- 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) { *************** *** 956,974 **** 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) val->f = 1280.0; ! else val->f = (float)(icom_val - 128) * 10.0; break; ! default: break; } ! } ! rig_debug(RIG_DEBUG_TRACE,"icom_get_level: %d %d %d %f\n", lvl_len, icom_val, val->i, val->f); --- 974,989 ---- val->f = (float)icom_val / 240; break; case RIG_LEVEL_PBT_IN: case RIG_LEVEL_PBT_OUT: if (icom_val == 255) val->f = 1280.0; ! else val->f = (float)(icom_val - 128) * 10.0; break; ! default: break; } ! } ! rig_debug(RIG_DEBUG_TRACE,"icom_get_level: %d %d %d %f\n", lvl_len, icom_val, val->i, val->f); *************** *** 2283,2296 **** if (rig->caps->rig_model == RIG_MODEL_ICR75) { retval = icom_transaction(rig, C_RD_MODE, -1, NULL, 0, ! ackbuf, &ack_len); if (retval != RIG_OK) return retval; ! ! *status = ((ack_len == 3)&&(ackbuf[0] == C_RD_MODE)) ? RIG_POWER_ON : RIG_POWER_OFF; ! return RIG_OK; } ! retval = icom_transaction(rig, C_SET_PWR, -1, NULL, 0, ackbuf, &ack_len); --- 2298,2311 ---- if (rig->caps->rig_model == RIG_MODEL_ICR75) { retval = icom_transaction(rig, C_RD_MODE, -1, NULL, 0, ! ackbuf, &ack_len); if (retval != RIG_OK) return retval; ! ! *status = ((ack_len == 3)&&(ackbuf[0] == C_RD_MODE)) ? RIG_POWER_ON : RIG_POWER_OFF; ! return RIG_OK; } ! retval = icom_transaction(rig, C_SET_PWR, -1, NULL, 0, ackbuf, &ack_len); *************** *** 2708,2713 **** * try all possible addresses on the CI-V bus * FIXME: actualy, old rigs do not support C_RD_TRXID cmd! ! * Try to be smart, and deduce model depending ! * on freq range, return address, and * available commands. */ --- 2723,2728 ---- * try all possible addresses on the CI-V bus * FIXME: actualy, old rigs do not support C_RD_TRXID cmd! ! * Try to be smart, and deduce model depending ! * on freq range, return address, and * available commands. */ |