2
ACfax - Fax reception with X11-interface for amateur radio
3
Copyright (C) 1995-1998 Andreas Czechanowski, DL4SDC
5
This program is free software; you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation; either version 2 of the License, or
8
(at your option) any later version.
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
GNU General Public License for more details.
15
You should have received a copy of the GNU General Public License
16
along with this program; if not, write to the Free Software Foundation,
17
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
andreas.czechanowski@ins.uni-stuttgart.de
23
* fax_funcs.h : function declarations and external variable declarations
24
* for all fax-related computing
27
/* This is the size of the internal raw image storage. Adjust it so that
28
the largest picture to expect can fit into memory (4000 * time_in_sec) */
29
#define CORESIZE (4560 << 10)
30
#define COREMAX (CORESIZE - 1)
32
/* set this to pre-define a directory for saving fax-pictures */
33
#define FAX_SAVEDIR "."
34
/* #define FAX_SAVEDIR "/usr/local/faxsave" */
36
/* define this if you run on 8-bit X-displays only, it can speed up the
37
image-redrawing by replacing XPutPixel by direct access to memory : */
38
/* #define FAST8BIT */
45
/* decoding function: initialisation types (see fax_funcs.c) */
46
#define D_CPINIT 0x00000001
47
#define D_WDINIT 0x00000002
48
#define D_LDINIT 0x00000004
49
#define D_INITS 0x00000007
50
#define D_ALLOWX 0x00000008
51
#define D_FLUSHIMG 0x00000010
53
/* inverting of color- or grayscale-map, color-flip and rotation possibilities */
54
#define FAX_CNOR 0x00000001
55
#define FAX_CINV 0x00000002
56
#define FAX_POL 0x00000003
58
#define FAX_CUNFL 0x00000004
59
#define FAX_CFLIP 0x00000008
60
#define FAX_CFLS 0x0000000c
62
#define FAX_CROT0 0x00000010
63
#define FAX_CROT1 0x00000020
64
#define FAX_CROT2 0x00000030
65
#define FAX_CROTS 0x00000030
66
#define FAX_CMODS (FAX_CROTS | FAX_CFLS | FAX_POL)
68
/* writing directions for the FAX transmission and reception */
69
#define FAX_DIR 0x00000f00
70
#define FAX_TOP2BOT 0x00000100
71
#define FAX_BOT2TOP 0x00000200
72
#define FAX_LEF2RIG 0x00000400
73
#define FAX_RIG2LEF 0x00000800
75
/* direction order / line direction */
76
#define FAX_ROT 0x00003000
77
#define FAX_HOR 0x00001000
78
#define FAX_VER 0x00002000
80
/* phase-signal polarity */
81
#define FAX_PHS 0x0000c000
82
#define FAX_PWHT 0x00004000
83
#define FAX_PBLK 0x00008000
85
/* color mode definitions */
86
#define FAX_CMODE 0x000f0000
87
#define FAX_GRAY 0x00010000
88
#define FAX_COLOR 0x00020000
90
/* fax receiver/transmitter status flag */
99
/* fax file-save opearations */
100
#define F_DOSAVE 0 /* save image with captured parameters & close */
101
#define F_OPEN 1 /* open new savefile, write header */
102
#define F_CLOSE 2 /* close savefile, correct header */
103
#define F_GETDIM 3 /* capture current parameters for saving */
104
/* fax file-save return values */
109
/* fax apt-transmit initialisation commands */
110
#define APTX_ISTART 1
113
struct fax_savestruct {
120
* NOTE : these variables are made global for read-only purposes !
121
* to change any of these, use setup_fax().
123
extern int lpm; /* current lines-per-minute */
124
extern int ixoc; /* current index-of-cooperation */
125
extern int devi; /* current selected deviation (for FM) */
126
extern int mod_mode; /* current filter and mod.mode (see mod_demod.h) */
127
extern int vertical; /* writing direction order vertical first */
128
extern int right2left; /* writing direction horizontal */
129
extern int bot2top; /* writing direction vertical */
130
extern int invphase; /* inverse phase detection */
131
extern int invimage; /* inverse image display */
133
* these may be changed directly :
135
extern int aptstart; /* current APT start frequency */
136
extern int aptstop; /* current APT stop frequency */
138
extern void (*update_area)(XImage *, int, int, int, int, unsigned, unsigned);
139
extern void (*mode_notify)(int);
144
void setup_fax(int, int, unsigned,
145
Widget, unsigned, unsigned,
147
void receive_on(void);
148
void receive_off(void);
150
void fax_rx_backgnd(XtPointer, int *, XtInputId *);
152
void fax_rx_backgnd(XtPointer, XtIntervalId *);
154
void decode_fax_gray(int);
155
int save_faxfile(char *, int);
156
void close_faxsave(void);
157
int save_fax_gray(int, int);
158
void faxsave_complete(int);
159
void sync_phase(int);
160
void decode_apt(int);
161
void apt_control(int);
162
void fax_rx_start(int);
163
void fax_rx_phase(int);
164
void fax_rx_stop(int);
165
void shift_fax_coords(unsigned, unsigned);
166
void correct_fax_azimut(int, int);
168
void fax_tx_stop(int);
169
void fax_tx_start(int);
170
void fax_tx_apta(int);
171
void fax_tx_aptb(int);
172
void fax_tx_phase(int);
173
int load_txfile(char *name);
175
void fax_tx_backgnd(XtPointer client_data, int *, XtInputId *xid);
177
void fax_tx_backgnd(XtPointer client_data, XtIntervalId *xid);
179
void transmit_fax_gray(int init);
180
void transmit_apt(int init);
181
void transmit_phase(int init);