1 // ---------------------------------------------------------------------------- 2 // Copyright (C) 2014 3 // David Freese, W1HKJ 4 // 5 // This file is part of flrig. 6 // 7 // flrig is free software; you can redistribute it and/or modify 8 // it under the terms of the GNU General Public License as published by 9 // the Free Software Foundation; either version 3 of the License, or 10 // (at your option) any later version. 11 // 12 // flrig is distributed in the hope that it will be useful, 13 // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 // GNU General Public License for more details. 16 // 17 // You should have received a copy of the GNU General Public License 18 // aunsigned long int with this program. If not, see <http://www.gnu.org/licenses/>. 19 // ---------------------------------------------------------------------------- 20 21 #ifndef _RIG_BASE_H 22 #define _RIG_BASE_H 23 24 #include <string> 25 #include <cmath> 26 #include <cstdlib> 27 28 #include <FL/Fl.H> 29 #include "util.h" 30 #include "debug.h" 31 #include "trace.h" 32 #include "rig_io.h" 33 34 #include "rigpanel.h" 35 36 using namespace std; 37 38 enum {onA, onB}; 39 enum {UI, XML, SRVR, RIG}; 40 enum {BINARY, STRING}; 41 42 struct XCVR_STATE { 43 unsigned long int freq; 44 int imode; 45 int iBW; 46 int filter; 47 int src; 48 49 int split; 50 int power_control; 51 int volume_control; 52 int attenuator; 53 int preamp; 54 int if_shift; 55 int shift_val; 56 int auto_notch; 57 int notch; 58 int notch_val; 59 int noise; 60 int nb_level; 61 int nr; 62 int nr_val; 63 int mic_gain; 64 int rf_gain; 65 int agc_level; 66 int squelch; 67 int compression; 68 int compON; 69 XCVR_STATEXCVR_STATE70 XCVR_STATE() { 71 freq = 0; 72 imode = 0; 73 iBW = 0; 74 filter = 0; 75 src = UI; 76 77 split = 0; 78 power_control = 0; 79 volume_control = 0; 80 attenuator = 0; 81 preamp = 0; 82 if_shift = 0; 83 shift_val = 0; 84 auto_notch = 0; 85 notch = 0; 86 notch_val = 0; 87 noise = 0; 88 nb_level = 0; 89 nr = 0; 90 nr_val = 0; 91 mic_gain = 0; 92 rf_gain = 0; 93 agc_level = 0; 94 squelch = 0; 95 compression = 0; 96 compON = 0; 97 } XCVR_STATEXCVR_STATE98 XCVR_STATE(int a, int b, int c, int d) { 99 XCVR_STATE(); 100 freq = a; 101 imode = b; 102 iBW = c; 103 src = d; 104 } 105 // bool equals(XCVR_STATE alt) { 106 // if (freq != alt.freq) return false; 107 // if (iBW != alt.iBW) return false; 108 // if (imode != alt.imode) return false; 109 // return true; 110 // } 111 }; 112 113 enum { 114 vA, // apply to vfoA 115 vB, // apply to vfoB 116 vX, // apply to current vfo 117 sA, // select vfoA 118 sB, // select vfoB 119 ON, // ptt ON 120 OFF, // ptt OFF 121 sON, // split ON 122 sOFF, // split OFF 123 A2B, // active to inactive vfo 124 SWAP // swap vfo's 125 }; 126 127 struct VFOQUEUE { 128 int change; // A B AA BB ON OFF 129 XCVR_STATE vfo; VFOQUEUEVFOQUEUE130 VFOQUEUE() {} VFOQUEUEVFOQUEUE131 VFOQUEUE(int c, XCVR_STATE v) { change = c; vfo = v; } 132 }; 133 134 struct GUI { 135 Fl_Widget* W; 136 int x; 137 int y; 138 int w; 139 }; 140 141 class rigbase { 142 #define WVALS_LIMIT -1 143 public: 144 string name_; 145 const char ** modes_; 146 const char ** bandwidths_; 147 const char ** dsp_SL; 148 const char * SL_tooltip; 149 const char * SL_label; 150 const char ** dsp_SH; 151 const char * SH_tooltip; 152 const char * SH_label; 153 const int * bw_vals_; 154 155 GUI *widgets; 156 157 int comm_baudrate; 158 int stopbits; 159 int comm_retries; 160 int comm_wait; 161 int comm_timeout; 162 bool comm_echo; 163 bool comm_rtscts; 164 bool comm_rtsplus; 165 bool comm_dtrplus; 166 bool comm_catptt; 167 bool comm_rtsptt; 168 bool comm_dtrptt; 169 int serloop_timing; 170 int CIV; 171 int defaultCIV; 172 bool USBaudio; 173 174 XCVR_STATE A; 175 XCVR_STATE B; 176 int inuse; 177 178 int modeA; 179 int bwA; 180 unsigned long int freqA; 181 int modeB; 182 int bwB; 183 unsigned long int freqB; 184 int precision; 185 int ndigits; 186 bool can_change_alt_vfo; 187 int active_mode; // wbx 188 189 int def_mode; 190 int def_bw; 191 unsigned long int def_freq; 192 int max_power; 193 int last_bw; 194 int bpf_center; 195 int pbt; 196 197 bool PbtActive; 198 int RitFreq; 199 bool RitActive; 200 int XitFreq; 201 bool XitActive; 202 int split; 203 204 int if_shift_min; 205 int if_shift_max; 206 int if_shift_step; 207 int if_shift_mid; 208 209 int atten_level; 210 int preamp_level; 211 212 int rTONE; // index into szTONES, PL_tones arrar of receive PL tones 213 int tTONE; 214 215 bool has_xcvr_auto_on_off; 216 bool has_a2b; 217 bool has_b2a; 218 bool has_vfo_adj; 219 bool has_rit; 220 bool has_xit; 221 bool has_bfo; 222 bool has_power_control; 223 bool has_volume_control; 224 bool has_mode_control; 225 bool has_bandwidth_control; 226 bool has_dsp_controls; 227 bool has_FILTER; 228 bool has_micgain_control; 229 bool has_mic_line_control; 230 bool has_notch_control; 231 bool has_auto_notch; 232 bool has_noise_control; 233 bool has_noise_reduction_control; 234 bool has_noise_reduction; 235 bool has_attenuator_control; 236 bool has_preamp_control; 237 bool has_ifshift_control; 238 bool has_pbt_controls; 239 bool has_ptt_control; 240 bool has_tune_control; 241 bool has_swr_control; 242 bool has_alc_control; 243 bool has_agc_control; 244 bool has_rf_control; 245 bool has_sql_control; 246 bool has_smeter; 247 bool has_power_out; 248 bool has_line_out; 249 bool has_split; 250 bool has_split_AB; 251 bool has_data_port; 252 bool has_getvfoAorB; 253 254 bool has_extras; 255 bool has_nb_level; 256 bool has_agc_level; 257 bool has_cw_wpm; 258 bool has_cw_vol; 259 bool has_cw_spot; 260 bool has_cw_spot_tone; 261 bool has_cw_qsk; 262 bool has_cw_break_in; 263 bool has_cw_delay; 264 bool has_cw_weight; 265 bool has_cw_keyer; 266 bool has_vox_onoff; 267 bool has_vox_gain; 268 bool has_vox_anti; 269 bool has_vox_hang; 270 bool has_vox_on_dataport; 271 bool has_compression; 272 bool has_compON; 273 bool use_line_in; 274 bool has_bpf_center; 275 bool has_special; 276 bool has_ext_tuner; 277 bool has_band_selection; 278 279 bool has_vfoAB; 280 281 bool restore_mbw; 282 283 bool has_get_info; 284 285 // Icom Xcvr 286 bool ICOMrig; 287 bool ICOMmainsub; 288 string pre_to; 289 string pre_fm; 290 string post; 291 string ok; 292 string bad; 293 294 int filA; 295 int filB; 296 297 int data_type; 298 299 // for pia TS2000 without a front panel 300 int _noise_reduction_level; 301 int _nrval1; 302 int _nrval2; 303 int _currmode; 304 305 std::string replystr; 306 307 protected: 308 string cmd; // command string 309 string rsp; // expected response string (header etc) 310 311 string to_bcd_be(unsigned long int freq, int len); 312 string to_bcd(unsigned long int freq, int len); 313 unsigned long int fm_bcd (string bcd, int len); 314 unsigned long int fm_bcd_be(string bcd, int len); 315 string to_binary_be(unsigned long int freq, int len); 316 string to_binary(unsigned long int freq, int len); 317 unsigned long int fm_binary(string binary, int len); 318 unsigned long int fm_binary_be(string binary_be, int len); 319 string to_decimal_be(unsigned long int d, int len); 320 string to_decimal(unsigned long int d, int len); 321 unsigned long int fm_decimal(string decimal, int len); 322 unsigned long int fm_decimal_be(string decimal_be, int len); 323 324 public: 325 rigbase(); ~rigbase()326 virtual ~rigbase(){} 327 initialize()328 virtual void initialize() {} post_initialize()329 virtual void post_initialize() {} shutdown()330 virtual void shutdown() {} 331 check()332 virtual bool check() { return false; } 333 set_data_port()334 virtual void set_data_port() {} 335 get_info(void)336 virtual bool get_info(void) {return false;} get_vfoA(void)337 virtual unsigned long int get_vfoA(void) {return A.freq;} set_vfoA(unsigned long int f)338 virtual void set_vfoA(unsigned long int f) {A.freq = f;} get_vfoB(void)339 virtual unsigned long int get_vfoB(void) {return B.freq;} set_vfoB(unsigned long int f)340 virtual void set_vfoB(unsigned long int f) {B.freq = f; set_vfoA(f);} 341 set_modeA(int val)342 virtual void set_modeA(int val) {A.imode = val;} get_modeA()343 virtual int get_modeA() {return A.imode;} get_modetype(int n)344 virtual int get_modetype(int n) {return 'U';} set_modeB(int val)345 virtual void set_modeB(int val) {B.imode = val; set_modeA(val);} get_modeB()346 virtual int get_modeB() {return B.imode;} selectA()347 virtual void selectA(){ inuse = onA;} selectB()348 virtual void selectB(){ inuse = onB;} A2B()349 virtual void A2B(){} B2A()350 virtual void B2A(){} get_vfoAorB()351 virtual int get_vfoAorB(){return inuse;} isOnA()352 virtual bool isOnA(){return inuse == onA;} isOnB()353 virtual bool isOnB(){return inuse == onB;} 354 swapAB()355 virtual void swapAB(){inuse = isOnA() ? onB : onA;} 356 set_bwA(int val)357 virtual void set_bwA(int val) {A.iBW = val;} get_bwA()358 virtual int get_bwA() {return A.iBW;} set_bwB(int val)359 virtual void set_bwB(int val) {B.iBW = val; set_bwA(val);} get_bwB()360 virtual int get_bwB() {return B.iBW;} adjust_bandwidth(int m)361 virtual int adjust_bandwidth(int m) {return 0;} def_bandwidth(int m)362 virtual int def_bandwidth(int m) {return 0;} bwtable(int m)363 virtual const char **bwtable(int m) {return bandwidths_;} lotable(int m)364 virtual const char **lotable(int m) {return NULL;} hitable(int m)365 virtual const char **hitable(int m) {return NULL;} 366 FILT(int val)367 virtual const char *FILT(int val) { return "1"; } nextFILT()368 virtual const char *nextFILT() { return "1";} 369 get_FILT(int mode)370 virtual int get_FILT(int mode) { return 1; } set_FILT(int filter)371 virtual void set_FILT(int filter) {} 372 set_BANDWIDTHS(std::string s)373 virtual void set_BANDWIDTHS(std::string s) {} get_BANDWIDTHS()374 virtual std::string get_BANDWIDTHS() { return ""; } 375 set_FILTERS(std::string s)376 virtual void set_FILTERS(std::string s) {} get_FILTERS()377 virtual std::string get_FILTERS() { return ""; } 378 can_split()379 virtual bool can_split() { return false;} 380 virtual void set_split(bool val); 381 virtual int get_split(); 382 twovfos()383 virtual bool twovfos() {return false;} 384 canswap()385 virtual bool canswap() { return false; } 386 get_agc()387 virtual int get_agc() { return 0; } incr_agc()388 virtual int incr_agc() { return 0;} agc_label()389 virtual const char *agc_label() { return "";} agc_val()390 virtual int agc_val() { return 0; } 391 get_smeter(void)392 virtual int get_smeter(void) {return -1;} get_swr(void)393 virtual int get_swr(void) {return -1;} get_alc(void)394 virtual int get_alc(void) {return -1;} select_swr()395 virtual void select_swr() {} select_alc()396 virtual void select_alc() {} get_power_out(void)397 virtual int get_power_out(void) {return -1;} 398 399 int po_, po_val; 400 int pmax; get_power_control(void)401 virtual int get_power_control(void) {return po_;} set_power_control(double val)402 virtual void set_power_control(double val) {po_ = val;} get_pc_min_max_step(double & min,double & max,double & step)403 virtual void get_pc_min_max_step(double &min, double &max, double &step) { 404 min = 0; pmax = max = 100; step = 1; } 405 406 int vl_; set_volume_control(int val)407 virtual void set_volume_control(int val) {vl_ = val;} get_volume_control()408 virtual int get_volume_control() {return vl_;} get_vol_min_max_step(int & min,int & max,int & step)409 virtual void get_vol_min_max_step(int &min, int &max, int &step) { 410 min = 0; max = 100; step = 1; } 411 412 int ptt_; 413 int tune_; set_PTT_control(int val)414 virtual void set_PTT_control(int val) {ptt_ = val;} get_PTT()415 virtual int get_PTT() {return ptt_;} tune_rig(int how)416 virtual void tune_rig(int how) {} get_tune()417 virtual int get_tune() { return tune_; } 418 set_attenuator(int val)419 virtual void set_attenuator(int val) {atten_level = val;} next_attenuator()420 virtual int next_attenuator() { atten_level = !atten_level; return atten_level; } get_attenuator()421 virtual int get_attenuator() {return atten_level;} 422 set_preamp(int val)423 virtual void set_preamp(int val) {preamp_level = val;} next_preamp()424 virtual int next_preamp() { preamp_level = !preamp_level; return preamp_level; } get_preamp()425 virtual int get_preamp() {return preamp_level;} 426 427 // CTCSS tones / offset set_tones(int tx_tone,int rx_tone)428 virtual void set_tones(int tx_tone, int rx_tone) { return; } set_offset(int indx,int offset)429 virtual void set_offset(int indx, int offset) { return; } 430 431 int sh_; 432 bool sh_on_; set_if_shift(int val)433 virtual void set_if_shift(int val) {sh_ = val;} set_if_shift_on(int on)434 virtual void set_if_shift_on(int on) { sh_on_ = on; } get_if_shift(int & val)435 virtual bool get_if_shift(int &val) {val = sh_; return sh_on_;} get_if_min_max_step(int & min,int & max,int & step)436 virtual void get_if_min_max_step(int &min, int &max, int &step) { 437 min = 0; max = 100; step = 1; } get_if_mid()438 virtual void get_if_mid() {}; 439 440 int no_, noval_; set_notch(bool on,int val)441 virtual void set_notch(bool on, int val) { no_ = on; noval_ = val;} get_notch(int & val)442 virtual bool get_notch(int &val) {val = noval_; return no_;} get_notch_min_max_step(int & min,int & max,int & step)443 virtual void get_notch_min_max_step(int &min, int &max, int &step) { 444 min = 0; max = 100; step = 1; } 445 446 int nb_, nbval_; set_noise(bool on)447 virtual void set_noise(bool on) {nb_ = on;} get_noise()448 virtual int get_noise(){return nb_;} set_nb_level(int val)449 virtual void set_nb_level(int val) {nbval_ = val;} get_nb_level()450 virtual int get_nb_level() { return nbval_; } get_nb_min_max_step(int & min,int & max,int & step)451 virtual void get_nb_min_max_step(int &min, int &max, int &step) { 452 min = 0; max = 100; step = 1; } 453 454 int nr_, nrval_; set_noise_reduction(int val)455 virtual void set_noise_reduction(int val) {nr_ = val;} get_noise_reduction()456 virtual int get_noise_reduction() {return nr_;} set_noise_reduction_val(int val)457 virtual void set_noise_reduction_val(int val) {nrval_ = val;} get_noise_reduction_val()458 virtual int get_noise_reduction_val() {return nrval_;} get_nr_min_max_step(int & min,int & max,int & step)459 virtual void get_nr_min_max_step(int &min, int &max, int &step) { 460 min = 0; max = 100; step = 1; } 461 set_pbt_inner(int val)462 virtual void set_pbt_inner(int val) {} set_pbt_outer(int val)463 virtual void set_pbt_outer(int val) {} get_pbt_inner()464 virtual int get_pbt_inner() {return 0;} get_pbt_outer()465 virtual int get_pbt_outer() {return 0;} 466 467 int mcval_; set_mic_gain(int val)468 virtual void set_mic_gain(int val) {mcval_ = val;} get_mic_gain()469 virtual int get_mic_gain() {return mcval_;} get_mic_min_max_step(int & min,int & max,int & step)470 virtual void get_mic_min_max_step(int &min, int &max, int &step) { 471 min = 0; max = 100; step = 1; } set_mic_line(int val)472 virtual void set_mic_line(int val) {} 473 474 int sqval_; set_squelch(int val)475 virtual void set_squelch(int val) {sqval_ = val;} get_squelch()476 virtual int get_squelch() {return sqval_;} get_squelch_min_max_step(int & min,int & max,int & step)477 virtual void get_squelch_min_max_step(int &min, int &max, int &step) { 478 min = 0; max = 100; step = 1; } 479 480 int rfg_; set_rf_gain(int val)481 virtual void set_rf_gain(int val) {rfg_ = val;} get_rf_gain()482 virtual int get_rf_gain() {return rfg_;} get_rf_min_max_step(int & min,int & max,int & step)483 virtual void get_rf_min_max_step(int &min, int &max, int &step) { 484 min = 0; max = 100; step = 1; } 485 get_modename_(int n)486 virtual const char * get_modename_(int n){ 487 if (modes_ == NULL) return ""; 488 int nmodes = 0; 489 while (modes_[nmodes] != NULL) nmodes++; 490 if (n < nmodes && n > -1) 491 return modes_[n]; 492 else 493 return modes_[0]; 494 } 495 get_bwname_(int bw,int md)496 virtual const char * get_bwname_(int bw, int md) { 497 // read bw based on mode 498 const char ** pbwt; 499 pbwt = bwtable(md); 500 if (pbwt == NULL) return ""; 501 int nbw = 0; 502 while (pbwt[nbw] != NULL) nbw++; 503 if (bw < nbw && bw > -1) 504 return pbwt[bw]; 505 else 506 return pbwt[0]; 507 } 508 509 int ritval_; setRit(int v)510 virtual void setRit(int v) {ritval_ = v;} getRit()511 virtual int getRit() {return ritval_;} get_RIT_min_max_step(int & min,int & max,int & step)512 virtual void get_RIT_min_max_step(int &min, int &max, int &step) { 513 min = -100; max = 100; step = 1; } 514 setXit(int v)515 virtual void setXit(int v) { XitFreq = v;} getXit()516 virtual int getXit() {return XitFreq;} get_XIT_min_max_step(int & min,int & max,int & step)517 virtual void get_XIT_min_max_step(int &min, int &max, int &step) { 518 min = -100; max = 100; step = 1; } 519 520 int bfo_; setBfo(int v)521 virtual void setBfo(int v) {bfo_ = v;} getBfo()522 virtual int getBfo() {return bfo_;} get_BFO_min_max_step(int & min,int & max,int & step)523 virtual void get_BFO_min_max_step(int &min, int &max, int &step) { 524 min = -100; max = 100; step = 1; } 525 526 int vfo_; setVfoAdj(double v)527 virtual void setVfoAdj(double v) {vfo_ = v;} getVfoAdj()528 virtual double getVfoAdj() {return vfo_;} get_vfoadj_min_max_step(int & min,int & max,int & step)529 virtual void get_vfoadj_min_max_step(int &min, int &max, int &step) { 530 min = -100; max = 100; step = 1; } 531 set_line_out()532 virtual void set_line_out() {} get_line_out()533 virtual int get_line_out() { return 100; } set_agc_level()534 virtual void set_agc_level() {} 535 set_cw_weight()536 virtual void set_cw_weight() {} get_cw_weight_min_max_step(double & min,double & max,double & step)537 virtual void get_cw_weight_min_max_step(double &min, double &max, double &step) { 538 min = 2.5; max = 4.5; step = 0.1; } // default for FT950/FT450D set_cw_wpm()539 virtual void set_cw_wpm() {} get_cw_wpm_min_max(int & min,int & max)540 virtual void get_cw_wpm_min_max(int &min, int &max) { 541 min = 5; max = 50; } // default for FT950/FT450D enable_keyer()542 virtual void enable_keyer() {} set_break_in()543 virtual void set_break_in() {} get_break_in()544 virtual int get_break_in() {return 0;} 545 set_cw_qsk()546 virtual void set_cw_qsk() {} get_cw_qsk_min_max_step(double & min,double & max,double & step)547 virtual void get_cw_qsk_min_max_step(double &min, double &max, double &step) { 548 min = 15; max = 30; step = 5; } // default for FT950/FT450D 549 set_cw_delay()550 virtual void set_cw_delay() {} get_cw_delay_min_max_step(double & min,double & max,double & step)551 virtual void get_cw_delay_min_max_step(double &min, double &max, double &step) { 552 min = 30; max = 3000; step = 10; } // default for FT950/FT450D 553 set_cw_vol()554 virtual void set_cw_vol() {} set_cw_spot()555 virtual bool set_cw_spot() {return false;} set_cw_spot_tone()556 virtual void set_cw_spot_tone() {} get_cw_spot_tone_min_max_step(int & min,int & max,int & step)557 virtual void get_cw_spot_tone_min_max_step(int &min, int &max, int &step) { 558 min = 300; max = 1050; step = 50; } // default for FT950/FT450D set_spot_onoff()559 virtual void set_spot_onoff() {} set_vox_onoff()560 virtual void set_vox_onoff() {} set_vox_gain()561 virtual void set_vox_gain() {} get_vox_gain_min_max_step(int & min,int & max,int & step)562 virtual void get_vox_gain_min_max_step(int &min, int &max, int &step) { 563 min = 0; max = 100; step = 1; } // default for FT950/FT450D set_vox_anti()564 virtual void set_vox_anti() {} get_vox_anti_min_max_step(int & min,int & max,int & step)565 virtual void get_vox_anti_min_max_step(int &min, int &max, int &step) { 566 min = 0; max = 100; step = 1; } // default for FT950/FT450D set_vox_hang()567 virtual void set_vox_hang() {} get_vox_hang_min_max_step(int & min,int & max,int & step)568 virtual void get_vox_hang_min_max_step(int &min, int &max, int &step) { 569 min = 30; max = 3000; step = 10; } // default for FT950/FT450D set_vox_on_dataport()570 virtual void set_vox_on_dataport() {} set_mon_vol()571 virtual void set_mon_vol() {} set_squelch_level()572 virtual void set_squelch_level() {} set_compression(int,int)573 virtual void set_compression(int, int) {} get_compression(int & on,int & val)574 virtual void get_compression(int &on, int &val) { on = 0; val = 0; } get_comp_min_max_step(int & min,int & max,int & step)575 virtual void get_comp_min_max_step(int &min, int &max, int &step) { 576 min = 0; max = 100; step = 1; } set_auto_notch(int v)577 virtual void set_auto_notch(int v) {} get_auto_notch()578 virtual int get_auto_notch() {return 0;} tuner_bypass()579 virtual void tuner_bypass() {} enable_xmtr()580 virtual void enable_xmtr() {} enable_tloop()581 virtual void enable_tloop() {} set_nb_level()582 virtual void set_nb_level() {} set_special(int v)583 virtual void set_special(int v) {} set_band_selection(int v)584 virtual void set_band_selection(int v) {} get_band_selection(int v)585 virtual void get_band_selection(int v) {} set_xcvr_auto_on()586 virtual void set_xcvr_auto_on() {} set_xcvr_auto_off()587 virtual void set_xcvr_auto_off() {} 588 adjustCIV(uchar adr)589 virtual void adjustCIV(uchar adr) {} 590 read_stream()591 virtual void read_stream() {} 592 parse_vfoA(string)593 virtual int parse_vfoA(string){return 0;} parse_vfoB(string)594 virtual int parse_vfoB(string){return 0;} parse_modeA(string)595 virtual int parse_modeA(string){return 0;} parse_modeB(string)596 virtual int parse_modeB(string){return 0;} parse_bwA(string)597 virtual int parse_bwA(string){return 0;} parse_bwB(string)598 virtual int parse_bwB(string){return 0;} parse_volume_control(string)599 virtual int parse_volume_control(string){return 0;} parse_power_control(string)600 virtual int parse_power_control(string){return 0;} parse_rf_gain(string)601 virtual int parse_rf_gain(string){return 0;} parse_mic_gain(string)602 virtual int parse_mic_gain(string){return 0;} parse_attenuator(string)603 virtual int parse_attenuator(string){return 0;} parse_preamp(string)604 virtual int parse_preamp(string){return 0;} parse_smeter(string)605 virtual int parse_smeter(string){return 0;} parse_(string)606 virtual int parse_(string){return 0;} parse_noise(string)607 virtual int parse_noise(string){return 0;} parse_power_out(string)608 virtual int parse_power_out(string){return 0;} parse_swr(string)609 virtual int parse_swr(string){return 0;} parse_alc(string)610 virtual int parse_alc(string){return 0;} parse_split(string)611 virtual int parse_split(string){return 0;} 612 613 int waitN(size_t n, int timeout, const char *, int pr = HEX); 614 int wait_char(int ch, size_t n, int timeout, const char *, int pr = HEX); 615 616 // IC-7610 set_digi_sel(bool)617 virtual void set_digi_sel(bool) {} set_digi_val(int)618 virtual void set_digi_val(int) {} get_digi_sel()619 virtual int get_digi_sel() {return 0;} get_digi_val()620 virtual int get_digi_val() {return 0;} set_dual_watch(bool)621 virtual void set_dual_watch(bool) {} get_dual_watch()622 virtual int get_dual_watch() {return 0;} set_index_att(int)623 virtual void set_index_att(int) {} 624 625 // more pia TS2000 without front panel! currmode()626 int currmode() { return _currmode; } nrval1()627 int nrval1() { return _nrval1; } nrval2()628 int nrval2() { return _nrval2; } noise_reduction_level()629 int noise_reduction_level() { return _noise_reduction_level; } 630 631 // TS990 monitor usurp'd use of IF shift control set_monitor(bool)632 virtual void set_monitor(bool) {} 633 634 // TT-550 / at-11 internal tuner i/o commands at11_bypass()635 virtual void at11_bypass() {} at11_autotune()636 virtual void at11_autotune() {} at11_cap_up()637 virtual void at11_cap_up() {} at11_cap_dn()638 virtual void at11_cap_dn() {} at11_ind_up()639 virtual void at11_ind_up() {} at11_ind_dn()640 virtual void at11_ind_dn() {} at11_loZ()641 virtual void at11_loZ() {} at11_hiZ()642 virtual void at11_hiZ() {} 643 644 string bcd255(int val); 645 int num100(string bcd); 646 int hexval(int hex); 647 int hex2val(string hexval); 648 649 // Yaesu force ID response before sending command 650 std::string IDstr; 651 bool id_OK(std::string ID, int wait); 652 void sendOK(std::string cmd); 653 654 // KX3 power scale 655 int powerScale; power_scale()656 virtual int power_scale() { 657 return 1; 658 } power_max()659 virtual int power_max() { 660 return pmax; 661 } 662 }; 663 664 extern rigbase *rigs[]; 665 666 extern const char *szNORIG; 667 extern const char *szNOMODES[]; 668 extern const char *szNOBWS[]; 669 670 extern char bcdval[]; 671 672 #endif 673