00001 #include <rtt/os/main.h>
00002 #include <reporting/TcpReporting.hpp>
00003 #include <taskbrowser/TaskBrowser.hpp>
00004
00005 #include <rtt/extras/SlaveActivity.hpp>
00006 #include <rtt/Activity.hpp>
00007 #include <rtt/Port.hpp>
00008
00009 using namespace std;
00010 using namespace Orocos;
00011 using namespace RTT;
00012
00013 class TestTaskContext
00014 : public TaskContext
00015 {
00016 Property<string> hello;
00017 OutputPort<std::vector<double> > dwport;
00018 InputPort<double> drport;
00019 std::vector<double> init;
00020 int pos;
00021
00022 public:
00023 TestTaskContext(std::string name)
00024 : TaskContext(name),
00025 hello("Hello", "The hello thing", "World"),
00026 dwport("D2Port"),
00027 drport("D1Port"),
00028 init(10,1.0)
00029 {
00030 this->properties()->addProperty( hello );
00031 this->ports()->addPort( drport );
00032 this->ports()->addPort( dwport );
00033 pos = 10;
00034 Logger::log() << Logger::Info << "TestTaskContext initialized" << Logger::endl;
00035
00036
00037 dwport.setDataSample( init );
00038 }
00039
00040 virtual bool startHook () {
00041 return true;
00042 }
00043
00044 virtual void updateHook () {
00045 if( pos > 9 )
00046 {
00047 init[2]+=2;
00048 } else if( pos > 3 ) {
00049 init[2]++;
00050 } else {
00051 init[2]--;
00052 }
00053 if( pos > 5 ) {
00054 init[4] += 4;
00055 } else {
00056 init[4] -= 4;
00057 }
00058 pos--;
00059 if( pos == 0 ) { pos = 10; }
00060 dwport.write( init );
00061 }
00062
00063 virtual void stopHook () {
00064
00065 }
00066 };
00067
00068 class TestTaskContext2
00069 : public TaskContext
00070 {
00071 Property<string> hello;
00072 OutputPort<double> dwport;
00073 InputPort<std::vector<double> > drport;
00074
00075 public:
00076 TestTaskContext2(std::string name)
00077 : TaskContext(name),
00078 hello("Hello", "The hello thing", "World"),
00079 dwport("D1Port"),
00080 drport("D2Port")
00081 {
00082 this->properties()->addProperty( hello );
00083 this->ports()->addPort( drport );
00084 this->ports()->addPort( dwport );
00085 }
00086 };
00087
00088 int ORO_main( int argc, char** argv)
00089 {
00090
00091
00092 if ( Logger::log().getLogLevel() < Logger::Info ) {
00093 Logger::log().setLogLevel( Logger::Info );
00094 Logger::log() << Logger::Info << argv[0] << " manually raises LogLevel to 'Info' (5). See also file 'orocos.log'."<<Logger::endl;
00095 }
00096
00097
00098 Activity act(10, 1.0);
00099 TcpReporting rc("TCPReporting");
00100 TestTaskContext gtc("MyPeer");
00101 TestTaskContext2 gtc2("MyPeer2");
00102 TestTaskContext2 gtc3("MySoloPeer");
00103
00104 Activity act1(10, 2.0);
00105
00106 rc.addPeer( >c );
00107 rc.addPeer( >c2 );
00108 rc.addPeer( >c3 );
00109 gtc.connectPeers( >c2 );
00110
00111 TaskBrowser tb( &rc );
00112
00113 act1.run( gtc.engine() );
00114 act.run( rc.engine() );
00115 tb.loop();
00116 act.stop();
00117 act1.stop();
00118 return 0;
00119 }
00120