00001 /* 00002 * Copyright 1997, Brown University, Providence, RI. 00003 * 00004 * All Rights Reserved 00005 * 00006 * Permission to use, copy, modify, and distribute this software and its 00007 * documentation for any purpose other than its incorporation into a 00008 * commercial product is hereby granted without fee, provided that the 00009 * above copyright notice appear in all copies and that both that 00010 * copyright notice and this permission notice appear in supporting 00011 * documentation, and that the name of Brown University not be used in 00012 * advertising or publicity pertaining to distribution of the software 00013 * without specific, written prior permission. 00014 * 00015 * BROWN UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 00016 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ANY 00017 * PARTICULAR PURPOSE. IN NO EVENT SHALL BROWN UNIVERSITY BE LIABLE FOR 00018 * ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 00019 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 00020 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 00021 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 00022 */ 00023 00024 #ifndef FLEX_H 00025 #define FLEX_H 00026 00027 #include "tty/tty.H" 00028 #include "dev/discrete_contact.H" 00029 00030 00031 #define MAX_CONTACTS_AT_ONCE 32 00032 00033 class DEVflex : public DEVdiscrete_contact, public TTYfd 00034 { 00035 protected: 00036 str_ptr _serialport; 00037 int _baud; 00038 00039 unsigned char c1table[256]; 00040 unsigned char c2table[256]; 00041 00042 00043 unsigned char _downBut[MAX_CONTACTS_AT_ONCE]; 00044 unsigned char _moveBut[MAX_CONTACTS_AT_ONCE]; 00045 unsigned char _upBut[MAX_CONTACTS_AT_ONCE]; 00046 int _numDown; 00047 int _numMove; 00048 int _numUp; 00049 00050 enum op {up = 0, down, strange}; 00051 op _operation; 00052 00053 public: 00054 virtual ~DEVflex() {} 00055 DEVflex(Cstr_ptr &devname); 00056 00057 virtual bool activate(); 00058 virtual bool deactivate(); 00059 virtual void sample(); 00060 }; 00061 00062 #endif