1
2 #ifndef SPEAKUP_TYPES_H
3 #define SPEAKUP_TYPES_H
4
5
6
7 #include <linux/types.h>
8 #include <linux/fs.h>
9 #include <linux/errno.h>
10 #include <linux/delay.h>
11 #include <linux/wait.h>
12 #include <linux/init.h>
13 #include <linux/module.h>
14 #include <linux/vt_kern.h>
15 #include <linux/spinlock.h>
16 #include <linux/mutex.h>
17 #include <linux/io.h>
18 #include <linux/device.h>
19
20 enum var_type_t {
21 VAR_NUM = 0,
22 VAR_TIME,
23 VAR_STRING,
24 VAR_PROC
25 };
26
27 enum {
28 E_DEFAULT = 0,
29 E_SET,
30 E_INC,
31 E_DEC,
32 E_NEW_DEFAULT,
33 };
34
35 enum var_id_t {
36 VERSION = 0, SYNTH, SILENT, SYNTH_DIRECT,
37 KEYMAP, CHARS,
38 PUNC_SOME, PUNC_MOST, PUNC_ALL,
39 DELIM, REPEATS, EXNUMBER,
40 DELAY, TRIGGER, JIFFY, FULL,
41 BLEEP_TIME, CURSOR_TIME, BELL_POS,
42 SAY_CONTROL, SAY_WORD_CTL, NO_INTERRUPT, KEY_ECHO,
43 SPELL_DELAY, PUNC_LEVEL, READING_PUNC,
44 ATTRIB_BLEEP, BLEEPS,
45 RATE, PITCH, VOL, TONE, PUNCT, VOICE, FREQUENCY, LANG, DIRECT, PAUSE,
46 CAPS_START, CAPS_STOP, CHARTAB,
47 MAXVARS
48 };
49
50 typedef int (*special_func)(struct vc_data *vc, u_char type, u_char ch,
51 u_short key);
52
53 #define COLOR_BUFFER_SIZE 160
54
55 struct spk_highlight_color_track {
56
57 unsigned int bgcount[8];
58
59 u16 highbuf[8][COLOR_BUFFER_SIZE];
60
61 unsigned int highsize[8];
62
63 u_long rpos[8], rx[8], ry[8];
64
65 ulong cy;
66 };
67
68 struct st_spk_t {
69 u_long reading_x, cursor_x;
70 u_long reading_y, cursor_y;
71 u_long reading_pos, cursor_pos;
72 u_long go_x, go_pos;
73 u_long w_top, w_bottom, w_left, w_right;
74 u_char w_start, w_enabled;
75 u_char reading_attr, old_attr;
76 char parked, shut_up;
77 struct spk_highlight_color_track ht;
78 int tty_stopped;
79 };
80
81
82 #define spk_shut_up (speakup_console[vc->vc_num]->shut_up)
83 #define spk_killed (speakup_console[vc->vc_num]->shut_up & 0x40)
84 #define spk_x (speakup_console[vc->vc_num]->reading_x)
85 #define spk_cx (speakup_console[vc->vc_num]->cursor_x)
86 #define spk_y (speakup_console[vc->vc_num]->reading_y)
87 #define spk_cy (speakup_console[vc->vc_num]->cursor_y)
88 #define spk_pos (speakup_console[vc->vc_num]->reading_pos)
89 #define spk_cp (speakup_console[vc->vc_num]->cursor_pos)
90 #define goto_pos (speakup_console[vc->vc_num]->go_pos)
91 #define goto_x (speakup_console[vc->vc_num]->go_x)
92 #define win_top (speakup_console[vc->vc_num]->w_top)
93 #define win_bottom (speakup_console[vc->vc_num]->w_bottom)
94 #define win_left (speakup_console[vc->vc_num]->w_left)
95 #define win_right (speakup_console[vc->vc_num]->w_right)
96 #define win_start (speakup_console[vc->vc_num]->w_start)
97 #define win_enabled (speakup_console[vc->vc_num]->w_enabled)
98 #define spk_attr (speakup_console[vc->vc_num]->reading_attr)
99 #define spk_old_attr (speakup_console[vc->vc_num]->old_attr)
100 #define spk_parked (speakup_console[vc->vc_num]->parked)
101
102 struct st_var_header {
103 char *name;
104 enum var_id_t var_id;
105 enum var_type_t var_type;
106 void *p_val;
107 void *data;
108 };
109
110 struct num_var_t {
111 char *synth_fmt;
112 int default_val;
113 int low;
114 int high;
115 short offset, multiplier;
116 char *out_str;
117 int value;
118 };
119
120 struct punc_var_t {
121 enum var_id_t var_id;
122 short value;
123 };
124
125 struct string_var_t {
126 char *default_val;
127 };
128
129 struct var_t {
130 enum var_id_t var_id;
131 union {
132 struct num_var_t n;
133 struct string_var_t s;
134 } u;
135 };
136
137 struct st_bits_data {
138 char *name;
139 char *value;
140 short mask;
141 };
142
143 struct synth_indexing {
144 char *command;
145 unsigned char lowindex;
146 unsigned char highindex;
147 unsigned char currindex;
148 };
149
150 struct spk_synth;
151
152 struct spk_io_ops {
153 int (*synth_out)(struct spk_synth *synth, const char ch);
154 int (*synth_out_unicode)(struct spk_synth *synth, u16 ch);
155 void (*send_xchar)(char ch);
156 void (*tiocmset)(unsigned int set, unsigned int clear);
157 unsigned char (*synth_in)(void);
158 unsigned char (*synth_in_nowait)(void);
159 void (*flush_buffer)(void);
160 };
161
162 struct spk_synth {
163 struct list_head node;
164
165 const char *name;
166 const char *version;
167 const char *long_name;
168 const char *init;
169 char procspeech;
170 char clear;
171 int delay;
172 int trigger;
173 int jiffies;
174 int full;
175 int ser;
176 char *dev_name;
177 short flags;
178 short startup;
179 const int checkval;
180 struct var_t *vars;
181 int *default_pitch;
182 int *default_vol;
183 struct spk_io_ops *io_ops;
184 int (*probe)(struct spk_synth *synth);
185 void (*release)(void);
186 const char *(*synth_immediate)(struct spk_synth *synth,
187 const char *buff);
188 void (*catch_up)(struct spk_synth *synth);
189 void (*flush)(struct spk_synth *synth);
190 int (*is_alive)(struct spk_synth *synth);
191 int (*synth_adjust)(struct st_var_header *var);
192 void (*read_buff_add)(u_char);
193 unsigned char (*get_index)(struct spk_synth *synth);
194 struct synth_indexing indexing;
195 int alive;
196 struct attribute_group attributes;
197 };
198
199
200
201
202
203
204
205
206 #define module_spk_synth(__spk_synth) \
207 module_driver(__spk_synth, synth_add, synth_remove)
208
209 struct speakup_info_t {
210 spinlock_t spinlock;
211 int port_tts;
212 int flushing;
213 };
214
215 struct bleep {
216 short freq;
217 unsigned long jiffies;
218 int active;
219 };
220 #endif