]> git.rkrishnan.org Git - dttsp.git/blob - jDttSP/sdrexport.h
4802d5b3b8a7da3d4f85fa0bc0f79ccf6693f186
[dttsp.git] / jDttSP / sdrexport.h
1 /* sdrexport.h
2
3 This file is part of a program that implements a Software-Defined Radio.
4
5 Copyright (C) 2004 by Frank Brickle, AB2KT and Bob McGwier, N4HY
6
7 This program 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 2 of the License, or
10 (at your option) any later version.
11
12 This program 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 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20
21 The authors can be reached by email at
22
23 ab2kt@arrl.net
24 or
25 rwmcgwier@comcast.net
26
27 or by paper mail at
28
29 The DTTS Microwave Society
30 6 Kathleen Place
31 Bridgewater, NJ 08807
32 */  
33   
34 #ifndef _sdrexport_h
35 #define _sdrexport_h
36   
37 #include <common.h>
38
39 //------------------------------------------------------------------------
40 // max no. simultaneous receivers
41 #define MAXRX (4)
42 //------------------------------------------------------------------------
43 /* modulation types, modes */ 
44 typedef enum _sdrmode {
45   LSB,                          //  0
46   USB,                          //  1
47   DSB,                          //  2
48   CWL,                          //  3
49   CWU,                          //  4
50   FMN,                          //  5
51   AM,                           //  6
52   PSK,                          //  7
53   SPEC,                         //  8
54   RTTY,                         //  9
55   SAM,                          // 10
56   DRM                           // 11
57 } SDRMODE;
58
59 typedef enum _trxmode { RX, TX } TRXMODE;
60
61 //========================================================================
62 /* RX/TX both */ 
63 //------------------------------------------------------------------------
64 extern struct _uni {
65   REAL samplerate;
66   int buflen;
67
68   struct {
69     SDRMODE sdr;
70     TRXMODE trx;
71   } mode;
72
73   struct {
74     BOOLEAN flag;
75     struct {
76       char *path;
77       size_t size;
78       Chan c;
79     } chan;
80     REAL val, avgval;
81     METERTYPE type;
82   } meter;
83
84   struct {
85     BOOLEAN flag;
86     struct {
87       char *path;
88       size_t size;
89       Chan c;
90     } chan;
91     splitfld splt;
92   } update;
93
94   struct {
95     char *path;
96     int bits;
97   } wisdom;
98
99   struct {
100     BOOLEAN act[MAXRX];
101     int lis, nac, nrx;
102   } multirx;
103
104   long tick;
105   
106 } uni;
107
108 //------------------------------------------------------------------------
109 /* RX */ 
110 //------------------------------------------------------------------------
111
112 extern struct _rx {
113   struct {
114     CXB i, o;
115   } buf;
116   IQ iqfix;
117   struct {
118     REAL freq, phase;
119     OSC gen;
120   } osc;
121   struct {
122     ComplexFIR coef;
123     FiltOvSv ovsv;
124     COMPLEX *save;
125   } filt;
126   struct {
127     REAL thresh;
128     NB gen;
129     BOOLEAN flag;
130   } nb;
131   struct {
132     REAL thresh;
133     NB gen;
134     BOOLEAN flag;
135   } nb_sdrom;
136   struct {
137     LMSR gen;
138     BOOLEAN flag;
139   } anr, anf;
140   struct {
141     DIGITALAGC gen;
142     BOOLEAN flag;
143   } agc;
144   struct { AMD gen; } am;
145   struct { FMD gen; } fm;
146   struct {
147     BOOLEAN flag;
148     SpotToneGen gen;
149   } spot;
150   struct {
151     struct {
152       REAL val;
153       BOOLEAN flag;
154     } pre, post;
155   } scl;
156   struct {
157     REAL thresh, power;
158     BOOLEAN flag, running, set;
159     int num;
160   } squelch;
161   SDRMODE mode;
162   struct { BOOLEAN flag; } bin;
163   REAL norm;
164   COMPLEX azim;
165   long tick;
166 } rx[MAXRX];
167
168 //------------------------------------------------------------------------
169 /* TX */ 
170 //------------------------------------------------------------------------
171 extern struct _tx {
172   struct {
173     CXB i, o;
174   } buf;
175   IQ iqfix;
176   struct {
177     REAL freq, phase;
178     OSC gen;
179   } osc;
180   struct {
181     ComplexFIR coef;
182     FiltOvSv ovsv;
183     COMPLEX *save;
184   } filt;
185   struct {
186     ComplexFIR coef;
187     FiltOvSv ovsv;
188     CXB in, out;
189   } fm;
190   struct {
191     DIGITALAGC gen;
192     BOOLEAN flag;
193   } agc;
194   struct {
195     SpeechProc gen;
196     BOOLEAN flag;
197   } spr;
198   struct {
199     COMPLEX dc;
200     struct {
201       REAL val;
202       BOOLEAN flag;
203     } pre, post;
204   } scl;
205   SDRMODE mode;
206   long tick;
207   REAL norm;
208 } tx;
209
210 //------------------------------------------------------------------------
211
212 typedef enum _runmode {
213   RUN_MUTE, RUN_PASS, RUN_PLAY, RUN_SWCH 
214 } RUNMODE;
215
216 extern struct _top {
217   pid_t pid;
218   uid_t uid;
219   
220   struct timeval start_tv;
221
222   BOOLEAN running, verbose;
223   RUNMODE state;
224   
225   // audio io
226   struct {
227     struct {
228       float *l, *r;
229     } buf;
230     struct {
231       unsigned int frames, bytes;
232     } size;
233   } hold;
234   struct {
235     char *path;
236     int fd;
237     FILE *fp;
238     char buff[4096];
239   } parm;
240   
241   struct {
242     char name[256];
243     jack_client_t *client;
244     struct {
245       struct {
246         jack_port_t *l, *r;
247       } i, o;
248     } port;
249     struct {
250       struct {
251         jack_ringbuffer_t *l, *r;
252       } i, o;
253     } ring;
254     jack_nframes_t size;
255     struct {
256       int cb;
257       struct {
258         int i, o;
259       } rb;
260       int xr;
261     } blow;
262   } jack;
263
264   // update io
265   // multiprocessing & synchronization
266   struct {
267     struct {
268       pthread_t id;
269     } trx, upd, mon;
270   } thrd;
271   struct {
272     struct {
273       sem_t sem;
274     } buf, upd, mon;
275   } sync;
276   
277   // TRX switching
278   struct {
279     struct {
280       int want, have;
281     } bfct;
282     struct {
283       TRXMODE next;
284     } trx;
285     struct {
286       RUNMODE last;
287     } run;
288     int fade, tail;
289   } swch;
290 } top;
291
292 #endif