⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 l2task.cpp

📁 一个非常好的人工智能开发工具开源软件
💻 CPP
字号:
/*** *** See the file "L2_RTI_EO1/disclaimers-and-notices-L2.txt" for  *** information on usage and redistribution of this file,  *** and for a DISCLAIMER OF ALL WARRANTIES. ***/#if defined( PRAGMA ) && ! defined( PRAGMA_IMPLEMENTED )#pragma implementation "L2Task.hpp"#endif#include "L2Task.hpp"// ICS:#include <vxWorks.h>#include <msgQLib.h>#include <semLib.h>#include <sysLib.h>#include <taskLib.h>// The Livingstone engine#include <api/livingstone.h>// The RTI#include "ExceptionAction.hpp"#include "Logging.hpp"#include "RTIMessage.hpp"L2Task::L2Task(Livingstone& livingstone) :  d_livingstone(livingstone), d_reporter(livingstone) {}L2Task::~L2Task( void ) {  Logging::log(Logging::L2_DEBUG, "L2:: Sent LOG_EXIT to Log\n");  Logging::log(Logging::LOG_EXIT, "L2:: Sent LOG_EXIT to Log\n");}void L2Task::dequeueRealTimeInput( void ) {  while (true) {    RTIMessage rtiMessage;    if (msgQReceive(RTI_TO_L2_MQID,		    (char*)&rtiMessage,		    sizeof(RTIMessage),		    WAIT_FOREVER) ==	ERROR) {      ExceptionAction::receiveFailure(ExceptionAction::RCV_LIVINGSTONE_DISPATCHER,				      errno);    } else {      // actionLivingstone() returns false on exit      if (!actionLivingstone(rtiMessage)) { return; }    }  }}int L2Task::actionLivingstone(const RTIMessage&					     livingstoneMessage) {  // switch on the function specified, parse arguments accordingly  switch(livingstoneMessage.getOpcode()) {  case COMMAND:    d_livingstone.command(livingstoneMessage.getVariableID(),			  livingstoneMessage.getValueIndex());    break;  case OBSERVATION:    d_livingstone.observe(livingstoneMessage.getVariableID(),			  livingstoneMessage.getValueIndex());        break;  case FIND_CANDIDATES:    d_livingstone.diagnose();    break;  case PROGRESS:    d_livingstone.idle();    break;  case REPORT_FULL_STATE:    d_reporter.reportFullState();    break;  case REPORT_COMMAND:    d_reporter.reportCommand(livingstoneMessage.getTimeStamp().seconds,			     livingstoneMessage.getTimeStamp().nanosec,			     livingstoneMessage.getVariableID(),			     livingstoneMessage.getValueIndex());    break;  case REPORT_OBSERVATION:    d_reporter.reportObservation(livingstoneMessage.getTimeStamp().seconds,				 livingstoneMessage.getTimeStamp().nanosec,				 livingstoneMessage.getVariableID(),				 livingstoneMessage.getValueIndex());    break;  case REPORT_FIND_CANDIDATES:    d_reporter.reportFindCandidates();    break;  case REPORT_DIAGNOSIS:    d_reporter.reportDiagnosis(livingstoneMessage.getTimeStamp().seconds,			       livingstoneMessage.getTimeStamp().nanosec);     break;  case REPORT_PROGRESS:    d_reporter.reportIdle(livingstoneMessage.getTimeStamp().seconds,			  livingstoneMessage.getTimeStamp().nanosec);     break;  case L2_EXIT:    Logging::log(Logging::L2_DEBUG, "L2::Received L2_EXIT\n");    return false; // do not continue running  default:    ExceptionAction::unhandledDispatcherOpcode(livingstoneMessage.getOpcode());    break;  }  return true; // continue running}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -