SensorAgent.C

00001 /*!@file BeoSub/BeeBrain/SensorAgent.C Sensor Agent superclass         */
00002 // //////////////////////////////////////////////////////////////////// //
00003 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2001 by the //
00004 // University of Southern California (USC) and the iLab at USC.         //
00005 // See http://iLab.usc.edu for information about this project.          //
00006 // //////////////////////////////////////////////////////////////////// //
00007 // Major portions of the iLab Neuromorphic Vision Toolkit are protected //
00008 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency //
00009 // in Visual Environments, and Applications'' by Christof Koch and      //
00010 // Laurent Itti, California Institute of Technology, 2001 (patent       //
00011 // pending; application number 09/912,225 filed July 23, 2001; see      //
00012 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status).     //
00013 // //////////////////////////////////////////////////////////////////// //
00014 // This file is part of the iLab Neuromorphic Vision C++ Toolkit.       //
00015 //                                                                      //
00016 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can   //
00017 // redistribute it and/or modify it under the terms of the GNU General  //
00018 // Public License as published by the Free Software Foundation; either  //
00019 // version 2 of the License, or (at your option) any later version.     //
00020 //                                                                      //
00021 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope  //
00022 // that it will be useful, but WITHOUT ANY WARRANTY; without even the   //
00023 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
00024 // PURPOSE.  See the GNU General Public License for more details.       //
00025 //                                                                      //
00026 // You should have received a copy of the GNU General Public License    //
00027 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write   //
00028 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,   //
00029 // Boston, MA 02111-1307 USA.                                           //
00030 // //////////////////////////////////////////////////////////////////// //
00031 //
00032 // Primary maintainer for this file: Michael Montalbo <montalbo@usc.edu>
00033 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/SeaBee/SensorAgent.C $
00034 // $Id: SensorAgent.C 10794 2009-02-08 06:21:09Z itti $
00035 //
00036 //////////////////////////////////////////////////////////////////////////
00037 
00038 #include "rutz/shared_ptr.h"
00039 #include "Util/log.H"
00040 
00041 #include "SensorAgent.H"
00042 
00043 // ######################################################################
00044 // Constructor
00045 SensorAgent::SensorAgent(rutz::shared_ptr<AgentManager> ama,
00046                          const std::string& name)
00047 { }
00048 
00049 SensorAgent::~SensorAgent()
00050 { }
00051 
00052 // ######################################################################
00053 // Messages
00054 
00055 void SensorAgent::msgSensorUpdate()
00056 {
00057   //stateChanged();
00058 }
00059 
00060 void SensorAgent::msgFindAndTrackObject
00061 (uint sensorResultId,
00062  SensorResult::SensorResultType sensorResultType,
00063  DataType dataType)
00064 {
00065   //stateChanged();
00066   //Create a new Job
00067   Job j = Job();
00068   rutz::shared_ptr<SensorResult> sensorResult(new SensorResult());
00069   sensorResult->setId(sensorResultId);
00070   sensorResult->setType(sensorResultType);
00071   j.sensorResult = sensorResult;
00072   j.dataType = dataType;
00073   j.status = NOT_STARTED;
00074   //Add it to the queue of objects to be looked for
00075   itsJobs.push_back(j);
00076 }
00077 
00078 // ######################################################################
00079 void SensorAgent::msgStopLookingForObject
00080 ( uint sensorResultId,
00081   DataType dataType)
00082 {
00083   //stateChanged();
00084   // Iterate through all the jobs and find the object which is to be ignored
00085   for(itsJobsItr = itsJobs.begin(); itsJobsItr != itsJobs.end(); ++itsJobsItr)
00086   {
00087     rutz::shared_ptr<SensorResult> currentSensorResult = (*itsJobsItr).sensorResult;
00088     DataType currentDataType = (*itsJobsItr).dataType;
00089     Job currentJob = *itsJobsItr;
00090     // When found, set status so as to ignore that job from now on
00091     if(currentSensorResult->getId() == sensorResultId && currentDataType == dataType)
00092     {
00093       currentJob.status = IGNORE;
00094     }
00095   }
00096 }
00097 
00098 // ######################################################################
00099 // Dummy scheduler. Descendent agents implement something meaningful here
00100 // bool SensorAgent::pickAndExecuteAnAction()
00101 // {
00102 //   return false;
00103 // }
00104 
00105 // ######################################################################
00106 // Actions
00107 void SensorAgent::cleanJobs()
00108 {
00109   itsJobsItr = itsJobs.begin();
00110 
00111   while(itsJobsItr != itsJobs.end())
00112   {
00113     Job currentJob = *itsJobsItr;
00114     // If a job is marked as ignore, remove it from the job list
00115     if(currentJob.status == IGNORE)
00116       {
00117         LINFO("Removing Sensor Result: %d from Job list", currentJob.sensorResult->getId());
00118         itsJobsItr = itsJobs.erase(itsJobsItr);
00119       }
00120     else
00121       {
00122         itsJobsItr++;
00123       }
00124   }
00125 }
00126 
00127 // Misc
00128 
00129 // void SensorAgent::setPreFrontalCortex(PreFrontalCortex* c)
00130 // {
00131 //   itsCortex = c;
00132 // }
00133 
00134 // ######################################################################
00135 uint SensorAgent::getNumJobs()
00136 {
00137   return itsJobs.size();
00138 }
00139 
00140 // ######################################################################
00141 /* So things look consistent in everyone's emacs... */
00142 /* Local Variables: */
00143 /* indent-tabs-mode: nil */
00144 /* End: */
Generated on Sun May 8 08:40:19 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3