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