1 2 #define MICBLOCK_SSBTIME 0.005 3 #define MICBLOCK_CWTIME 0.002 4 #define SSB_DELAY_EXTRA 2 5 6 7 #define MAX_DISPLAY_TYPES 3 8 #define MAX_SSBPROC_FILES 15 9 #define MAX_CWPROC_FILES 10 10 #define SSB_MINFQ_LOW 50 11 #define SSB_MINFQ_HIGH 3000 12 #define SSB_MAXFQ_LOW 1000 13 #define SSB_MAXFQ_HIGH 8000 14 #define SSB_MINSLOPE -50 15 #define SSB_MAXSLOPE 50 16 #define SSB_MINBASS -50 17 #define SSB_MAXBASS 50 18 #define SSB_MINTREBLE -50 19 #define SSB_MAXTREBLE 50 20 #define SSB_MAX_MICF 120 21 #define SSB_MAX_MICT 120 22 #define SSB_MAX_MICGAIN 120 23 #define SSB_MAX_MICAGC_TIME 1000 24 #define SSB_MAX_MICOUT_GAIN 80 25 #define SSB_MIN_RF1_GAIN -50 26 #define SSB_MAX_RF1_GAIN 120 27 #define MAX_DYNRANGE 0.0000001 // -70dB for weakest signal 28 #define TX_AGC_THRESHOLD 1. 29 30 #define TX_SETUP_AD 0 31 #define TX_SETUP_MUTE 1 32 #define TX_SETUP_MICAGC 2 33 #define TX_SETUP_RF1AGC 3 34 #define TX_SETUP_RF1CLIP 4 35 36 #define TX_BAR_AD_LINE 9 37 #define TX_BAR_MUTE_LINE 11 38 #define TX_BAR_MICAGC_LINE 13 39 #define TX_BAR_RF1AGC_LINE 15 40 #define TX_BAR_RF1CLIP_LINE 17 41 #define TX_BAR_ALC_LINE 19 42 #define TXPAR_INPUT_LINE 21 43 44 #define MIC_KEY_LINE 12 45 #define KEY_INDICATOR_LINE (MIC_KEY_LINE+10) 46 #define TXCW_INPUT_LINE (KEY_INDICATOR_LINE+4) 47 #define CW_MAX_TIME_CONSTANT 100.0 48 #define CW_MIN_TIME_CONSTANT 1.0 49 50 #define TX_BAR_SIZE 256 51 52 #define MAX_DISPLAY_TYPES 3 53 #define DISPLAY_HOLD_SIZE 32 54 #define TG_HSIZ (FG_HSIZ+4*text_width) 55 #define TG_VSIZ (3*(text_height+3)+3) 56 57 #define MAX_SCREENCOUNT 15 58 59 extern int tx_onoff_flag; 60 extern double tg_basebfreq; 61 extern int mic_key_pa; 62 extern int mic_key_px; 63 extern int screen_count; 64 extern int tx_lowest_bin; 65 extern int tx_highest_bin; 66 extern char *clipfft_mute; 67 extern char *cliptimf_mute; 68 extern char *alctimf_mute; 69 extern float *tx_mic_key; 70 extern float micfft_winfac; 71 extern int tg_old_y1; 72 extern int tg_old_y2; 73 extern int tg_old_x1; 74 extern int tg_old_x2; 75 extern float tx_hware_fqshift; 76 extern float tx_ssbproc_fqshift; 77 extern int mic_key_bufsiz; 78 extern int mic_key_block; 79 extern int mic_key_mask; 80 extern int tx_indicator_first_pixel; 81 extern int mic_key_indicator_block; 82 extern int old_cw_rise_time; 83 extern double tx_daout_cos; 84 extern double tx_daout_sin; 85 extern double tx_daout_phstep_sin; 86 extern double tx_daout_phstep_cos; 87 extern float tx_ideal_delay; 88 extern float tx_ssb_resamp_block_factor; 89 extern float rg_old_time; 90 extern float rg_old_gain; 91 extern float rg_old_zero; 92 93 extern int tx_graph_scro; 94 extern int tx_flag; 95 extern int txmem_size; 96 extern int tx_ad_maxamp; 97 extern int tx_input_mode; 98 extern float tx_resamp_ampfac1; 99 extern float tx_resamp_ampfac2; 100 extern MEMREF_T *txmem_handle; 101 extern int tx_audio_in; 102 extern int tx_audio_out; 103 extern short int *txtrace; 104 extern float txad_hz_per_bin; 105 extern float txtrace_gain; 106 extern int txtrace_height; 107 extern float micfft_bin_minpower_ref; 108 extern float micfft_bin_minpower; 109 extern float micfft_minpower_ref; 110 extern float micfft_minpower; 111 extern float *mic_filter; 112 extern int *tx_out_int; 113 114 extern short int *tx_out_shi; 115 extern float tx_agc_factor; 116 extern float tx_agc_decay; 117 extern float txpwr_decay; 118 extern float tx_forwardpwr; 119 extern float tx_backpwr; 120 extern int tx_output_flag; 121 extern int tx_ph1; 122 extern float tx_resample_ratio; 123 extern float new_tx_resample_ratio; 124 extern float tx_output_upsample; 125 extern int tx_resamp_pa; 126 extern int tx_resamp_px; 127 extern int tx_filter_ia1; 128 extern int tx_filter_ia2; 129 extern int tx_filter_ia3; 130 extern int tx_filter_ib1; 131 extern int tx_filter_ib2; 132 extern int tx_filter_ib3; 133 extern char display_color[MAX_DISPLAY_TYPES]; 134 extern int tx_pre_resample; 135 extern int tx_wrblock_no; 136 extern int tx_output_mode; 137 extern int tx_show_siz; 138 extern int tx_wsamps; 139 extern float tx_wttim; 140 extern float tx_wttim_sum; 141 extern float tx_wttim_ref; 142 extern float tx_wttim_diff; 143 extern int tx_setup_flag; 144 145 extern float tx_pilot_tone; 146 extern float tx_output_amplitude; 147 extern int txout_pa; 148 extern int txout_px; 149 extern float mic_key_fx; 150 extern float *txout_waveform; 151 extern int max_tx_cw_waveform_points; 152 extern int tx_cw_waveform_points; 153 extern int tone_key, tot_key; 154 extern int tx_waveform_pointer; 155 extern int old_rxtx_state; 156 extern int rxtx_state; 157 extern int rxtx_wait; 158 extern int tx_mode; 159 160 161 extern char ssbproc_filename[]; 162 extern char cwproc_filename[]; 163 extern char *txproc_filename; 164 165 extern float *radar_pulse_ston; 166 extern float *radar_pulse_noise_floor; 167 extern int *radar_pulse_bin; 168 extern int *radar_pulse_pointer; 169 extern MEMREF_T *radar_handle; 170 extern float *radar_average; 171 extern int radar_graph_scro; 172 extern int rg_old_x1; 173 extern int rg_old_x2; 174 extern int rg_old_y1; 175 extern int rg_old_y2; 176 extern int radar_bins; 177 extern int radar_maxlines; 178 extern int radar_lines; 179 extern int pulse_sep; 180 extern int pulse_bin; 181 extern float radar_decayfac; 182 extern int radar_redraw_count; 183 extern int radar_update_cnt; 184 extern float rg_cfac; 185 extern float rg_czer; 186 extern int radar_first_bin; 187 extern int radar_last_bin; 188 extern int radar_show_bins; 189 190 191 192 193 194 // *************************************************** 195 // Transform sizes and associated variables. 196 // 197 // *************************************************** 198 // The first time function, data from the soundcard. The transform 199 // size is set for the data to span a suitable time in order to 200 // get a frequency resolution and an associated time delay that 201 // is independent of the microphone input sampling speed. 202 // Size is micsize. 203 204 extern int tx_disk_mode; 205 206 extern short int *mictimf_shi; 207 extern int *mictimf_int; 208 extern int micsize; 209 extern int micn; 210 extern int mictimf_pa; 211 extern int mictimf_px; 212 extern int mictimf_block; 213 extern int mictimf_bufsiz; 214 extern int mictimf_mask; 215 extern float *mic_win; 216 extern COSIN_TABLE *mic_table; 217 extern unsigned short int *mic_permute; 218 extern float *mic_tmp; 219 // *************************************************** 220 // The first FFT. The transforms are likely to span a far too large 221 // frequency range. Only the minimum required to represent the passband 222 // of interest is used for the output of mic_fft 223 // Size is mic_fftsize. 224 extern float *micfft; 225 extern int mic_fftsize; 226 extern int mic_fftn; 227 extern int mic_fftsize_start; 228 extern int mic_fftn_start; 229 extern int mic_sizhalf; 230 extern int micfft_pa; 231 extern int micfft_px; 232 extern int micfft_block; 233 extern int micfft_bufsiz; 234 extern int micfft_mask; 235 extern COSIN_TABLE *micfft_table; 236 extern unsigned short int *micfft_permute; 237 extern float *micfft_win; 238 extern int micfft_indicator_block; 239 // *************************************************** 240 // The second time function. Here we will do clipping. 241 // Size is mic_fftsize. 242 extern float *cliptimf; 243 extern int cliptimf_pa; 244 extern int cliptimf_px; 245 // *************************************************** 246 // The second FFT. Used to clean up the spectrum. 247 // Size is alc_fftsize. 248 extern float *clipfft; 249 extern int clipfft_pa; 250 extern int clipfft_px; 251 // *************************************************** 252 // The third time function. Used for ALC. 253 // We will use this time function for resampling to a new sampling speed 254 // that will be equal to the output speed or a power of two faster or 255 // slower. 256 // The fractional resampler needs an oversampled input and therefore 257 // we first upsample by a power of two here. 258 // Size is alc_fftsize. 259 extern int alc_fftsize; 260 extern int alc_fftn; 261 extern int alc_sizhalf; 262 extern float *alctimf; 263 extern float *alctimf_pwrf; 264 extern float *alctimf_pwrd; 265 extern int alctimf_pa; 266 extern int alctimf_pb; 267 extern float alctimf_fx; 268 extern int alc_block; 269 extern int alc_bufsiz; 270 extern int alc_mask; 271 extern COSIN_TABLE *alc_table; 272 extern unsigned short int *alc_permute; 273 extern float *alc_win; 274 // *************************************************** 275 // The fourth time function, the output from the fractional resampler. 276 // Size is alc_fftsize. 277 // We use transforms one by one so no buffer pointer is needed. 278 // The third FFT is computed in place and the size of the transform 279 // is changed in place to txout_fftsize. 280 extern float *tx_resamp; 281 extern float *resamp_tmp; 282 // *************************************************** 283 // The fifth time function. 284 // Size is txout_fftsize. 285 extern int txout_fftsize; 286 extern int txout_fftn; 287 extern int txout_sizhalf; 288 extern float *txout; 289 extern float *txout_tmp; 290 extern COSIN_TABLE *txout_table; 291 extern unsigned short int *txout_permute; 292 // **************************************************** 293 294 void show_txfft(float *z, float lim, int type, int siz); 295 void tx_bar(int xt,int yt,int val1, int val2); 296 void resample_tx_output(void); 297 void check_txparms(void); 298 void init_txmem_spproc(void); 299 void open_tx_sndin(void); 300 void close_tx_sndin(void); 301 void spproc_setup(void); 302 void cwproc_setup(void); 303 void save_tx_parms(char verbose); 304 int lir_tx_input_samples(void); 305 int lir_tx_output_samples(void); 306 void open_tx_sndout(void); 307 void close_tx_sndout(void); 308 309 void make_tx_graph(int clear_old); 310 void init_txmem_cwproc(void); 311 void make_txproc_filename(void); 312 void tx_ssb_step8(void); 313 float tx_ssb_step7(float *prat); 314 float tx_ssb_step6(float *prat); 315 void tx_ssb_step5(void); 316 void tx_ssb_step4(float ampinv,float *t1, float *prat); 317 void tx_ssb_step3(float *totamp); 318 int tx_ssb_step2(float *totpwr); 319 void set_default_cwproc_parms(void); 320 void make_tx_modes(void); 321 void tx_send_to_da(void); 322 void make_tx_cw_waveform(void); 323 void make_tx_phstep(void); 324 void init_txmem_common(float micblock_time); 325 326 327