00001 /* 00002 * Hamlib TenTenc backend - TT-565 headers 00003 * Copyright (c) 2004-2006 by Stephane Fillod & Martin Ewing 00004 * 00005 * 00006 * This library is free software; you can redistribute it and/or modify 00007 * it under the terms of the GNU Library General Public License as 00008 * published by the Free Software Foundation; either version 2 of 00009 * the License, or (at your option) any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU Library General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Library General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00019 * 00020 */ 00021 00034 #define TT565_BUFSIZE 16 00035 00043 #define TT565_MEM_CAP { \ 00044 .freq = 1, \ 00045 .mode = 1, \ 00046 .width = 1, \ 00047 } 00048 00049 static int tt565_init(RIG *rig); 00050 static int tt565_cleanup(RIG *rig); 00051 static int tt565_set_freq(RIG *rig, vfo_t vfo, freq_t freq); 00052 static int tt565_get_freq(RIG *rig, vfo_t vfo, freq_t *freq); 00053 static int tt565_set_vfo(RIG *rig, vfo_t vfo); 00054 static int tt565_get_vfo(RIG *rig, vfo_t *vfo); 00055 static int tt565_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width); 00056 static int tt565_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width); 00057 static int tt565_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo); 00058 static int tt565_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo); 00059 static int tt565_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt); 00060 static int tt565_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt); 00061 static int tt565_reset(RIG *rig, reset_t reset); 00062 static int tt565_set_mem(RIG * rig, vfo_t vfo, int ch); 00063 static int tt565_get_mem(RIG * rig, vfo_t vfo, int *ch); 00064 static int tt565_vfo_op(RIG * rig, vfo_t vfo, vfo_op_t op); 00065 static int tt565_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts); 00066 static int tt565_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts); 00067 static int tt565_set_rit(RIG * rig, vfo_t vfo, shortfreq_t rit); 00068 static int tt565_get_rit(RIG * rig, vfo_t vfo, shortfreq_t *rit); 00069 static int tt565_set_xit(RIG * rig, vfo_t vfo, shortfreq_t xit); 00070 static int tt565_get_xit(RIG * rig, vfo_t vfo, shortfreq_t *xit); 00071 static int tt565_set_level(RIG * rig, vfo_t vfo, setting_t level, value_t val); 00072 static int tt565_get_level(RIG * rig, vfo_t vfo, setting_t level, value_t *val); 00073 static const char* tt565_get_info(RIG *rig); 00074 static int tt565_send_morse(RIG *rig, vfo_t vfo, const char *msg); 00075 static int tt565_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status); 00076 static int tt565_set_func(RIG *rig, vfo_t vfo, setting_t func, int status); 00077 static int tt565_set_ant(RIG * rig, vfo_t vfo, ant_t ant); 00078 static int tt565_get_ant(RIG *rig, vfo_t vfo, ant_t *ant); 00079 00081 struct tt565_priv_data { 00082 int ch; 00083 vfo_t vfo_curr; 00084 }; 00085 00087 #define TT565_MODES (RIG_MODE_FM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ 00088 RIG_MODE_RTTY|RIG_MODE_AM) 00089 00090 #define TT565_RXMODES (TT565_MODES) 00091 00093 #define TT565_FUNCS (RIG_FUNC_LOCK|RIG_FUNC_TUNER|RIG_FUNC_VOX|RIG_FUNC_NB) 00094 00096 #define TT565_LEVELS (RIG_LEVEL_RAWSTR| \ 00097 RIG_LEVEL_CWPITCH| \ 00098 RIG_LEVEL_SQL|RIG_LEVEL_IF| \ 00099 RIG_LEVEL_RFPOWER|RIG_LEVEL_KEYSPD| \ 00100 RIG_LEVEL_RF|RIG_LEVEL_NR| \ 00101 RIG_LEVEL_MICGAIN| \ 00102 RIG_LEVEL_AF|RIG_LEVEL_AGC| \ 00103 RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOX|RIG_LEVEL_ANTIVOX| \ 00104 RIG_LEVEL_COMP|RIG_LEVEL_PREAMP| \ 00105 RIG_LEVEL_SWR|RIG_LEVEL_ATT) 00106 00108 #define TT565_ANTS (RIG_ANT_1|RIG_ANT_2) 00109 00110 #define TT565_RXANTS (TT565_ANTS|RIG_ANT_3) 00111 00113 #define TT565_PARMS (RIG_PARM_NONE) 00114 00118 #define TT565_VFO (RIG_VFO_A|RIG_VFO_B) 00119 00124 #define TT565_VFO_OPS (RIG_OP_UP|RIG_OP_DOWN|\ 00125 RIG_OP_TO_VFO|RIG_OP_FROM_VFO| \ 00126 RIG_OP_TUNE) 00127 00139 #define TT565_STR_CAL { 15, { \ 00140 { 10, -45 }, /* S 1.5 min meter indication */ \ 00141 { 13, -42 }, \ 00142 { 18, -36 }, \ 00143 { 22, -30 }, \ 00144 { 27, -24 }, \ 00145 { 30, -18 }, \ 00146 { 34, -12 }, \ 00147 { 38, -6 }, \ 00148 { 43, 0 }, /* S9 */ \ 00149 { 48, 10 }, \ 00150 { 55, 20 }, \ 00151 { 62, 30 }, \ 00152 { 70, 40 }, \ 00153 { 78, 48 }, /* severe dsp quantization error */ \ 00154 { 101, 65 }, /* at high end of scale */ \ 00155 } } 00156 00157 #undef TT565_TIME /* Define to enable time checks */ 00158 00168 const struct rig_caps tt565_caps = { 00169 .rig_model = RIG_MODEL_TT565, 00170 .model_name = "TT-565 Orion", 00171 .mfg_name = "Ten-Tec", 00172 .version = "0.3", 00173 .copyright = "LGPL", 00174 .status = RIG_STATUS_BETA, 00175 .rig_type = RIG_TYPE_TRANSCEIVER, 00176 .ptt_type = RIG_PTT_RIG, 00177 .dcd_type = RIG_DCD_NONE, 00178 .port_type = RIG_PORT_SERIAL, 00179 .serial_rate_min = 57600, 00180 .serial_rate_max = 57600, 00181 .serial_data_bits = 8, 00182 .serial_stop_bits = 1, 00183 .serial_parity = RIG_PARITY_NONE, 00184 .serial_handshake = RIG_HANDSHAKE_HARDWARE, 00185 .write_delay = 0, 00186 .post_write_delay = 10, /* Needed for CW send + ?? */ 00187 .timeout = 400, 00188 .retry = 3, 00189 00190 .has_get_func = TT565_FUNCS, 00191 .has_set_func = TT565_FUNCS, 00192 .has_get_level = TT565_LEVELS, 00193 .has_set_level = RIG_LEVEL_SET(TT565_LEVELS), 00194 .has_get_parm = TT565_PARMS, 00195 .has_set_parm = TT565_PARMS, 00196 00197 .level_gran = {}, 00198 .parm_gran = {}, 00199 .ctcss_list = NULL, 00200 .dcs_list = NULL, 00201 .preamp = { 20, RIG_DBLST_END }, 00202 .attenuator = { 6, 12, 18, RIG_DBLST_END }, 00203 .max_rit = kHz(8), 00204 .max_xit = kHz(8), 00205 .max_ifshift = kHz(8), 00206 .vfo_ops = TT565_VFO_OPS, 00207 .targetable_vfo = RIG_TARGETABLE_ALL, 00208 .transceive = RIG_TRN_OFF, 00209 .bank_qty = 0, 00210 .chan_desc_sz = 0, 00211 00212 .chan_list = { 00213 { 0, 199, RIG_MTYPE_MEM, TT565_MEM_CAP }, 00214 }, 00215 00216 .rx_range_list1 = { 00217 FRQ_RNG_HF(1,TT565_RXMODES, -1,-1,RIG_VFO_N(0),TT565_RXANTS), 00218 {kHz(500),MHz(30),TT565_RXMODES,-1,-1,RIG_VFO_N(1),TT565_RXANTS}, 00219 RIG_FRNG_END, 00220 }, 00221 .tx_range_list1 = { 00222 FRQ_RNG_HF(1,TT565_MODES, W(5),W(100),RIG_VFO_N(0),TT565_ANTS), 00223 RIG_FRNG_END, 00224 }, 00225 00226 .rx_range_list2 = { 00227 FRQ_RNG_HF(2,TT565_RXMODES, -1,-1,RIG_VFO_N(0),TT565_RXANTS), 00228 {MHz(5.25),MHz(5.40),TT565_RXMODES,-1,-1,RIG_VFO_N(0),TT565_RXANTS}, 00229 {kHz(500),MHz(30),TT565_RXMODES,-1,-1,RIG_VFO_N(1),TT565_RXANTS}, 00230 RIG_FRNG_END, 00231 }, 00232 .tx_range_list2 = { 00233 FRQ_RNG_HF(2,TT565_MODES, W(5),W(100),RIG_VFO_N(0),TT565_ANTS), 00234 {MHz(5.25),MHz(5.40),TT565_MODES,W(5),W(100),RIG_VFO_N(0),TT565_ANTS}, 00235 RIG_FRNG_END, 00236 }, 00237 00238 .tuning_steps = { 00239 {TT565_RXMODES,1}, 00240 {TT565_RXMODES,10}, 00241 {TT565_RXMODES,100}, 00242 {TT565_RXMODES,kHz(1)}, 00243 {TT565_RXMODES,kHz(10)}, 00244 {TT565_RXMODES,kHz(100)}, 00245 RIG_TS_END, 00246 }, 00247 /* mode/filter list, remember: order matters! */ 00248 .filters = { 00249 /* 9MHz IF filters: 15kHz, 6kHz, 2.4kHz, 1.0kHz */ 00250 /* opt: 1.8kHz, 500Hz, 250Hz */ 00251 {RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY, kHz(2.4)}, 00252 {RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY, 100}, 00253 {RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY, kHz(6)}, 00254 {RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY, 0}, /* 590 filters */ 00255 {RIG_MODE_AM, kHz(6)}, 00256 {RIG_MODE_AM, kHz(4)}, 00257 {RIG_MODE_FM, kHz(15)}, 00258 RIG_FLT_END, 00259 }, 00260 .priv = (void*)NULL, 00261 00262 .rig_init = tt565_init, 00263 .rig_cleanup = tt565_cleanup, 00264 00265 .set_freq = tt565_set_freq, 00266 .get_freq = tt565_get_freq, 00267 .set_vfo = tt565_set_vfo, 00268 .get_vfo = tt565_get_vfo, 00269 .set_mode = tt565_set_mode, 00270 .get_mode = tt565_get_mode, 00271 .set_split_vfo = tt565_set_split_vfo, 00272 .get_split_vfo = tt565_get_split_vfo, 00273 .set_level = tt565_set_level, 00274 .get_level = tt565_get_level, 00275 .set_mem = tt565_set_mem, 00276 .get_mem = tt565_get_mem, 00277 .set_ptt = tt565_set_ptt, 00278 .get_ptt = tt565_get_ptt, 00279 .vfo_op = tt565_vfo_op, 00280 .set_ts = tt565_set_ts, 00281 .get_ts = tt565_get_ts, 00282 .set_rit = tt565_set_rit, 00283 .get_rit = tt565_get_rit, 00284 .set_xit = tt565_set_xit, 00285 .get_xit = tt565_get_xit, 00286 .reset = tt565_reset, 00287 .get_info = tt565_get_info, 00288 .send_morse = tt565_send_morse, 00289 .get_func = tt565_get_func, 00290 .set_func = tt565_set_func, 00291 .get_ant = tt565_get_ant, 00292 .set_ant = tt565_set_ant, 00293 00294 .str_cal = TT565_STR_CAL, 00295 }; 00296 00297 /* 00298 * Function definitions below 00299 */ 00300 00302 #define EOM "\015" /* CR */ 00303 00304 #define TT565_USB '0' 00305 00306 #define TT565_LSB '1' 00307 00308 #define TT565_CW '2' 00309 00310 #define TT565_CWR '3' 00311 00312 #define TT565_AM '4' 00313 00314 #define TT565_FM '5' 00315 00316 #define TT565_RTTY '6' 00317 00319 #define TT565_TONE_MIN 300 00320 00321 #define TT565_TONE_MAX 1200 00322 00324 #define TT565_CW_MIN 10 00325 00326 #define TT565_CW_MAX 60 00327
Hamlib documentation for version 1.2.6.2 -- Wed Nov 7 05:31:07 2007
Project page: http://hamlib.org