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_open(RIG *rig); 00051 static int tt565_cleanup(RIG *rig); 00052 static int tt565_set_freq(RIG *rig, vfo_t vfo, freq_t freq); 00053 static int tt565_get_freq(RIG *rig, vfo_t vfo, freq_t *freq); 00054 static int tt565_set_vfo(RIG *rig, vfo_t vfo); 00055 static int tt565_get_vfo(RIG *rig, vfo_t *vfo); 00056 static int tt565_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width); 00057 static int tt565_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width); 00058 static int tt565_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo); 00059 static int tt565_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo); 00060 static int tt565_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt); 00061 static int tt565_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt); 00062 static int tt565_reset(RIG *rig, reset_t reset); 00063 static int tt565_set_mem(RIG * rig, vfo_t vfo, int ch); 00064 static int tt565_get_mem(RIG * rig, vfo_t vfo, int *ch); 00065 static int tt565_vfo_op(RIG * rig, vfo_t vfo, vfo_op_t op); 00066 static int tt565_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts); 00067 static int tt565_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts); 00068 static int tt565_set_rit(RIG * rig, vfo_t vfo, shortfreq_t rit); 00069 static int tt565_get_rit(RIG * rig, vfo_t vfo, shortfreq_t *rit); 00070 static int tt565_set_xit(RIG * rig, vfo_t vfo, shortfreq_t xit); 00071 static int tt565_get_xit(RIG * rig, vfo_t vfo, shortfreq_t *xit); 00072 static int tt565_set_level(RIG * rig, vfo_t vfo, setting_t level, value_t val); 00073 static int tt565_get_level(RIG * rig, vfo_t vfo, setting_t level, value_t *val); 00074 static const char* tt565_get_info(RIG *rig); 00075 static int tt565_send_morse(RIG *rig, vfo_t vfo, const char *msg); 00076 static int tt565_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status); 00077 static int tt565_set_func(RIG *rig, vfo_t vfo, setting_t func, int status); 00078 static int tt565_set_ant(RIG * rig, vfo_t vfo, ant_t ant); 00079 static int tt565_get_ant(RIG *rig, vfo_t vfo, ant_t *ant); 00080 00082 struct tt565_priv_data { 00083 int ch; 00084 vfo_t vfo_curr; 00085 }; 00086 00088 #define TT565_MODES (RIG_MODE_FM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ 00089 RIG_MODE_RTTY|RIG_MODE_AM) 00090 00091 #define TT565_RXMODES (TT565_MODES) 00092 00094 #define TT565_FUNCS (RIG_FUNC_LOCK|RIG_FUNC_TUNER|RIG_FUNC_VOX|RIG_FUNC_NB) 00095 00097 #define TT565_LEVELS (RIG_LEVEL_RAWSTR| \ 00098 RIG_LEVEL_CWPITCH| \ 00099 RIG_LEVEL_SQL|RIG_LEVEL_IF| \ 00100 RIG_LEVEL_RFPOWER|RIG_LEVEL_KEYSPD| \ 00101 RIG_LEVEL_RF|RIG_LEVEL_NR| \ 00102 RIG_LEVEL_MICGAIN| \ 00103 RIG_LEVEL_AF|RIG_LEVEL_AGC| \ 00104 RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOX|RIG_LEVEL_ANTIVOX| \ 00105 RIG_LEVEL_COMP|RIG_LEVEL_PREAMP| \ 00106 RIG_LEVEL_SWR|RIG_LEVEL_ATT)| \ 00107 RIG_LEVEL_STRENGTH 00108 00110 #define TT565_ANTS (RIG_ANT_1|RIG_ANT_2) 00111 00112 #define TT565_RXANTS (TT565_ANTS|RIG_ANT_3) 00113 00115 #define TT565_PARMS (RIG_PARM_NONE) 00116 00120 #define TT565_VFO (RIG_VFO_A|RIG_VFO_B) 00121 00126 #define TT565_VFO_OPS (RIG_OP_UP|RIG_OP_DOWN|\ 00127 RIG_OP_TO_VFO|RIG_OP_FROM_VFO| \ 00128 RIG_OP_TUNE) 00129 00141 #define TT565_STR_CAL_V1 { 14, { \ 00142 { 1, -47 }, /* padding to match lengths with v2 */ \ 00143 { 10, -47 }, \ 00144 { 13, -42 }, \ 00145 { 18, -37 }, \ 00146 { 22, -32 }, \ 00147 { 27, -27 }, \ 00148 { 32, -18 }, \ 00149 { 37, -11 }, \ 00150 { 42, -4 }, \ 00151 { 47, -1 }, \ 00152 { 52, 10 }, \ 00153 { 57, 20 }, \ 00154 { 65, 30 }, \ 00155 { 74, 40 }, \ 00156 } } 00157 00161 #define TT565_STR_CAL_V2 { 14, { \ 00162 { 10., -48. }, /* S1 = min. indication */ \ 00163 { 24., -42. }, \ 00164 { 38., -36. }, \ 00165 { 47., -30. }, \ 00166 { 61., -24. }, \ 00167 { 70., -18. }, \ 00168 { 79., -12. }, \ 00169 { 84., -6. }, \ 00170 { 94., 0. }, /* S9 */ \ 00171 { 103., 10. }, \ 00172 { 118., 20. }, \ 00173 { 134., 30. }, \ 00174 { 147., 40. }, \ 00175 { 161., 50. }, \ 00176 } } 00177 00178 #undef TT565_TIME /* Define to enable time checks */ 00179 00189 const struct rig_caps tt565_caps = { 00190 .rig_model = RIG_MODEL_TT565, 00191 .model_name = "TT-565 Orion", 00192 .mfg_name = "Ten-Tec", 00193 .version = "0.3", 00194 .copyright = "LGPL", 00195 .status = RIG_STATUS_BETA, 00196 .rig_type = RIG_TYPE_TRANSCEIVER, 00197 .ptt_type = RIG_PTT_RIG, 00198 .dcd_type = RIG_DCD_NONE, 00199 .port_type = RIG_PORT_SERIAL, 00200 .serial_rate_min = 57600, 00201 .serial_rate_max = 57600, 00202 .serial_data_bits = 8, 00203 .serial_stop_bits = 1, 00204 .serial_parity = RIG_PARITY_NONE, 00205 .serial_handshake = RIG_HANDSHAKE_HARDWARE, 00206 .write_delay = 0, 00207 .post_write_delay = 10, /* Needed for CW send + ?? */ 00208 .timeout = 200, /* was 400 */ 00209 .retry = 2, /* was 3 */ 00210 00211 .has_get_func = TT565_FUNCS, 00212 .has_set_func = TT565_FUNCS, 00213 .has_get_level = TT565_LEVELS, 00214 .has_set_level = RIG_LEVEL_SET(TT565_LEVELS), 00215 .has_get_parm = TT565_PARMS, 00216 .has_set_parm = TT565_PARMS, 00217 00218 .level_gran = {}, 00219 .parm_gran = {}, 00220 .ctcss_list = NULL, 00221 .dcs_list = NULL, 00222 .preamp = { 20, RIG_DBLST_END }, 00223 .attenuator = { 6, 12, 18, RIG_DBLST_END }, 00224 .max_rit = kHz(8), 00225 .max_xit = kHz(8), 00226 .max_ifshift = kHz(8), 00227 .vfo_ops = TT565_VFO_OPS, 00228 .targetable_vfo = RIG_TARGETABLE_ALL, 00229 .transceive = RIG_TRN_OFF, 00230 .bank_qty = 0, 00231 .chan_desc_sz = 0, 00232 00233 .chan_list = { 00234 { 0, 199, RIG_MTYPE_MEM, TT565_MEM_CAP }, 00235 }, 00236 00237 .rx_range_list1 = { 00238 FRQ_RNG_HF(1,TT565_RXMODES, -1,-1,RIG_VFO_N(0),TT565_RXANTS), 00239 {kHz(500),MHz(30),TT565_RXMODES,-1,-1,RIG_VFO_N(1),TT565_RXANTS}, 00240 RIG_FRNG_END, 00241 }, 00242 .tx_range_list1 = { 00243 FRQ_RNG_HF(1,TT565_MODES, W(5),W(100),RIG_VFO_N(0),TT565_ANTS), 00244 RIG_FRNG_END, 00245 }, 00246 00247 .rx_range_list2 = { 00248 FRQ_RNG_HF(2,TT565_RXMODES, -1,-1,RIG_VFO_N(0),TT565_RXANTS), 00249 {MHz(5.25),MHz(5.40),TT565_RXMODES,-1,-1,RIG_VFO_N(0),TT565_RXANTS}, 00250 {kHz(500),MHz(30),TT565_RXMODES,-1,-1,RIG_VFO_N(1),TT565_RXANTS}, 00251 RIG_FRNG_END, 00252 }, 00253 .tx_range_list2 = { 00254 FRQ_RNG_HF(2,TT565_MODES, W(5),W(100),RIG_VFO_N(0),TT565_ANTS), 00255 {MHz(5.25),MHz(5.40),TT565_MODES,W(5),W(100),RIG_VFO_N(0),TT565_ANTS}, 00256 RIG_FRNG_END, 00257 }, 00258 00259 .tuning_steps = { 00260 {TT565_RXMODES,1}, 00261 {TT565_RXMODES,10}, 00262 {TT565_RXMODES,100}, 00263 {TT565_RXMODES,kHz(1)}, 00264 {TT565_RXMODES,kHz(10)}, 00265 {TT565_RXMODES,kHz(100)}, 00266 RIG_TS_END, 00267 }, 00268 /* mode/filter list, remember: order matters! */ 00269 .filters = { 00270 /* 9MHz IF filters: 15kHz, 6kHz, 2.4kHz, 1.0kHz */ 00271 /* opt: 1.8kHz, 500Hz, 250Hz */ 00272 {RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY, kHz(2.4)}, 00273 {RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY, 100}, 00274 {RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY, kHz(6)}, 00275 {RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY, 0}, /* 590 filters */ 00276 {RIG_MODE_AM, kHz(6)}, 00277 {RIG_MODE_AM, kHz(4)}, 00278 {RIG_MODE_FM, kHz(15)}, 00279 RIG_FLT_END, 00280 }, 00281 .priv = (void*)NULL, 00282 00283 .rig_init = tt565_init, 00284 .rig_cleanup = tt565_cleanup, 00285 .rig_open = tt565_open, 00286 00287 .set_freq = tt565_set_freq, 00288 .get_freq = tt565_get_freq, 00289 .set_vfo = tt565_set_vfo, 00290 .get_vfo = tt565_get_vfo, 00291 .set_mode = tt565_set_mode, 00292 .get_mode = tt565_get_mode, 00293 .set_split_vfo = tt565_set_split_vfo, 00294 .get_split_vfo = tt565_get_split_vfo, 00295 .set_level = tt565_set_level, 00296 .get_level = tt565_get_level, 00297 .set_mem = tt565_set_mem, 00298 .get_mem = tt565_get_mem, 00299 .set_ptt = tt565_set_ptt, 00300 .get_ptt = tt565_get_ptt, 00301 .vfo_op = tt565_vfo_op, 00302 .set_ts = tt565_set_ts, 00303 .get_ts = tt565_get_ts, 00304 .set_rit = tt565_set_rit, 00305 .get_rit = tt565_get_rit, 00306 .set_xit = tt565_set_xit, 00307 .get_xit = tt565_get_xit, 00308 .reset = tt565_reset, 00309 .get_info = tt565_get_info, 00310 .send_morse = tt565_send_morse, 00311 .get_func = tt565_get_func, 00312 .set_func = tt565_set_func, 00313 .get_ant = tt565_get_ant, 00314 .set_ant = tt565_set_ant, 00315 00316 /* V2 is default. S-Meter cal table may be changed if V1 firmware detected. */ 00317 .str_cal = TT565_STR_CAL_V2, 00318 }; 00319 00320 /* 00321 * Function definitions below 00322 */ 00323 00325 #define EOM "\015" /* CR */ 00326 00327 #define TT565_USB '0' 00328 00329 #define TT565_LSB '1' 00330 00331 #define TT565_CW '2' 00332 00333 #define TT565_CWR '3' 00334 00335 #define TT565_AM '4' 00336 00337 #define TT565_FM '5' 00338 00339 #define TT565_RTTY '6' 00340 00342 #define TT565_TONE_MIN 300 00343 00344 #define TT565_TONE_MAX 1200 00345 00347 #define TT565_CW_MIN 10 00348 00349 #define TT565_CW_MAX 60 00350
Hamlib documentation for version 1.2.7 -- Tue Aug 26 21:43:29 2008
Project page: http://hamlib.org