1 /* $OpenBSD: sunmsvar.h,v 1.1 2009/05/20 18:22:33 miod Exp $ */ 2 3 /* 4 * Copyright (c) 2002, 2009, Miodrag Vallat 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28 struct sunms_softc { 29 struct device sc_dev; 30 31 /* 32 * State of input translator 33 */ 34 uint sc_state; /* current FSM state */ 35 #define STATE_RATE_CHANGE 0 /* baud rate change pending */ 36 #define STATE_PROBING 1 /* checking packets after speed change */ 37 #define STATE_DECODING 2 /* normal operation */ 38 uint sc_brk; /* breaks in a row */ 39 40 int sc_pktlen; /* packet length */ 41 int sc_byteno; /* current packet position */ 42 int sc_mb; /* mouse button state */ 43 int sc_dx; /* delta-x */ 44 int sc_dy; /* delta-y */ 45 46 uint sc_bps; /* current link speed */ 47 struct timeval sc_lastbpschange; 48 49 struct timeout sc_abort_tmo; 50 51 struct device *sc_wsmousedev; 52 53 void (*sc_speed_change)(void *, uint); 54 }; 55 56 #define INIT_SPEED 9600 57 58 void sunms_attach(struct sunms_softc *, const struct wsmouse_accessops *); 59 int sunms_ioctl(void *, u_long, caddr_t, int, struct proc *); 60 61 void sunms_abort_input(void *); 62 void sunms_input(struct sunms_softc *, int c); 63 void sunms_speed_change(struct sunms_softc *); 64