00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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 }, \
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. }, \
00163 { 24., -42. }, \
00164 { 38., -36. }, \
00165 { 47., -30. }, \
00166 { 61., -24. }, \
00167 { 70., -18. }, \
00168 { 79., -12. }, \
00169 { 84., -6. }, \
00170 { 94., 0. }, \
00171 { 103., 10. }, \
00172 { 118., 20. }, \
00173 { 134., 30. }, \
00174 { 147., 40. }, \
00175 { 161., 50. }, \
00176 } }
00177
00178 #undef TT565_TIME
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,
00208 .timeout = 200,
00209 .retry = 4,
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
00269 .filters = {
00270
00271
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},
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
00317 .str_cal = TT565_STR_CAL_V2,
00318 };
00319
00320
00321
00322
00323
00325 #define EOM "\015"
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