static int thd72_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) { int retval; char c; rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__); switch (func) { case RIG_FUNC_AIP: retval = thd72_vfoc(rig, vfo, &c); if (retval != RIG_OK) { return retval; } return thd72_set_menu_item(rig, c == '0' ? 5 : 6, status); case RIG_FUNC_ARO: return thd72_set_menu_item(rig, 18, status); case RIG_FUNC_TONE: return thd72_set_freq_item(rig, vfo, 22, status); case RIG_FUNC_TSQL: return thd72_set_freq_item(rig, vfo, 24, status); default: return -RIG_EINVAL; } return RIG_OK; }
static int thd72_get_mem(RIG *rig, vfo_t vfo, int *ch) { int retval; char c, cmd[10], buf[10]; rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__); retval = thd72_vfoc(rig, vfo, &c); if (retval != RIG_OK) { return retval; } sprintf(cmd, "MR %c", c); retval = kenwood_transaction(rig, cmd, buf, sizeof(buf)); if (retval != RIG_OK) { return retval; } sscanf(buf + 5, "%d", ch); return RIG_OK; }
static int thd72_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) { int retval, f; char c; rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__); switch (func) { case RIG_FUNC_AIP: retval = thd72_vfoc(rig, vfo, &c); if (retval != RIG_OK) return retval; retval = thd72_get_menu_item(rig, c == '0'?5:6, 1, &f); break; case RIG_FUNC_ARO: retval = thd72_get_menu_item(rig, 18, 1, &f); break; case RIG_FUNC_TONE: retval = thd72_get_freq_item(rig, vfo, 22, 1, &f); break; case RIG_FUNC_TSQL: retval = thd72_get_freq_item(rig, vfo, 24, 1, &f); break; default: retval = -RIG_EINVAL; } if (retval != RIG_OK) return retval; *status = f; return RIG_OK; }
static int thd72_get_freq_info(RIG *rig, vfo_t vfo, char *buf) { int retval; char c, cmd[8]; retval = thd72_vfoc(rig, vfo, &c); if (retval != RIG_OK) return retval; sprintf(cmd, "FO %c", c); retval = kenwood_transaction(rig, cmd, buf, 53); return RIG_OK; }
static int thd72_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) { int retval, lvl; char c, lvlc, cmd[10]; rig_debug(RIG_DEBUG_TRACE, "%s: called VFO=%s, level=%s, val=%g\n", __func__, rig_strvfo(vfo), rig_strlevel(level), val.f); retval = thd72_vfoc(rig, vfo, &c); if (retval != RIG_OK) { return retval; } switch (level) { case RIG_LEVEL_RFPOWER: if (val.f <= 0.01) { lvlc = '2'; } else if (val.f <= 0.10) { lvlc = '1'; } else { lvlc = '0'; } sprintf(cmd, "PC %c,%c", c, lvlc); return kenwood_simple_transaction(rig, cmd, 6); case RIG_LEVEL_VOXGAIN: return thd72_set_menu_item(rig, 8, (int)(val.f * 10.0 - 0.5)); case RIG_LEVEL_VOXDELAY: if (val.i > 20000) { lvl = 6; } else if (val.i > 10000) { lvl = val.i / 10000 + 3; } else { lvl = val.i / 2500; } return thd72_set_menu_item(rig, 9, lvl); case RIG_LEVEL_SQL: lvlc = '0' + (int)(val.f * 5); sprintf(cmd, "PC %c,%c", c, lvlc); return kenwood_simple_transaction(rig, cmd, 6); case RIG_LEVEL_BALANCE: /* FIXME - is balance 0.0 .. 1.0 or -1.0 .. 1.0? */ lvl = (int)(val.f * 4.0); return thd72_set_menu_item(rig, 13, lvl); default: rig_debug(RIG_DEBUG_ERR, "%s: Unsupported Level %d\n", __func__, level); return -RIG_EINVAL; } return retval; }
static int thd72_set_mem(RIG *rig, vfo_t vfo, int ch) { int retval; char c, cmd[10]; rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__); retval = thd72_vfoc(rig, vfo, &c); if (retval != RIG_OK) return retval; sprintf(cmd, "MR %c,%03d", c, ch); return kenwood_simple_transaction(rig, cmd, 10); }
static int thd72_get_freq_info(RIG *rig, vfo_t vfo, char *buf) { int retval; char c, cmd[8]; rig_debug(RIG_DEBUG_TRACE, "%s: called VFO=%s\n", __func__, rig_strvfo(vfo)); retval = thd72_vfoc(rig, vfo, &c); if (retval != RIG_OK) { return retval; } sprintf(cmd, "FO %c", c); retval = kenwood_transaction(rig, cmd, buf, 53); return RIG_OK; }
static int thd72_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) { int retval, v, l; char c, cmd[10], buf[48]; rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__); retval = thd72_vfoc(rig, vfo, &c); if (retval != RIG_OK) { return retval; } switch (level) { case RIG_LEVEL_RFPOWER: sprintf(cmd, "PC %c", c); retval = kenwood_transaction(rig, cmd, buf, sizeof(buf)); if (retval != RIG_OK) { return retval; } retval = sscanf(buf, "PC %d,%d", &v, &l); if (retval != 2 || l < 0 || l > 3) { rig_debug(RIG_DEBUG_ERR, "%s: Unexpected reply '%s'\n", __func__, buf); return -RIG_ERJCTED; } switch (l) { case 0: val->f = 1.00; break; /* 5.0 W */ case 1: val->f = 0.10; break; /* 500 mW */ case 2: val->f = 0.01; break; /* 50 mW */ } break; case RIG_LEVEL_VOXGAIN: retval = thd72_get_menu_item(rig, 8, 9, &l); if (retval != RIG_OK) { return retval; } /* FIXME - if VOX is off, what do we return */ val->f = l / 9.0; break; case RIG_LEVEL_VOXDELAY: retval = thd72_get_menu_item(rig, 9, 7, &l); if (retval != RIG_OK) { return retval; } /* FIXME - if VOX is off, what do we return */ val->i = thd72voxdelay[l]; break; case RIG_LEVEL_SQL: sprintf(cmd, "SQ %c", c); retval = kenwood_transaction(rig, cmd, buf, sizeof(buf)); if (retval != RIG_OK) { return retval; } retval = sscanf(buf, "SQ %d,%d", &v, &l); if (retval != 2 || l < 0 || l > 6) { rig_debug(RIG_DEBUG_ERR, "%s: Unexpected reply '%s'\n", __func__, buf); return -RIG_ERJCTED; } val->f = thd72sqlevel[l]; break; case RIG_LEVEL_BALANCE: retval = thd72_get_menu_item(rig, 13, 4, &l); if (retval != RIG_OK) { return retval; } /* FIXME - is balance 0.0 .. 1.0 or -1.0 .. 1.0? */ val->f = (float)(l) / 4.0; break; default: rig_debug(RIG_DEBUG_ERR, "%s: Unsupported Level %d\n", __func__, level); return -RIG_EINVAL; } return RIG_OK; }