| Tekkotsu Homepage | Demos | Overview | Downloads | Dev. Resources | Reference | Credits |
GrasperNode.ccGo to the documentation of this file.00001 #include "Shared/RobotInfo.h" 00002 #if (defined(TGT_HAS_ARMS) || !defined(STRICT_TGT_MODEL)) && !defined(TGT_IS_AIBO) 00003 00004 #include "GrasperNode.h" 00005 #include "Crew/Grasper.h" 00006 #include "Events/GrasperEvent.h" 00007 #include "Shared/MarkScope.h" 00008 00009 void GrasperNode::preStart() { 00010 cancelFlag = false; 00011 VisualRoutinesStateNode::preStart(); 00012 } 00013 00014 void GrasperNode::postStart() { 00015 VisualRoutinesStateNode::postStart(); 00016 #ifdef TGT_HAS_ARMS 00017 if ( !cancelFlag ) { 00018 grasper->executeRequest(graspreq,this); 00019 erouter->addListener(this,EventBase::grasperEGID,(size_t)this); 00020 } 00021 #endif 00022 } 00023 00024 void GrasperNode::doEvent() { 00025 // Normally a =GRASP=> event will trigger on any Grasper event, but 00026 // if the user is testing for explicit error codes using =GRASP(t)=> and 00027 // none of the tests succeeds, we want to provide for a default case by 00028 // posting a failure event that can be picked up by =F=> transition. 00029 switch ( event->getGeneratorID() ) { 00030 case EventBase::grasperEGID: { 00031 const GrasperEvent *graspEvent = dynamic_cast<const GrasperEvent*>(event); 00032 if ( graspEvent && graspEvent->getErrorType() != GrasperRequest::noError ) 00033 erouter->addTimer(this,1,1,false); // delay so any =GRASP(t)=> transitions can fire first 00034 break; 00035 } 00036 case EventBase::timerEGID: // delay has expired and nothing else fired; post failure 00037 postStateFailure(); 00038 break; 00039 default: 00040 break; 00041 } 00042 } 00043 00044 void GrasperNode::cancelThisRequest() { 00045 cancelFlag = true; 00046 postStateFailure(); 00047 } 00048 00049 #endif |
|
Tekkotsu v5.1CVS |
Generated Fri Mar 16 05:26:41 2012 by Doxygen 1.6.3 |