[Hamlib-cvs-digest] CVS: hamlib/icom ic706.c,1.6,1.7 icom.h,1.6,1.7 icom.c,1.7,1.8 icom_defs.h,1.4,1
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: Stephane F. <f4...@us...> - 2000-10-23 19:48:17
|
Update of /cvsroot/hamlib/hamlib/icom In directory slayer.i.sourceforge.net:/tmp/cvs-serv21781 Modified Files: ic706.c icom.h icom.c icom_defs.h Log Message: * Added some more capabilities Index: ic706.c =================================================================== RCS file: /cvsroot/hamlib/hamlib/icom/ic706.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** ic706.c 2000/10/16 22:32:36 1.6 --- ic706.c 2000/10/23 19:48:12 1.7 *************** *** 214,217 **** --- 214,225 ---- set_channel: icom_set_channel, get_channel: icom_get_channel, + set_mem: icom_set_mem, + mv_ctl: icom_mv_ctl, + set_ptt: icom_set_ptt, + get_ptt: icom_get_ptt, + set_ts: icom_set_ts, + get_ts: icom_get_ts, + set_rptr_shift: icom_set_rptr_shift, + get_rptr_shift: icom_get_rptr_shift, }; Index: icom.h =================================================================== RCS file: /cvsroot/hamlib/hamlib/icom/icom.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** icom.h 2000/10/16 22:35:57 1.6 --- icom.h 2000/10/23 19:48:12 1.7 *************** *** 48,61 **** int icom_get_mode(RIG *rig, rmode_t *mode); int icom_set_vfo(RIG *rig, vfo_t vfo); ! int icom_set_rpt_shift(RIG *rig, rptr_shift_t rptr_shift); ! int icom_get_rpt_shift(RIG *rig, rptr_shift_t *rptr_shift); int icom_set_ts(RIG *rig, unsigned long ts); int icom_get_ts(RIG *rig, unsigned long *ts); int icom_set_ptt(RIG *rig, ptt_t ptt); int icom_get_ptt(RIG *rig, ptt_t *ptt); ! int icom_set_level(RIG *rig, setting_t set, value_t val); ! int icom_get_level(RIG *rig, setting_t set, value_t *val); int icom_set_channel(RIG *rig, const channel_t *chan); int icom_get_channel(RIG *rig, channel_t *chan); int icom_decode_event(RIG *rig); --- 48,66 ---- int icom_get_mode(RIG *rig, rmode_t *mode); int icom_set_vfo(RIG *rig, vfo_t vfo); ! int icom_set_rptr_shift(RIG *rig, rptr_shift_t rptr_shift); ! int icom_get_rptr_shift(RIG *rig, rptr_shift_t *rptr_shift); int icom_set_ts(RIG *rig, unsigned long ts); int icom_get_ts(RIG *rig, unsigned long *ts); int icom_set_ptt(RIG *rig, ptt_t ptt); int icom_get_ptt(RIG *rig, ptt_t *ptt); ! int icom_set_bank(RIG *rig, int bank); ! int icom_set_mem(RIG *rig, int ch); ! int icom_mv_ctl(RIG *rig, mv_op_t op); ! int icom_set_level(RIG *rig, setting_t level, value_t val); ! int icom_get_level(RIG *rig, setting_t level, value_t *val); int icom_set_channel(RIG *rig, const channel_t *chan); int icom_get_channel(RIG *rig, channel_t *chan); + int icom_set_poweron(RIG *rig); + int icom_set_poweroff(RIG *rig); int icom_decode_event(RIG *rig); Index: icom.c =================================================================== RCS file: /cvsroot/hamlib/hamlib/icom/icom.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -r1.7 -r1.8 *** icom.c 2000/10/16 22:34:22 1.7 --- icom.c 2000/10/23 19:48:12 1.8 *************** *** 141,145 **** * TODO: sort this list with most frequent rigs first. */ - #define UNKNOWN_ADDR 0x01 static const struct icom_addr icom_addr_list[] = { { RIG_MODEL_IC706, 0x48 }, --- 141,144 ---- *************** *** 157,161 **** { RIG_MODEL_IC728, 0x38 }, { RIG_MODEL_IC729, 0x3a }, ! { RIG_MODEL_IC731, 0x04 }, { RIG_MODEL_IC735, 0x04 }, { RIG_MODEL_IC736, 0x40 }, --- 156,160 ---- { RIG_MODEL_IC728, 0x38 }, { RIG_MODEL_IC729, 0x3a }, ! { RIG_MODEL_IC731, 0x02 }, /* need confirmation */ { RIG_MODEL_IC735, 0x04 }, { RIG_MODEL_IC736, 0x40 }, *************** *** 185,189 **** { RIG_MODEL_ICR9000, 0x2a }, { RIG_MODEL_MINISCOUT, 0x94 }, ! { RIG_MODEL_IC718, UNKNOWN_ADDR }, { -1, 0 }, }; --- 184,188 ---- { RIG_MODEL_ICR9000, 0x2a }, { RIG_MODEL_MINISCOUT, 0x94 }, ! { RIG_MODEL_IC718, 0x36 }, /* need confirmation */ { -1, 0 }, }; *************** *** 437,441 **** * Assumes rig!=NULL, rig->state.priv!=NULL */ ! int icom_set_level(RIG *rig, setting_t set, value_t val) { return -RIG_ENIMPL; --- 436,440 ---- * Assumes rig!=NULL, rig->state.priv!=NULL */ ! int icom_set_level(RIG *rig, setting_t level, value_t val) { return -RIG_ENIMPL; *************** *** 446,450 **** * Assumes rig!=NULL, rig->state.priv!=NULL, val!=NULL */ ! int icom_get_level(RIG *rig, setting_t set, value_t *val) { struct icom_priv_data *priv; --- 445,449 ---- * Assumes rig!=NULL, rig->state.priv!=NULL, val!=NULL */ ! int icom_get_level(RIG *rig, setting_t level, value_t *val) { struct icom_priv_data *priv; *************** *** 459,463 **** ! switch (set) { case RIG_LEVEL_PREAMP: lvl_cn = C_CTL_FUNC; --- 458,462 ---- ! switch (level) { case RIG_LEVEL_PREAMP: lvl_cn = C_CTL_FUNC; *************** *** 554,558 **** break; default: ! rig_debug(RIG_DEBUG_ERR,"Unsupported get level %d", set); return -RIG_EINVAL; } --- 553,557 ---- break; default: ! rig_debug(RIG_DEBUG_ERR,"Unsupported get level %d", level); return -RIG_EINVAL; } *************** *** 585,589 **** #endif /* translate to db */ ! if (set == RIG_LEVEL_STRENGTH) val->i = rint(STR_MAX/(STR_CEILING-STR_FLOOR)*max(icom_val-STR_FLOOR,0)); else --- 584,588 ---- #endif /* translate to db */ ! if (level == RIG_LEVEL_STRENGTH) val->i = rint(STR_MAX/(STR_CEILING-STR_FLOOR)*max(icom_val-STR_FLOOR,0)); else *************** *** 595,639 **** /* - * icom_set_rpt_shift - * Assumes rig!=NULL, rig->state.priv!=NULL - */ - int icom_set_rpt_shift(RIG *rig, rptr_shift_t rptr_shift) - { - struct icom_priv_data *priv; - struct rig_state *rig_s; - unsigned char ackbuf[16]; - int ack_len; - int rptr_sc; - - rig_s = &rig->state; - priv = (struct icom_priv_data*)rig_s->priv; - - switch (rptr_shift) { - case RIG_RPT_SHIFT_NONE: - rptr_sc = S_DUP_OFF; /* Simplex mode */ - break; - case RIG_RPT_SHIFT_MINUS: - rptr_sc = S_DUP_M; /* Duples - mode */ - break; - case RIG_RPT_SHIFT_PLUS: - rptr_sc = S_DUP_P; /* Duplex + mode */ - break; - default: - rig_debug(RIG_DEBUG_ERR,"Unsupported shift %d", rptr_shift); - return -RIG_EINVAL; - } - - icom_transaction (rig, C_CTL_SPLT, rptr_sc, NULL, 0, ackbuf, &ack_len); - - if (ack_len != 1 || ackbuf[0] != ACK) { - rig_debug(RIG_DEBUG_ERR,"icom_set_rptr_shift: ack NG (%#.2x), - len=%d\n", ackbuf[0],ack_len); - return -RIG_ERJCTED; - } - - return RIG_OK; - } - - /* * icom_set_ptt * Assumes rig!=NULL, rig->state.priv!=NULL --- 594,597 ---- *************** *** 693,702 **** } /* ! * icom_get_rpt_shift * Assumes rig!=NULL, rig->state.priv!=NULL, rptr_shift!=NULL */ ! int icom_get_rpt_shift(RIG *rig, rptr_shift_t *rptr_shift) { struct icom_priv_data *priv; --- 651,701 ---- } + /* + * icom_set_rptr_shift + * Assumes rig!=NULL, rig->state.priv!=NULL + */ + int icom_set_rptr_shift(RIG *rig, rptr_shift_t rptr_shift) + { + struct icom_priv_data *priv; + struct rig_state *rig_s; + unsigned char ackbuf[16]; + int ack_len; + int rptr_sc; + + rig_s = &rig->state; + priv = (struct icom_priv_data*)rig_s->priv; + + switch (rptr_shift) { + case RIG_RPT_SHIFT_NONE: + rptr_sc = S_DUP_OFF; /* Simplex mode */ + break; + case RIG_RPT_SHIFT_MINUS: + rptr_sc = S_DUP_M; /* Duplex - mode */ + break; + case RIG_RPT_SHIFT_PLUS: + rptr_sc = S_DUP_P; /* Duplex + mode */ + break; + default: + rig_debug(RIG_DEBUG_ERR,"Unsupported shift %d", rptr_shift); + return -RIG_EINVAL; + } + + icom_transaction (rig, C_CTL_SPLT, rptr_sc, NULL, 0, ackbuf, &ack_len); + + if (ack_len != 1 || ackbuf[0] != ACK) { + rig_debug(RIG_DEBUG_ERR,"icom_set_rptr_shift: ack NG (%#.2x), + len=%d\n", ackbuf[0],ack_len); + return -RIG_ERJCTED; + } + + return RIG_OK; + } + /* ! * icom_get_rptr_shift * Assumes rig!=NULL, rig->state.priv!=NULL, rptr_shift!=NULL */ ! int icom_get_rptr_shift(RIG *rig, rptr_shift_t *rptr_shift) { struct icom_priv_data *priv; *************** *** 791,795 **** /* ! * rptrbuf should contain Cn,Sc */ ts_len--; --- 790,794 ---- /* ! * tsbuf should contain Cn,Sc */ ts_len--; *************** *** 909,912 **** --- 908,1079 ---- } + + + /* + * icom_set_poweron + * Assumes rig!=NULL, rig->state.priv!=NULL + */ + int icom_set_poweron(RIG *rig) + { + unsigned char ackbuf[16]; + int ack_len; + + icom_transaction(rig, C_SET_PWR, S_PWR_ON, NULL, 0, ackbuf, &ack_len); + + if (ack_len != 1 || ackbuf[0] != ACK) { + rig_debug(RIG_DEBUG_ERR,"icom_set_poweron: ack NG (%#.2x), + len=%d\n", ackbuf[0],ack_len); + return -RIG_ERJCTED; + } + + return RIG_OK; + } + + /* + * icom_set_poweroff + * Assumes rig!=NULL, rig->state.priv!=NULL + */ + int icom_set_poweroff(RIG *rig) + { + unsigned char ackbuf[16]; + int ack_len; + + icom_transaction(rig, C_SET_PWR, S_PWR_OFF, NULL, 0, ackbuf, &ack_len); + + if (ack_len != 1 || ackbuf[0] != ACK) { + rig_debug(RIG_DEBUG_ERR,"icom_set_poweroff: ack NG (%#.2x), + len=%d\n", ackbuf[0],ack_len); + return -RIG_ERJCTED; + } + + return RIG_OK; + } + + /* + * icom_set_mem + * Assumes rig!=NULL, rig->state.priv!=NULL + */ + int icom_set_mem(RIG *rig, int ch) + { + struct icom_priv_data *priv; + struct rig_state *rig_s; + unsigned char membuf[2]; + unsigned char ackbuf[16]; + int ack_len; + + rig_s = &rig->state; + priv = (struct icom_priv_data*)rig_s->priv; + + to_bcd_be(membuf, ch, 2); + icom_transaction (rig, C_SET_MEM, -1, membuf, 2, ackbuf, &ack_len); + + if (ack_len != 1 || ackbuf[0] != ACK) { + rig_debug(RIG_DEBUG_ERR,"icom_set_mem: ack NG (%#.2x), + len=%d\n", ackbuf[0], ack_len); + return -RIG_ERJCTED; + } + + return RIG_OK; + } + + /* + * icom_set_bank + * Assumes rig!=NULL, rig->state.priv!=NULL + */ + int icom_set_bank(RIG *rig, int bank) + { + struct icom_priv_data *priv; + struct rig_state *rig_s; + unsigned char bankbuf[2]; + unsigned char ackbuf[16]; + int ack_len; + + rig_s = &rig->state; + priv = (struct icom_priv_data*)rig_s->priv; + + to_bcd_be(bankbuf, bank, 2); + icom_transaction (rig, C_SET_MEM, S_BANK, bankbuf, 2, ackbuf, &ack_len); + + if (ack_len != 1 || ackbuf[0] != ACK) { + rig_debug(RIG_DEBUG_ERR,"icom_set_bank: ack NG (%#.2x), + len=%d\n", ackbuf[0], ack_len); + return -RIG_ERJCTED; + } + + return RIG_OK; + } + + /* + * icom_mv_ctl, Mem/VFO operation + * Assumes rig!=NULL, rig->state.priv!=NULL + */ + int icom_mv_ctl(RIG *rig, mv_op_t op) + { + struct icom_priv_data *priv; + struct rig_state *rig_s; + unsigned char mvbuf[16]; + unsigned char ackbuf[16]; + int mv_len, ack_len; + int mv_cn, mv_sc; + + rig_s = &rig->state; + priv = (struct icom_priv_data*)rig_s->priv; + + mv_len = 0; + + switch(op) { + case RIG_MVOP_VFO_MODE: + mv_cn = C_SET_VFO; + mv_sc = -1; + break; + case RIG_MVOP_MEM_MODE: + mv_cn = C_SET_MEM; + mv_sc = -1; + break; + case RIG_MVOP_VFO_CPY: + mv_cn = C_SET_VFO; + mv_sc = S_BTOA; + break; + case RIG_MVOP_VFO_XCHG: + mv_cn = C_SET_VFO; + mv_sc = S_XCHNG; + break; + case RIG_MVOP_DUAL_OFF: + mv_cn = C_SET_VFO; + mv_sc = S_DUAL_OFF; + break; + case RIG_MVOP_DUAL_ON: + mv_cn = C_SET_VFO; + mv_sc = S_DUAL_ON; + break; + case RIG_MVOP_FROM_VFO: + mv_cn = C_WR_MEM; + mv_sc = -1; + break; + case RIG_MVOP_TO_VFO: + mv_cn = C_MEM2VFO; + mv_sc = -1; + break; + case RIG_MVOP_MCL: + mv_cn = C_CLR_MEM; + mv_sc = -1; + break; + default: + rig_debug(RIG_DEBUG_ERR,"Unsupported mem/vfo op %d", op); + return -RIG_EINVAL; + } + + icom_transaction (rig, mv_cn, mv_sc, mvbuf, mv_len, ackbuf, &ack_len); + + #if 0 + if (ack_len != 1 || ackbuf[0] != ACK) { + rig_debug(RIG_DEBUG_ERR,"icom_set_mem: ack NG (%#.2x), + len=%d\n", ackbuf[0], ack_len); + return -RIG_ERJCTED; + } + #endif + + return RIG_OK; + } Index: icom_defs.h =================================================================== RCS file: /cvsroot/hamlib/hamlib/icom/icom_defs.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** icom_defs.h 2000/10/16 22:37:22 1.4 --- icom_defs.h 2000/10/23 19:48:12 1.5 *************** *** 42,45 **** --- 42,47 ---- #define ACKFRMLEN 6 /* reply frame length */ + #define S_NONE -1 + /* * Cn controller commands *************** *** 106,109 **** --- 108,122 ---- #define S_BTOA 0xa0 /* VFO A=B */ #define S_XCHNG 0xb0 /* Switch VFO A and B */ + #define S_SUBTOMAIN 0xb1 /* MAIN = SUB */ + #define S_DUAL_OFF 0xc0 /* Dual watch off */ + #define S_DUAL_ON 0xc1 /* Dual watch on */ + #define S_MAIN 0xd0 /* Select MAIN band */ + #define S_SUB 0xd1 /* Select SUB band */ + #define S_FRONTWIN 0xe0 /* Select front window */ + + /* + * Set MEM (C_SET_MEM) sub commands + */ + #define S_BANK 0xa0 /* Select memory bank */ /* *************** *** 190,193 **** --- 203,212 ---- */ #define S_TRXID 0x00 /* Read transceiver ID code */ + + /* + * Set Power On/Off (C_SET_PWR) subcommands + */ + #define S_PWR_OFF 0x00 + #define S_PWR_ON 0x01 /* |