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 194