00001 /*! @file Beobot/test-gistNav-lcd.C -- run on board B. 00002 It displays status info from master (board A) sends. 00003 Christopher Ackerman 7/30/2003 */ 00004 // //////////////////////////////////////////////////////////////////// // 00005 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2001 by the // 00006 // University of Southern California (USC) and the iLab at USC. // 00007 // See http://iLab.usc.edu for information about this project. // 00008 // //////////////////////////////////////////////////////////////////// // 00009 // Major portions of the iLab Neuromorphic Vision Toolkit are protected // 00010 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency // 00011 // in Visual Environments, and Applications'' by Christof Koch and // 00012 // Laurent Itti, California Institute of Technology, 2001 (patent // 00013 // pending; application number 09/912,225 filed July 23, 2001; see // 00014 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status). // 00015 // //////////////////////////////////////////////////////////////////// // 00016 // This file is part of the iLab Neuromorphic Vision C++ Toolkit. // 00017 // // 00018 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can // 00019 // redistribute it and/or modify it under the terms of the GNU General // 00020 // Public License as published by the Free Software Foundation; either // 00021 // version 2 of the License, or (at your option) any later version. // 00022 // // 00023 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope // 00024 // that it will be useful, but WITHOUT ANY WARRANTY; without even the // 00025 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // 00026 // PURPOSE. See the GNU General Public License for more details. // 00027 // // 00028 // You should have received a copy of the GNU General Public License // 00029 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write // 00030 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, // 00031 // Boston, MA 02111-1307 USA. // 00032 // //////////////////////////////////////////////////////////////////// // 00033 // 00034 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/Beobot/test-gistNav-lcd.C $ 00035 // $Id: test-gistNav-lcd.C 6795 2006-06-29 20:45:32Z rjpeters $ 00036 00037 00038 #include "Beowulf/Beowulf.H" 00039 #include "Component/ModelManager.H" 00040 #include "Devices/lcd.H" 00041 #include <signal.h> 00042 #include <stdio.h> 00043 00044 static bool goforever = true; //!< Will turn false on interrupt signal 00045 00046 // ###################################################################### 00047 //! Signal handler (e.g., for control-C) 00048 void terminate(int s) { 00049 LERROR("*** INTERRUPT ***"); 00050 goforever = false; 00051 exit(1); 00052 } 00053 00054 // ###################################################################### 00055 int main(const int argc, const char **argv) 00056 { 00057 // message being received and to process 00058 TCPmessage rmsg; 00059 00060 // instantiate a model manager: 00061 ModelManager managerS("GistNavigator - Slave"); 00062 00063 // Instantiate our various ModelComponents: 00064 nub::soft_ref<Beowulf> beoS(new Beowulf(managerS, "Beowulf Slave", 00065 "BeowulfSlave", false)); 00066 managerS.addSubComponent(beoS); 00067 00068 nub::soft_ref<lcd> lcdDisp(new lcd(managerS)); 00069 lcdDisp->setModelParamString("SerialPortDevName", 00070 "/dev/ttyS0", MC_RECURSE); 00071 managerS.addSubComponent(lcdDisp); 00072 00073 // Parse command-line: 00074 if (managerS.parseCommandLine(argc, argv, "", 0, 0) == false) return(1); 00075 00076 // setup signal handling: 00077 signal(SIGHUP, terminate); signal(SIGINT, terminate); 00078 signal(SIGQUIT, terminate); signal(SIGTERM, terminate); 00079 00080 managerS.start(); 00081 00082 while(goforever){ 00083 int32 rframe, raction, rnode = -1; // receive from any node 00084 if (beoS->receive(rnode, rmsg, rframe, raction, 3)){ // wait up to 3ms 00085 const int32 sig = rmsg.getElementInt32(); 00086 printf("received sig=%d\n",sig); 00087 if(sig>0){ 00088 lcdDisp->clear(); 00089 lcdDisp->printf(0, 2, "%d",sig); // counter indicating 00090 // number of frames processed 00091 } 00092 else 00093 if(sig==0){ 00094 lcdDisp->clear(); 00095 lcdDisp->printf(0, 2, "Press 2 (B) to Start"); 00096 } 00097 else{ 00098 lcdDisp->clear(); 00099 lcdDisp->printf(0, 2, "paused"); 00100 } 00101 00102 } 00103 } 00104 managerS.stop(); 00105 } 00106 00107 // ###################################################################### 00108 /* So things look consistent in everyone's emacs... */ 00109 /* Local Variables: */ 00110 /* indent-tabs-mode: nil */ 00111 /* End: */