00001 #ifndef FCAM_F2_SHUTTERBUTTON_CPP
00002 #define FCAM_F2_SHUTTERBUTTON_CPP
00003
00004 #include "ShutterButton.h"
00005
00006 namespace FCam {
00007 namespace F2 {
00008 ShutterButton::ShutterButton(int halfPress, int fullPress) : PhidgetDevice(){
00009 halfPressIndex = halfPress;
00010 fullPressIndex = fullPress;
00011 PhidgetDevice::registerInputChangeHandler(halfPressIndex, this);
00012 PhidgetDevice::registerInputChangeHandler(fullPressIndex, this);
00013 }
00014
00015 int ShutterButton::handleInputChange(CPhidgetInterfaceKitHandle interfaceKit, int index, int state){
00016 printf("handle input change for shutter button called.\n");
00017 if (index == halfPressIndex) {
00018 return halfPressHandler(interfaceKit, index, state);
00019 }
00020 if (index == fullPressIndex) {
00021 return fullPressHandler(interfaceKit, index, state);
00022 }
00023 return 0;
00024 }
00025
00026 int ShutterButton::halfPressHandler(CPhidgetInterfaceKitHandle interfaceKit, int index, int state){
00027 if (index == halfPressIndex) {
00028 Event event;
00029 event.time = Time::now();
00030 event.iData = 0;
00031 event.creator = this;
00032 switch(state) {
00033 case true:
00034 event.type = Event::FocusPressed;
00035 break;
00036 case false:
00037 default:
00038 event.type = Event::FocusReleased;
00039 break;
00040 }
00041 postEvent(event);
00042 }
00043 return 0;
00044 }
00045 int ShutterButton::fullPressHandler(CPhidgetInterfaceKitHandle interfaceKit, int index, int state){
00046 if (index == fullPressIndex) {
00047 Event event;
00048 event.time = Time::now();
00049 event.iData = 0;
00050 event.creator = this;
00051 switch(state) {
00052 case true:
00053 event.type = Event::ShutterPressed;
00054 break;
00055 case false:
00056 default:
00057 event.type = Event::ShutterReleased;
00058 break;
00059 }
00060 printf("Posting full press\n");
00061 postEvent(event);
00062 }
00063 return 0;
00064 }
00065
00066 std::string ShutterButton::getEventString(const Event & event) const {
00067 switch (event.type) {
00068 case Event::FocusPressed:
00069 return std::string("Shutter button half-depressed.");
00070 break;
00071 case Event::FocusReleased:
00072 return std::string("Shutter button fully released.");
00073 break;
00074 case Event::ShutterPressed:
00075 return std::string("Shutter button fully depressed.");
00076 break;
00077 case Event::ShutterReleased:
00078 return std::string("Shutter button half-released.");
00079 break;
00080 default:
00081 return std::string("Unknown event type for ShutterButton device.");
00082 break;
00083
00084 }
00085 }
00086 }
00087 }
00088
00089
00090
00091 #endif