Annotation of tme/serial/serial-kb.h, revision 1.1.1.2

1.1.1.2 ! root        1: /* $Id: serial-kb.h,v 1.3 2006/09/30 12:35:01 fredette Exp $ */
1.1       root        2: 
                      3: /* serial/serial-kb.h - implementation header file for serial keyboard
                      4:    emulation: */
                      5: 
                      6: /*
                      7:  * Copyright (c) 2003 Matt Fredette
                      8:  * All rights reserved.
                      9:  *
                     10:  * Redistribution and use in source and binary forms, with or without
                     11:  * modification, are permitted provided that the following conditions
                     12:  * are met:
                     13:  * 1. Redistributions of source code must retain the above copyright
                     14:  *    notice, this list of conditions and the following disclaimer.
                     15:  * 2. Redistributions in binary form must reproduce the above copyright
                     16:  *    notice, this list of conditions and the following disclaimer in the
                     17:  *    documentation and/or other materials provided with the distribution.
                     18:  * 3. All advertising materials mentioning features or use of this software
                     19:  *    must display the following acknowledgement:
                     20:  *      This product includes software developed by Matt Fredette.
                     21:  * 4. The name of the author may not be used to endorse or promote products
                     22:  *    derived from this software without specific prior written permission.
                     23:  *
                     24:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     25:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
                     26:  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
                     27:  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
                     28:  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
                     29:  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
                     30:  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     31:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
                     32:  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
                     33:  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     34:  * POSSIBILITY OF SUCH DAMAGE.
                     35:  */
                     36: 
                     37: #ifndef _SERIAL_SERIAL_KB_H
                     38: #define _SERIAL_SERIAL_KB_H
                     39: 
                     40: #include <tme/common.h>
1.1.1.2 ! root       41: _TME_RCSID("$Id: serial-kb.h,v 1.3 2006/09/30 12:35:01 fredette Exp $");
1.1       root       42: 
                     43: /* includes: */
                     44: #include <tme/generic/keyboard.h>
                     45: #include <tme/generic/serial.h>
                     46: #include <tme/element.h>
1.1.1.2 ! root       47: #include <tme/threads.h>
1.1       root       48: 
                     49: /* macros: */
                     50: 
                     51: /* the callout flags: */
                     52: #define TME_SERIAL_KB_CALLOUT_CHECK            (0)
                     53: #define TME_SERIAL_KB_CALLOUT_RUNNING          TME_BIT(0)
                     54: #define TME_SERIAL_KB_CALLOUTS_MASK            (-2)
                     55: #define  TME_SERIAL_KB_CALLOUT_SERIAL_CTRL     TME_BIT(1)
                     56: #define  TME_SERIAL_KB_CALLOUT_SERIAL_CONFIG   TME_BIT(2)
                     57: #define  TME_SERIAL_KB_CALLOUT_SERIAL_READ     TME_BIT(3)
                     58: #define  TME_SERIAL_KB_CALLOUT_KEYBOARD_CTRL   TME_BIT(4)
                     59: #define  TME_SERIAL_KB_CALLOUT_KEYBOARD_READ   TME_BIT(5)
                     60: 
                     61: /* types: */
                     62: 
                     63: /* a serial keyboard: */
                     64: struct tme_serial_kb {
                     65: 
                     66:   /* backpointer to our element: */
                     67:   struct tme_element *tme_serial_kb_element;
                     68: 
                     69:   /* our mutex: */
                     70:   tme_mutex_t tme_serial_kb_mutex;
                     71: 
                     72:   /* our type: */
                     73:   _tme_const char *tme_serial_kb_type;
                     74: 
                     75:   /* our type-specific state: */
                     76:   void *tme_serial_kb_type_state;
                     77: 
                     78:   /* our type-specific pre-map-adding function: */
                     79:   int (*tme_serial_kb_type_map_add_pre) _TME_P((struct tme_serial_kb *,
                     80:                                                struct tme_keyboard_map *));
                     81: 
                     82:   /* our type-specific post-map-adding function: */
                     83:   int (*tme_serial_kb_type_map_add_post) _TME_P((struct tme_serial_kb *,
                     84:                                                 _tme_const struct tme_keyboard_map *));
                     85: 
                     86:   /* our type-specific event function: */
                     87:   tme_uint8_t (*tme_serial_kb_type_event) _TME_P((struct tme_serial_kb *,
                     88:                                                  _tme_const struct tme_keyboard_event *));
                     89: 
                     90:   /* our type-specific serial control function: */
                     91:   int (*tme_serial_kb_type_serial_ctrl) _TME_P((struct tme_serial_kb *,
                     92:                                                unsigned int));
                     93: 
                     94:   /* our type-specific serial input function: */
                     95:   int (*tme_serial_kb_type_serial_input) _TME_P((struct tme_serial_kb *,
                     96:                                                 tme_uint8_t *,
                     97:                                                 unsigned int,
                     98:                                                 tme_serial_data_flags_t));
                     99: 
                    100:   /* our type-specific serial configuration: */
                    101:   struct tme_serial_config tme_serial_kb_type_config;
                    102: 
                    103:   /* our stored macros: */
                    104:   char **tme_serial_kb_macros;
                    105: 
                    106:   /* our stored map entries: */
                    107:   char **tme_serial_kb_map;
                    108: 
                    109:   /* our keyboard connection: */
                    110:   struct tme_keyboard_connection *tme_serial_kb_connection_kb;
                    111: 
                    112:   /* our serial connection: */
                    113:   struct tme_serial_connection *tme_serial_kb_connection_serial;
                    114: 
                    115:   /* the callout flags: */
                    116:   int tme_serial_kb_callout_flags;
                    117: 
                    118:   /* our keyboard buffer: */
                    119:   struct tme_keyboard_buffer *tme_serial_kb_keyboard_buffer;
                    120: 
                    121:   /* our serial output buffer: */
                    122:   struct tme_serial_buffer tme_serial_kb_serial_buffer;
                    123: 
                    124:   /* our current keyboard control outputs: */
                    125:   unsigned int tme_serial_kb_keyboard_ctrl;
                    126: 
                    127:   /* our current serial control outputs: */
                    128:   unsigned int tme_serial_kb_serial_ctrl;
                    129: 
                    130:   /* when nonzero, the rate-limiting sleep time, in microseconds: */
                    131:   unsigned long tme_serial_kb_rate_sleep;
                    132: 
                    133:   /* when nonzero, rate-limiting is active: */
                    134:   int tme_serial_kb_rate_limited;
                    135: 
                    136:   /* when nonzero, rate-limiting is active and sleeping: */
                    137:   int tme_serial_kb_rate_sleeping;
                    138: 
                    139:   /* our rate-limiting thread condition: */
                    140:   tme_cond_t tme_serial_kb_rate_cond;
                    141: };
                    142: 
                    143: /* prototypes: */
                    144: int _tme_serial_kb_sun_init _TME_P((struct tme_serial_kb *));
                    145: 
                    146: #endif /* !_SERIAL_SERIAL_KB_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.