Annotation of Gnu-Mach/chips/dtop.h, revision 1.1

1.1     ! root        1: /* 
        !             2:  * Mach Operating System
        !             3:  * Copyright (c) 1992 Carnegie Mellon University
        !             4:  * All Rights Reserved.
        !             5:  * 
        !             6:  * Permission to use, copy, modify and distribute this software and its
        !             7:  * documentation is hereby granted, provided that both the copyright
        !             8:  * notice and this permission notice appear in all copies of the
        !             9:  * software, derivative works or modified versions, and any portions
        !            10:  * thereof, and that both notices appear in supporting documentation.
        !            11:  * 
        !            12:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
        !            13:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
        !            14:  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
        !            15:  * 
        !            16:  * Carnegie Mellon requests users of this software to return to
        !            17:  * 
        !            18:  *  Software Distribution Coordinator  or  [email protected]
        !            19:  *  School of Computer Science
        !            20:  *  Carnegie Mellon University
        !            21:  *  Pittsburgh PA 15213-3890
        !            22:  * 
        !            23:  * any improvements or extensions that they make and grant Carnegie Mellon
        !            24:  * the rights to redistribute these changes.
        !            25:  */
        !            26: /*
        !            27:  *     File: dtop.h
        !            28:  *     Author: Alessandro Forin, Carnegie Mellon University
        !            29:  *     Date:   1/92
        !            30:  *
        !            31:  *     Definitions for the Desktop serial bus (i2c aka ACCESS).
        !            32:  */
        !            33: 
        !            34: #ifndef        _DTOP_H_
        !            35: #define        _DTOP_H_
        !            36: 
        !            37: #define        DTOP_MAX_DEVICES        14
        !            38: #define        DTOP_MAX_MSG_SIZE       36      /* 3 hdr + 32 data + 1 checksum */
        !            39: 
        !            40: typedef struct {
        !            41: 
        !            42:        unsigned char   dest_address;   /* low bit is zero */
        !            43:        unsigned char   src_address;    /* ditto */
        !            44:        union {
        !            45:            struct {
        !            46:                unsigned char   len : 5, /* message byte len */
        !            47:                                sub : 2, /* sub-address */
        !            48:                                P : 1;   /* Control(1)/Data(0) marker */
        !            49:            } val;
        !            50:            unsigned char       bits;   /* quick check */
        !            51:        } code;
        !            52: 
        !            53:        /* varzise, checksum byte at end */
        !            54:        unsigned char   body[DTOP_MAX_MSG_SIZE-3];
        !            55: 
        !            56: } dtop_message, *dtop_message_t;
        !            57: 
        !            58: /*
        !            59:  * Standard addresses
        !            60:  */
        !            61: 
        !            62: #define        DTOP_ADDR_HOST          0x50    /* address for the (only) host */
        !            63: #define        DTOP_ADDR_DEFAULT       0x6e    /* power-up default address */
        !            64: #define        DTOP_ADDR_FIRST         0x52    /* first assignable address */
        !            65: #define        DTOP_ADDR_LAST          0x6c    /* last, inclusive */
        !            66: 
        !            67: #define DTOP_ADDR_KBD          0x6c    /* as used by DEC */
        !            68: #define DTOP_ADDR_MOUSE                0x6a
        !            69: 
        !            70: /*
        !            71:  * Standard messages
        !            72:  */
        !            73: 
        !            74: /* from host to devices */
        !            75: 
        !            76: #define        DTOP_MSG_RESET          0xf0    /* preceeded by 0x81: P,len 1 */
        !            77: 
        !            78: #define        DTOP_MSG_ID_REQUEST     0xf1    /* preceeded by 0x81: P,len 1 */
        !            79: 
        !            80: #define        DTOP_MSG_ASSIGN_ADDRESS 0xf2    /* preceeded by 0x9e: P,len 30 */
        !            81:                                        /* followed by a dtop_id_reply_t */
        !            82:                                        /* and by the new_IC_address */
        !            83: 
        !            84: #define        DTOP_MSG_CAP_REQUEST    0xf3    /* preceeded by 0x83: P,len 3 */
        !            85:                                        /* followed by a 16 bit u_offset */
        !            86: 
        !            87: #define        DTOP_MSG_APPL_TEST      0xb1    /* preceed by P, sub, len 1 */
        !            88: 
        !            89: /* from devices to host */
        !            90: 
        !            91: #define        DTOP_MSG_ATTENTION      0xe0    /* preceeded by P, len */
        !            92: #      define DTOP_ATN_OK_STATUS       0x00    /* anything else bad */
        !            93:                                        /* followed by 0-30 bytes */
        !            94: 
        !            95: #define        DTOP_MSG_ID_REPLY       0xe1    /* preceeded by P,len (29..32) */
        !            96: 
        !            97: typedef struct {
        !            98:        unsigned char   module_revision[8];     /* ascii, blank padded */
        !            99:        unsigned char   vendor_name[8];
        !           100:        unsigned char   module_name[8];
        !           101:        int             device_number;  /* 32 bits cpl-2 */
        !           102:        /* 0-3 optional bytes follow, ignore */
        !           103: } dtop_id_reply_t;
        !           104: 
        !           105: #define        DTOP_MSG_CAP_REPLY      0xe3    /* preceeded by P,len (3..32) */
        !           106:                                        /* followed by 16 bit u_offset */
        !           107:                                        /* followed by data */
        !           108: 
        !           109: #define        DTOP_MSG_APPL_SIGNAL    0xa0    /* application level signal */
        !           110: #      define DTOP_SIG_ATTENTION       0x00
        !           111: #      define DTOP_SIG_RESET           0x01
        !           112: #      define DTOP_SIG_HALT            0x02
        !           113: 
        !           114: #define        DTOP_MSG_APPL_TREPLY    0xa1    /* followed by status (0-->ok) */
        !           115:                                        /* and 0..30 bytes of result data  */
        !           116: 
        !           117: /* reserved message codes (testing, manifacturing) */
        !           118: 
        !           119: #define        DTOP_MSG_RES0           0xc0
        !           120: #define        DTOP_MSG_RES1           0xc1
        !           121: #define        DTOP_MSG_RES2           0xc2
        !           122: #define        DTOP_MSG_RES3           0xc3
        !           123: 
        !           124: 
        !           125: /*
        !           126:  *     Device specific definitions:  Keyboard
        !           127:  */
        !           128: 
        !           129: /* from host to keyboard */
        !           130: 
        !           131: #define        DTOP_KMSG_CLICK         0x01    /* preceeded by P, sub len 2 */
        !           132: #      define  DTOP_CLICK_VOLUME_MAX   0x7     /* followed by one byte */
        !           133: 
        !           134: #define        DTOP_KMSG_BELL          0x02    /* preceeded by P, sub len 2 */
        !           135:                                        /* same as above */
        !           136: 
        !           137: #define        DTOP_KMSG_LED           0x03    /* preceeded by P, sub len 2 */
        !           138:                                        /* four lower bits turn leds on */
        !           139: 
        !           140: #define        DTOP_KMSG_POLL          0x04    /* preceeded by P, sub len 1 */
        !           141: 
        !           142: /* keyboard sends up to 11 codes in a data message, distinguished values: */
        !           143: #define        DTOP_KBD_EMPTY          0x00
        !           144: #define        DTOP_KBD_OUT_ERR        0x01
        !           145: #define        DTOP_KBD_IN_ERR         0x02
        !           146: 
        !           147: #define        DTOP_KBD_KEY_MIN        0x08
        !           148: #define        DTOP_KBD_KEY_MAX        0xff
        !           149: 
        !           150: /* powerup status values: 0 ok, else.. */
        !           151: #define        DTOP_KBD_ROM_FAIL       0x01
        !           152: #define        DTOP_KBD_RAM_FAIL       0x02
        !           153: #define        DTOP_KBD_KEY_DOWN       0x03
        !           154: 
        !           155: 
        !           156: /*
        !           157:  *     Device specific definitions:  Locators (mouse)
        !           158:  */
        !           159: 
        !           160: /* locator sends this type of report data */
        !           161: 
        !           162: typedef struct {
        !           163:        unsigned short  buttons;        /* 1->pressed */
        !           164:        short           x;
        !           165:        short           y;
        !           166:        short           z;
        !           167:        /* possibly 3 more dimensions for gloves */
        !           168: } dtop_locator_msg_t;
        !           169: 
        !           170: #define        DTOP_LMSG_SET_RATE      0x01    /* preceeded by P,sub, len 2 */
        !           171:                                        /* followed by sampling interval,
        !           172:                                           from 8 to 25 msecs (0->polled */
        !           173: 
        !           174: #define        DTOP_LMSG_POLL          0x02    /* preceeded by P,sub, len 1 */
        !           175: 
        !           176: /* Powerup codes same as keyboard */
        !           177: 
        !           178: 
        !           179: /*
        !           180:  * Implementation specific definitions
        !           181:  */
        !           182: 
        !           183: typedef        union {
        !           184: 
        !           185:        dtop_message    unknown_report;
        !           186: 
        !           187:        struct {
        !           188:                char            last_codes_count;
        !           189:                unsigned char   last_codes[11]; /* max as per specs */
        !           190:                unsigned int    last_msec;      /* autorepeat state */
        !           191:                unsigned short  poll_frequency;
        !           192:                unsigned char   k_ar_state;
        !           193: #              define          K_AR_IDLE       0       /* quiescent, no polling */
        !           194: #              define          K_AR_OFF        4       /* turn off polling pls */
        !           195: #              define          K_AR_ACTIVE     2       /* polling, no autos yet */
        !           196: #              define          K_AR_TRIGGER    1       /* sent one autorepeat */
        !           197:                unsigned char   bell_volume;
        !           198:                unsigned char   led_status;
        !           199:        } keyboard;
        !           200: 
        !           201:        struct {
        !           202:                unsigned char   type : 7, /* DEV_MOUSE, DEV_TABLET, .. */
        !           203:                                relative : 1;
        !           204:                unsigned char   n_coords;
        !           205:                unsigned short  prev_buttons;
        !           206: #              define          L_BUTTON_MAX    16
        !           207:                unsigned char   button_code[L_BUTTON_MAX];
        !           208: #              define          L_COORD_MAX     6
        !           209:                unsigned int    coordinate[L_COORD_MAX];        /* max 6D */
        !           210:        } locator;
        !           211: 
        !           212:        /* add more as they come along */
        !           213: 
        !           214: } dtop_device, *dtop_device_t;
        !           215: 
        !           216: /* All handler functions should have this interface */
        !           217: extern int
        !           218:        dtop_null_device_handler(
        !           219:                                 dtop_device_t  dev,
        !           220:                                 dtop_message_t msg,
        !           221:                                 int            event,
        !           222:                                 unsigned char  outc),
        !           223:        dtop_locator_handler(
        !           224:                                 dtop_device_t  dev,
        !           225:                                 dtop_message_t msg,
        !           226:                                 int            event,
        !           227:                                 unsigned char  outc),
        !           228:        dtop_keyboard_handler(
        !           229:                                 dtop_device_t  dev,
        !           230:                                 dtop_message_t msg,
        !           231:                                 int            event,
        !           232:                                 unsigned char  outc);
        !           233: 
        !           234: 
        !           235: #define        DTOP_EVENT_RECEIVE_PACKET       1
        !           236: #define        DTOP_EVENT_BAD_PACKET           2
        !           237: #define        DTOP_EVENT_PUTC                 4
        !           238: #define        DTOP_EVENT_POLL                 8
        !           239: 
        !           240: 
        !           241: #endif /* _DTOP_H_ */

unix.superglobalmegacorp.com

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