/* * r7000_set_freq */ static int r7000_set_freq(RIG *rig, vfo_t vfo, freq_t freq) { long long f = (long long)freq; /* * The R7000 cannot set freqencies higher than 1GHz, * this is done by flipping a switch on the front panel and * stripping the most significant digit. * This is the only change with the common icom_set_freq */ f %= (long long)GHz(1); return icom_set_freq(rig, vfo, (freq_t)f); }
.dcs_list = NULL, .preamp = { RIG_DBLST_END }, .attenuator = { 20, RIG_DBLST_END }, .max_rit = Hz(0), .max_xit = Hz(0), .max_ifshift = Hz(0), .targetable_vfo = 0, .transceive = RIG_TRN_RIG, .bank_qty = 0, .chan_desc_sz = 0, .chan_list = { RIG_CHAN_END }, .rx_range_list1 = { { kHz(10), GHz(1.3), PCR100_MODES, -1, -1, RIG_VFO_A }, RIG_FRNG_END, }, .tx_range_list1 = { RIG_FRNG_END }, .rx_range_list2 = { { kHz(10), MHz(824) - 10, PCR100_MODES, -1, -1, RIG_VFO_A }, { MHz(849) + 10, MHz(869) - 10, PCR100_MODES, -1, -1, RIG_VFO_A }, { MHz(894) + 10, GHz(1.3), PCR100_MODES, -1, -1, RIG_VFO_A }, RIG_FRNG_END, }, .tx_range_list2 = { RIG_FRNG_END }, /* no TX ranges, this is a receiver */ .tuning_steps = { { PCR100_MODES, Hz(1) }, RIG_TS_END, },
static void draw_range(const freq_range_t range_list[], gdImagePtr im_rng, int h1, int h2, int rgb) { int i; for (i = 0; i < FRQRANGESIZ; i++) { float start_pix, end_pix; if (range_list[i].start == 0 && range_list[i].end == 0) { break; } start_pix = range_list[i].start; end_pix = range_list[i].end; /* * HF */ if (range_list[i].start < MHz(30)) { start_pix = start_pix / MHz(30) * RANGE_WIDTH; end_pix = end_pix / MHz(30) * RANGE_WIDTH; if (end_pix >= RANGE_WIDTH) { end_pix = RANGE_WIDTH - 1; } start_pix += IM_LGD; end_pix += IM_LGD; gdImageFilledRectangle(im_rng, start_pix, HF_H + h1, end_pix, HF_H + h2, rgb); } /* * VHF */ start_pix = range_list[i].start; end_pix = range_list[i].end; if ((range_list[i].start > MHz(30) && range_list[i].start < MHz(300)) || (range_list[i].start < MHz(30) && range_list[i].end > MHz(30))) { start_pix = (start_pix - MHz(30)) / MHz(300) * RANGE_WIDTH; end_pix = (end_pix - MHz(30)) / MHz(300) * RANGE_WIDTH; if (start_pix < 0) { start_pix = 0; } if (end_pix >= RANGE_WIDTH) { end_pix = RANGE_WIDTH - 1; } start_pix += IM_LGD; end_pix += IM_LGD; gdImageFilledRectangle(im_rng, start_pix, VHF_H + h1, end_pix, VHF_H + h2, rgb); } /* * UHF */ start_pix = range_list[i].start; end_pix = range_list[i].end; if ((range_list[i].start > MHz(300) && range_list[i].start < GHz(3)) || (range_list[i].start < MHz(300) && range_list[i].end > MHz(300))) { start_pix = (start_pix - MHz(300)) / GHz(3) * RANGE_WIDTH; end_pix = (end_pix - MHz(300)) / GHz(3) * RANGE_WIDTH; if (start_pix < 0) { start_pix = 0; } if (end_pix >= RANGE_WIDTH) { end_pix = RANGE_WIDTH - 1; } start_pix += IM_LGD; end_pix += IM_LGD; gdImageFilledRectangle(im_rng, start_pix, UHF_H + h1, end_pix, UHF_H + h2, rgb); } } }
.targetable_vfo = 0, .ptt_type = RIG_PTT_NONE, .dcd_type = RIG_DCD_NONE, .has_get_func = WR3700_FUNC, .has_set_func = WR3700_FUNC, .has_get_level = WR3700_LEVEL, .has_set_level = WR3700_SET_LEVEL, .has_get_parm = RIG_PARM_NONE, .has_set_parm = RIG_PARM_NONE, .ctcss_list = NULL, .dcs_list = NULL, .chan_list = { RIG_CHAN_END, }, .transceive = RIG_TRN_OFF, .max_ifshift = kHz(2), .attenuator = { 20, RIG_DBLST_END, }, .rx_range_list1 = { {.start = kHz(150),.end = GHz(4),.modes = WR3700_MODES, .low_power = -1,.high_power = -1,.vfo = RIG_VFO_A}, {.start = MHz(30),.end = GHz(4),.modes = RIG_MODE_WFM, .low_power = -1,.high_power = -1,.vfo = RIG_VFO_A}, RIG_FRNG_END, }, .rx_range_list2 = { {.start = kHz(150),.end = MHz(824),.modes = WR3700_MODES, .low_power = -1,.high_power = -1,.vfo = RIG_VFO_A}, {.start = MHz(30),.end = MHz(824),.modes = RIG_MODE_WFM, .low_power = -1,.high_power = -1,.vfo = RIG_VFO_A}, {.start = MHz(849),.end = MHz(869), .modes = WR3700_MODES|RIG_MODE_WFM, .low_power = -1,.high_power = -1,.vfo = RIG_VFO_A}, {.start = MHz(894),.end = GHz(4), .modes = WR3700_MODES|RIG_MODE_WFM, .low_power = -1,.high_power = -1,.vfo = RIG_VFO_A}, RIG_FRNG_END, },
.max_rit = Hz(0), .max_xit = Hz(0), .max_ifshift = Hz(0), .targetable_vfo = 0, .vfo_ops = ICR10_VFO_OPS, .scan_ops = ICR10_SCAN_OPS, .transceive = RIG_TRN_RIG, .bank_qty = 0, .chan_desc_sz = 0, .chan_list = { RIG_CHAN_END, }, .rx_range_list1 = { {kHz(500),GHz(1.3),ICR10_MODES,-1,-1,ICR10_VFO_ALL}, RIG_FRNG_END, }, .tx_range_list1 = { RIG_FRNG_END, }, .rx_range_list2 = { {kHz(500),MHz(823.9999),ICR10_MODES,-1,-1,ICR10_VFO_ALL}, {MHz(849),MHz(868.9999),ICR10_MODES,-1,-1,ICR10_VFO_ALL}, {MHz(894),GHz(1.3),ICR10_MODES,-1,-1,ICR10_VFO_ALL}, RIG_FRNG_END, }, .tx_range_list2 = { RIG_FRNG_END, }, .tuning_steps = { {ICR10_MODES,Hz(100)}, RIG_TS_END, }, /* mode/filter list, remember: order matters! */
.max_xit = Hz(0), .max_ifshift = Hz(0), .targetable_vfo = 0, .vfo_ops = ICRX7_VFO_OPS, .scan_ops = ICRX7_SCAN_OPS, .transceive = RIG_TRN_RIG, .bank_qty = 0, .chan_desc_sz = 0, .chan_list = { /* Unfortunately, not accessible through CI-V */ RIG_CHAN_END, }, .rx_range_list1 = { {kHz(150),GHz(1.3),ICRX7_MODES,-1,-1,ICRX7_VFO_ALL}, RIG_FRNG_END, }, .tx_range_list1 = { RIG_FRNG_END, }, .rx_range_list2 = { {kHz(150),MHz(821.995),ICRX7_MODES,-1,-1,ICRX7_VFO_ALL}, {MHz(851),MHz(866.995),ICRX7_MODES,-1,-1,ICRX7_VFO_ALL}, {MHz(896),GHz(1.3),ICRX7_MODES,-1,-1,ICRX7_VFO_ALL}, RIG_FRNG_END, }, .tx_range_list2 = { RIG_FRNG_END, }, .tuning_steps = { {ICRX7_MODES,Hz(100)}, RIG_TS_END, }, .filters = {
.targetable_vfo = 0, .vfo_ops = ID1_VFO_OPS, .scan_ops = ID1_SCAN_OPS, .transceive = RIG_TRN_RIG, .bank_qty = 0, .chan_desc_sz = 0, .chan_list = { { 1, 99, RIG_MTYPE_MEM }, { 100, 101, RIG_MTYPE_EDGE }, /* two by two */ { 102, 104, RIG_MTYPE_CALL }, RIG_CHAN_END, }, .rx_range_list1 = { {GHz(1.240),GHz(1.3),ID1_MODES,-1,-1,ID1_VFO_ALL}, RIG_FRNG_END, }, .tx_range_list1 = { {GHz(1.240),GHz(1.3),ID1_MODES,W(1),W(10),ID1_VFO_ALL}, RIG_FRNG_END, }, .rx_range_list2 = { {GHz(1.240),GHz(1.3),ID1_MODES,-1,-1,ID1_VFO_ALL}, RIG_FRNG_END, }, .tx_range_list2 = { {GHz(1.240),GHz(1.3),ID1_MODES,W(1),W(10),ID1_VFO_ALL}, RIG_FRNG_END, }, .tuning_steps = { {ID1_MODES,kHz(5)}, {ID1_MODES,kHz(10)},