Hamlib 1.2.12

orion.h

Go to the documentation of this file.
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 
00109 #define TT565_ANTS (RIG_ANT_1|RIG_ANT_2) 
00110 
00111 #define TT565_RXANTS (TT565_ANTS|RIG_ANT_3) 
00112 
00114 #define TT565_PARMS (RIG_PARM_NONE)
00115 
00119 #define TT565_VFO (RIG_VFO_A|RIG_VFO_B)
00120 
00125 #define TT565_VFO_OPS (RIG_OP_UP|RIG_OP_DOWN|\
00126                 RIG_OP_TO_VFO|RIG_OP_FROM_VFO| \
00127                 RIG_OP_TUNE)
00128 
00140 #define TT565_STR_CAL_V1 { 14,  { \
00141                 {   1, -47 }, /* padding to match lengths with v2 */ \
00142                         {  10, -47 }, \
00143                 {  13, -42 }, \
00144                 {  18, -37 }, \
00145                 {  22, -32 }, \
00146                 {  27, -27 }, \
00147                 {  32, -18 }, \
00148                 {  37, -11 }, \
00149                 {  42,  -4 }, \
00150                 {  47,  -1 }, \
00151                 {  52,  10 }, \
00152                 {  57,  20 }, \
00153                 {  65,  30 }, \
00154                 {  74,  40 }, \
00155         } }
00156 
00160 #define TT565_STR_CAL_V2 { 14, { \
00161                 { 10., -48. }, /* S1 = min. indication */ \
00162                 { 24., -42. }, \
00163                 { 38., -36. }, \
00164                 { 47., -30. }, \
00165                 { 61., -24. }, \
00166                 { 70., -18. }, \
00167                 { 79., -12. }, \
00168                 { 84.,  -6. }, \
00169                 { 94.,   0. }, /* S9 */ \
00170                 { 103., 10. }, \
00171                 { 118., 20. }, \
00172                 { 134., 30. }, \
00173                 { 147., 40. }, \
00174                 { 161., 50. }, \
00175         } }
00176 
00177 #undef TT565_TIME               /* Define to enable time checks */
00178 #define TT565_ASCII_FREQ    /* select ascii mode for vfo commands */
00179         /* Note:  Binary mode seems buggy at certain freqs like
00180         7015679 < freq < 7015936, etc.  Use ascii mode. */
00181 
00191 const struct rig_caps tt565_caps = {
00192 .rig_model =  RIG_MODEL_TT565,
00193 .model_name = "TT-565 Orion",
00194 .mfg_name =  "Ten-Tec",
00195 .version =  "0.4",
00196 .copyright =  "LGPL",
00197 .status =  RIG_STATUS_BETA,
00198 .rig_type =  RIG_TYPE_TRANSCEIVER,
00199 .ptt_type =  RIG_PTT_RIG,
00200 .dcd_type =  RIG_DCD_NONE,
00201 .port_type =  RIG_PORT_SERIAL,
00202 .serial_rate_min =  57600,
00203 .serial_rate_max =  57600,
00204 .serial_data_bits =  8,
00205 .serial_stop_bits =  1,
00206 .serial_parity =  RIG_PARITY_NONE,
00207 .serial_handshake =  RIG_HANDSHAKE_HARDWARE,
00208 .write_delay =  0,          /* no delay between characters written */
00209 .post_write_delay =  10,    /* ms delay between writes DEBUGGING HERE */
00210 .timeout =  200,            /* ms */
00211 .retry =  4,
00212 
00213 .has_get_func =  TT565_FUNCS,
00214 .has_set_func =  TT565_FUNCS,
00215 .has_get_level =  TT565_LEVELS,
00216 .has_set_level =  RIG_LEVEL_SET(TT565_LEVELS),
00217 .has_get_parm =  TT565_PARMS,
00218 .has_set_parm =  TT565_PARMS,
00219 
00220 .level_gran = {}, 
00221 .parm_gran =  {},
00222 .ctcss_list =  NULL,
00223 .dcs_list =  NULL,
00224 .preamp =   { 20, RIG_DBLST_END },
00225 .attenuator =   { 6, 12, 18, RIG_DBLST_END },
00226 .max_rit =  kHz(8),
00227 .max_xit =  kHz(8),
00228 .max_ifshift =  kHz(8),
00229 .vfo_ops = TT565_VFO_OPS,
00230 .targetable_vfo =  RIG_TARGETABLE_ALL,
00231 .transceive =  RIG_TRN_OFF,
00232 .bank_qty =   0,
00233 .chan_desc_sz =  0,
00234 
00235 .chan_list =  {
00236                 {   0, 199, RIG_MTYPE_MEM, TT565_MEM_CAP },
00237                 },
00238 
00239 .rx_range_list1 =  {
00240         FRQ_RNG_HF(1,TT565_RXMODES, -1,-1,RIG_VFO_N(0),TT565_RXANTS),
00241         {kHz(500),MHz(30),TT565_RXMODES,-1,-1,RIG_VFO_N(1),TT565_RXANTS},
00242         RIG_FRNG_END,
00243   },
00244 .tx_range_list1 =  {
00245         FRQ_RNG_HF(1,TT565_MODES, W(5),W(100),RIG_VFO_N(0),TT565_ANTS),
00246         RIG_FRNG_END,
00247   },
00248 
00249 .rx_range_list2 =  {
00250         FRQ_RNG_HF(2,TT565_RXMODES, -1,-1,RIG_VFO_N(0),TT565_RXANTS),
00251         {MHz(5.25),MHz(5.40),TT565_RXMODES,-1,-1,RIG_VFO_N(0),TT565_RXANTS},
00252         {kHz(500),MHz(30),TT565_RXMODES,-1,-1,RIG_VFO_N(1),TT565_RXANTS},
00253         RIG_FRNG_END,
00254   },
00255 .tx_range_list2 =  {
00256         FRQ_RNG_HF(2,TT565_MODES, W(5),W(100),RIG_VFO_N(0),TT565_ANTS),
00257         {MHz(5.25),MHz(5.40),TT565_MODES,W(5),W(100),RIG_VFO_N(0),TT565_ANTS},
00258         RIG_FRNG_END,
00259   },
00260 
00261 .tuning_steps =  {
00262          {TT565_RXMODES,1},
00263          {TT565_RXMODES,10},
00264          {TT565_RXMODES,100},
00265          {TT565_RXMODES,kHz(1)},
00266          {TT565_RXMODES,kHz(10)},
00267          {TT565_RXMODES,kHz(100)},
00268          RIG_TS_END,
00269         },
00270         /* mode/filter list, remember: order matters! */
00271 .filters =  {
00272         /* 9MHz IF filters: 15kHz, 6kHz, 2.4kHz, 1.0kHz */
00273         /* opt: 1.8kHz, 500Hz, 250Hz */
00274                 {RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY, kHz(2.4)},
00275                 {RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY, 100},
00276                 {RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY, kHz(6)},
00277                 {RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY, 0}, /* 590 filters */
00278                 {RIG_MODE_AM, kHz(6)},
00279                 {RIG_MODE_AM, kHz(4)},
00280                 {RIG_MODE_FM, kHz(15)},
00281                 RIG_FLT_END,
00282         },
00283 .priv =  (void*)NULL,
00284 
00285 .rig_init =  tt565_init,
00286 .rig_cleanup =  tt565_cleanup,
00287 .rig_open = tt565_open,
00288 
00289 .set_freq =  tt565_set_freq,
00290 .get_freq =  tt565_get_freq,
00291 .set_vfo =  tt565_set_vfo,
00292 .get_vfo =  tt565_get_vfo,
00293 .set_mode =  tt565_set_mode,
00294 .get_mode =  tt565_get_mode,
00295 .set_split_vfo =  tt565_set_split_vfo,
00296 .get_split_vfo =  tt565_get_split_vfo,
00297 .set_level =  tt565_set_level,
00298 .get_level =  tt565_get_level,
00299 .set_mem =  tt565_set_mem,
00300 .get_mem =  tt565_get_mem,
00301 .set_ptt =  tt565_set_ptt,
00302 .get_ptt =  tt565_get_ptt,
00303 .vfo_op =  tt565_vfo_op,
00304 .set_ts =  tt565_set_ts,
00305 .get_ts =  tt565_get_ts,
00306 .set_rit =  tt565_set_rit,
00307 .get_rit =  tt565_get_rit,
00308 .set_xit =  tt565_set_xit,
00309 .get_xit =  tt565_get_xit,
00310 .reset =  tt565_reset,
00311 .get_info =  tt565_get_info,
00312 .send_morse = tt565_send_morse,
00313 .get_func = tt565_get_func,
00314 .set_func = tt565_set_func,
00315 .get_ant = tt565_get_ant,
00316 .set_ant = tt565_set_ant,
00317 
00318 /* V2 is default. S-Meter cal table may be changed if V1 firmware detected. */
00319 .str_cal = TT565_STR_CAL_V2,
00320 };
00321 
00322 /*
00323  * Function definitions below
00324  */
00325 
00327 #define EOM "\015"      /* CR */
00328 
00329 #define TT565_USB '0'
00330 
00331 #define TT565_LSB '1'
00332 
00333 #define TT565_CW  '2'
00334 
00335 #define TT565_CWR '3'
00336 
00337 #define TT565_AM  '4'
00338 
00339 #define TT565_FM  '5'
00340 
00341 #define TT565_RTTY '6'
00342 
00344 #define TT565_TONE_MIN 300
00345 
00346 #define TT565_TONE_MAX 1200
00347 
00349 #define TT565_CW_MIN 10
00350 
00351 #define TT565_CW_MAX 60
00352 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

Hamlib documentation for version 1.2.12 -- Sun Mar 20 2011 22:54:31
Project page: http://hamlib.org