Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[pandora-kernel.git] / drivers / staging / speakup / spk_types.h
1 #ifndef SPEAKUP_TYPES_H
2 #define SPEAKUP_TYPES_H
3
4 /*
5  * This file includes all of the typedefs and structs used in speakup.
6  */
7
8 #include <linux/types.h>
9 #include <linux/fs.h>
10 #include <linux/errno.h>
11 #include <linux/delay.h>
12 #include <linux/wait.h>         /* for wait_queue */
13 #include <linux/init.h> /* for __init */
14 #include <linux/module.h>
15 #include <linux/vt_kern.h>
16 #include <linux/spinlock.h>
17 #include <linux/mutex.h>
18 #include <linux/io.h>           /* for inb_p, outb_p, inb, outb, etc... */
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, /* all timers must be together */
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,
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         /* Count of each background color */
57         unsigned int bgcount[8];
58         /* Buffer for characters drawn with each background color */
59         char highbuf[8][COLOR_BUFFER_SIZE];
60         /* Current index into highbuf */
61         unsigned int highsize[8];
62         /* Reading Position for each color */
63         u_long rpos[8], rx[8], ry[8];
64         /* Real Cursor Y Position */
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 /* now some defines to make these easier to use. */
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; /* ptr to programs variable to store value */
107         void *data; /* ptr to the vars 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; /* for fiddling rates etc. */
116         char *out_str; /* if synth needs char representation of number */
117         int value; /* current 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 { /* punc, repeats, word delim bits */
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         const char *name;
152         const char *version;
153         const char *long_name;
154         const char *init;
155         char procspeech;
156         char clear;
157         int delay;
158         int trigger;
159         int jiffies;
160         int full;
161         int ser;
162         short flags;
163         short startup;
164         const int checkval; /* for validating a proper synth module */
165         struct var_t *vars;
166         int *default_pitch;
167         int *default_vol;
168         int (*probe)(struct spk_synth *synth);
169         void (*release)(void);
170         const char *(*synth_immediate)(struct spk_synth *synth, const char *buff);
171         void (*catch_up)(struct spk_synth *synth);
172         void (*flush)(struct spk_synth *synth);
173         int (*is_alive)(struct spk_synth *synth);
174         int (*synth_adjust)(struct st_var_header *var);
175         void (*read_buff_add)(u_char);
176         unsigned char (*get_index)(void);
177         struct synth_indexing indexing;
178         int alive;
179         struct attribute_group attributes;
180 };
181
182 struct speakup_info_t {
183         spinlock_t spinlock;
184         int port_tts;
185         int flushing;
186 };
187
188 struct bleep {
189         short freq;
190         unsigned long jiffies;
191         int active;
192 };
193 #endif