int ft897_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) { unsigned char data[YAESU_CMD_LENGTH - 1]; int n; if (vfo != RIG_VFO_CURR) return -RIG_ENTARGET; rig_debug(RIG_DEBUG_VERBOSE, "ft897: set rit = %li)\n", rit); /* fill in the RIT freq */ data[0] = (rit < 0) ? 255 : 0; data[1] = 0; to_bcd_be(data + 2, labs(rit) / 10, 4); if ((n = ft897_send_icmd(rig, FT897_NATIVE_CAT_SET_CLAR_FREQ, data)) < 0) return n; /* the rig rejects if these are repeated - don't confuse user with retcode */ if (rit == 0) ft897_send_cmd(rig, FT897_NATIVE_CAT_CLAR_OFF); else ft897_send_cmd(rig, FT897_NATIVE_CAT_CLAR_ON); return RIG_OK; }
/* * This doesn't seem to work on FT897. It might work with FT817 though. */ int ft897_set_powerstat(RIG *rig, powerstat_t status) { switch (status) { case RIG_POWER_OFF: return ft897_send_cmd(rig, FT897_NATIVE_CAT_PWR_OFF); case RIG_POWER_ON: return ft897_send_cmd(rig, FT897_NATIVE_CAT_PWR_ON); case RIG_POWER_STANDBY: default: return -RIG_EINVAL; } }
int ft897_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo) { int index, n; if (vfo != RIG_VFO_CURR) return -RIG_ENTARGET; rig_debug(RIG_DEBUG_VERBOSE, "ft897: ft897_set_split_vfo called\n"); switch(split) { case RIG_SPLIT_OFF: index = FT897_NATIVE_CAT_SPLIT_OFF; break; case RIG_SPLIT_ON: index = FT897_NATIVE_CAT_SPLIT_ON; break; default: return -RIG_EINVAL; } n = ft897_send_cmd(rig, index); if (n < 0 && n != -RIG_ERJCTED) return n; return RIG_OK; }
int ft897_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo) { int index, n; if (vfo != RIG_VFO_CURR) return -RIG_ENTARGET; rig_debug(RIG_DEBUG_VERBOSE, "ft897: ft897_set_split_vfo called\n"); switch(split) { case RIG_SPLIT_OFF: index = FT897_NATIVE_CAT_SPLIT_OFF; break; case RIG_SPLIT_ON: index = FT897_NATIVE_CAT_SPLIT_ON; break; default: return -RIG_EINVAL; } n = ft897_send_cmd(rig, index); rig_force_cache_timeout(&((struct ft897_priv_data *) rig->state.priv)->tx_status_tv); if (n < 0 && n != -RIG_ERJCTED) return n; return RIG_OK; }
int ft897_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t shift) { if (vfo != RIG_VFO_CURR) return -RIG_ENTARGET; rig_debug(RIG_DEBUG_VERBOSE, "ft897: set repeter shift = %i\n", shift); switch (shift) { case RIG_RPT_SHIFT_NONE: return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_RPT_SHIFT_SIMPLEX); case RIG_RPT_SHIFT_MINUS: return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_RPT_SHIFT_MINUS); case RIG_RPT_SHIFT_PLUS: return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_RPT_SHIFT_PLUS); } return -RIG_EINVAL; }
int ft897_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) { if (vfo != RIG_VFO_CURR) return -RIG_ENTARGET; switch (func) { case RIG_FUNC_LOCK: if (status) return ft897_send_cmd(rig, FT897_NATIVE_CAT_LOCK_ON); else return ft897_send_cmd(rig, FT897_NATIVE_CAT_LOCK_OFF); case RIG_FUNC_TONE: if (status) return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_CTCSS_ENC_ON); else return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_CTCSS_DCS_OFF); case RIG_FUNC_TSQL: if (status) return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_CTCSS_ON); else return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_CTCSS_DCS_OFF); #if 0 case RIG_FUNC_CODE: /* this doesn't exist */ if (status) return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_DCS_ENC_ON); else return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_CTCSS_DCS_OFF); case RIG_FUNC_DSQL: /* this doesn't exist */ if (status) return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_DCS_ON); else return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_CTCSS_DCS_OFF); #endif default: return -RIG_EINVAL; } }
int ft897_set_ctcss_sql(RIG *rig, vfo_t vfo, tone_t tone) { unsigned char data[YAESU_CMD_LENGTH - 1]; int n; if (vfo != RIG_VFO_CURR) return -RIG_ENTARGET; rig_debug(RIG_DEBUG_VERBOSE, "ft897: set CTCSS sql (%.1f)\n", tone / 10.0); if (tone == 0) return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_CTCSS_DCS_OFF); /* fill in the CTCSS freq - the rig doesn't support separate tones... */ to_bcd_be(data, tone, 4); to_bcd_be(data + 2, tone, 4); if ((n = ft897_send_icmd(rig, FT897_NATIVE_CAT_SET_CTCSS_FREQ, data)) < 0) return n; return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_CTCSS_ON); }
int ft897_set_dcs_sql(RIG *rig, vfo_t vfo, tone_t code) { unsigned char data[YAESU_CMD_LENGTH - 1]; int n; if (vfo != RIG_VFO_CURR) return -RIG_ENTARGET; rig_debug(RIG_DEBUG_VERBOSE, "ft897: set DCS sql (%d)\n", code); if (code == 0) return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_CTCSS_DCS_OFF); /* fill in the DCS code - the rig doesn't support separate codes... */ to_bcd_be(data, code, 4); to_bcd_be(data + 2, code, 4); if ((n = ft897_send_icmd(rig, FT897_NATIVE_CAT_SET_DCS_CODE, data)) < 0) return n; return ft897_send_cmd(rig, FT897_NATIVE_CAT_SET_DCS_ON); }
int ft897_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) { int index; /* index of sequence to send */ if (vfo != RIG_VFO_CURR) return -RIG_ENTARGET; rig_debug(RIG_DEBUG_VERBOSE,"ft897: generic mode = %x \n", mode); switch(mode) { case RIG_MODE_AM: index = FT897_NATIVE_CAT_SET_MODE_AM; break; case RIG_MODE_CW: index = FT897_NATIVE_CAT_SET_MODE_CW; break; case RIG_MODE_USB: index = FT897_NATIVE_CAT_SET_MODE_USB; break; case RIG_MODE_LSB: index = FT897_NATIVE_CAT_SET_MODE_LSB; break; case RIG_MODE_RTTY: index = FT897_NATIVE_CAT_SET_MODE_DIG; break; case RIG_MODE_FM: index = FT897_NATIVE_CAT_SET_MODE_FM; break; case RIG_MODE_WFM: index = FT897_NATIVE_CAT_SET_MODE_FM; break; case RIG_MODE_CWR: index = FT897_NATIVE_CAT_SET_MODE_CWR; break; case RIG_MODE_PKTFM: index = FT897_NATIVE_CAT_SET_MODE_PKT; break; default: return -RIG_EINVAL; } if (width != RIG_PASSBAND_NORMAL) return -RIG_EINVAL; rig_force_cache_timeout(&((struct ft897_priv_data *) rig->state.priv)->fm_status_tv); return ft897_send_cmd(rig, index); }
int ft897_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) { int index, n; if (vfo != RIG_VFO_CURR) return -RIG_ENTARGET; rig_debug(RIG_DEBUG_VERBOSE, "ft897: ft897_vfo_op called\n"); switch (op) { case RIG_OP_TOGGLE: index = FT897_NATIVE_CAT_SET_VFOAB; break; default: return -RIG_EINVAL; } n = ft897_send_cmd(rig, index); if (n < 0 && n != -RIG_ERJCTED) return n; return RIG_OK; }