00001 /*************************************************************************** 00002 LOW_compToggleSwitch.h - description 00003 ------------------- 00004 begin : Sun Jan 5 2003 00005 copyright : (C) 2003 by Harald Roelle 00006 email : roelle@informatik.uni-muenchen.de 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU General Public License as published by * 00013 * the Free Software Foundation; either version 2 of the License, or * 00014 * (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00018 #ifndef LOW_COMPTOGGLESWITCH_H 00019 #define LOW_COMPTOGGLESWITCH_H 00020 00021 00022 #include "LOW_compTwinSwitch.h" 00023 00024 00025 /** 00026 @todo Documentation of class. 00027 00028 *@author Harald Roelle 00029 */ 00030 class LOW_compToggleSwitch : public LOW_compTwinSwitch, public LOW_compTwinSwitch::actionReceiver { 00031 00032 //======================================================================================= 00033 public: 00034 00035 //===================================================================================== 00036 // 00037 // exceptions 00038 // 00039 00040 class_DERIVE_FROM_EXCEPTION( compToggleSwitch_error, component_error); 00041 00042 00043 00044 //===================================================================================== 00045 // 00046 // type definitions 00047 // 00048 00049 typedef std::vector<LOW_compToggleSwitch*> compToggleSwitchPtrVec_t; 00050 00051 typedef LOW_compTwinSwitch::actionReceiver actionReceiver; 00052 00053 00054 00055 //===================================================================================== 00056 // 00057 // constructors 00058 // 00059 00060 LOW_compToggleSwitch( const LOW_devDS2406 &inPIODevice, actionReceiver &inActionRcv, 00061 const bool inDetectShortClicks); 00062 00063 virtual ~LOW_compToggleSwitch(); 00064 00065 00066 00067 //======================================================================================= 00068 private: 00069 00070 //===================================================================================== 00071 // 00072 // type definitions 00073 // 00074 00075 typedef enum { noLock_state=0, locked_state} tgSwState_t; 00076 00077 00078 00079 //===================================================================================== 00080 // 00081 // attributes 00082 // 00083 00084 actionReceiver &toggleActionRcv; 00085 tgSwState_t toggleState; 00086 unsigned int lockedSwitch; 00087 00088 00089 //===================================================================================== 00090 // 00091 // methods 00092 // 00093 00094 // implementing action receiver 00095 void switchAction( LOW_compTwinSwitch *inCaller, const unsigned int inSwitchNum, const bool inValue); 00096 00097 // implementing action receiver 00098 void shortSwitchAction( LOW_compTwinSwitch *inCaller, const unsigned int inSwitchNum); 00099 }; 00100 00101 #endif