• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

src/F2/ShutterButton.cpp

00001 #include "FCam/F2/ShutterButton.h"
00002 
00003 #include "PhidgetDevice.h"
00004 #include "../Debug.h"
00005 
00006 namespace FCam { namespace F2 {
00007 
00008     class PhidgetShutterButton: public PhidgetDevice {
00009 
00010     public:
00011         PhidgetShutterButton(int halfPress, int fullPress): 
00012             PhidgetDevice(),
00013             halfPressIndex(halfPress),
00014             fullPressIndex(fullPress)
00015         {
00016 
00017             PhidgetDevice::registerInputChangeHandler(halfPressIndex, this);
00018             PhidgetDevice::registerInputChangeHandler(fullPressIndex, this);    
00019         }
00020 
00021     protected:
00022 
00024         int halfPressHandler(CPhidgetInterfaceKitHandle interfaceKit, int index, int state);
00026         int fullPressHandler(CPhidgetInterfaceKitHandle interfaceKit, int index, int state);
00029         virtual int handleInputChange(CPhidgetInterfaceKitHandle interfaceKit, int index, int state);
00030 
00031     private:
00033         int halfPressIndex; // default indices in the phidgets kit
00035         int fullPressIndex;    
00036 
00037     };
00038 
00039     int PhidgetShutterButton::handleInputChange(CPhidgetInterfaceKitHandle interfaceKit, int index, int state){
00040         printf("handle input change for shutter button called.\n");
00041         if (index == halfPressIndex) {
00042             return halfPressHandler(interfaceKit, index, state);
00043         }
00044         if (index == fullPressIndex) {
00045             return fullPressHandler(interfaceKit, index, state);
00046         }
00047         return 0;
00048     }
00049     
00050     int PhidgetShutterButton::halfPressHandler(CPhidgetInterfaceKitHandle interfaceKit, int index, int state){
00051         if (index == halfPressIndex) {
00052             Event event;
00053             event.time = Time::now();
00054             event.data = 0;
00055             event.creator = this;
00056             switch(state) {
00057             case true:
00058                 event.type = Event::FocusPressed;     
00059                 break;
00060             case false:
00061             default:
00062                 event.type = Event::FocusReleased;
00063                 break;        
00064             }
00065             postEvent(event);
00066         }
00067         return 0;
00068     }
00069     int PhidgetShutterButton::fullPressHandler(CPhidgetInterfaceKitHandle interfaceKit, int index, int state){
00070         if (index == fullPressIndex) {
00071             Event event;
00072             event.time = Time::now();
00073             event.data = 0;
00074             event.creator = this;
00075             switch(state) {
00076             case true:
00077                 event.type = Event::ShutterPressed;   
00078                 break;
00079             case false:
00080             default:
00081                 event.type = Event::ShutterReleased;
00082                 break;        
00083             }
00084             printf("Posting full press\n");
00085             postEvent(event);
00086         }
00087         return 0;
00088     }
00089   
00090     ShutterButton::ShutterButton(int halfPress, int fullPress): impl(NULL) {
00091         impl = new PhidgetShutterButton(halfPress,fullPress);
00092 
00093     }
00094 
00095     ShutterButton::~ShutterButton() {
00096         if (impl) delete impl;
00097     }
00098 
00099     
00100     std::string ShutterButton::getEventString(const Event & event) const {    
00101         switch (event.type) {
00102         case Event::FocusPressed:
00103             return std::string("Shutter button half-depressed.");
00104             break;
00105         case Event::FocusReleased:
00106             return std::string("Shutter button fully released.");
00107             break;
00108         case Event::ShutterPressed:
00109             return std::string("Shutter button fully depressed.");
00110             break;
00111         case Event::ShutterReleased:
00112             return std::string("Shutter button half-released.");
00113             break;
00114         default:
00115             return std::string("Unknown event type for ShutterButton device.");
00116             break;
00117         
00118         }
00119     }
00120 }}
00121 

Generated on Mon Aug 16 2010 14:25:45 for FCam by  doxygen 1.7.1