Go to the documentation of this file.00001
00010 #include <coil/Time.h>
00011 #include <iostream>
00012 #include <iomanip>
00013
00014 #include "AutoTestOut.h"
00015
00016
00017 static const char* autotestout_spec[] =
00018 {
00019 "implementation_id", "AutoTestOut",
00020 "type_name", "AutoTestOut",
00021 "description", "Sample component for auto-test",
00022 "version", "1.0.0",
00023 "vendor", "AIST",
00024 "category", "example",
00025 "activity_type", "PERIODIC",
00026 "kind", "DataFlowComponent",
00027 "max_instance", "1",
00028 "language", "C++",
00029 "lang_type", "compile",
00030 "exec_cxt.periodic.rate", "1.0",
00031 ""
00032 };
00033
00034
00039 AutoTestOut::AutoTestOut(RTC::Manager* manager)
00040
00041 : RTC::DataFlowComponentBase(manager),
00042 m_outOut("out", m_out),
00043 m_seqoutOut("seqout", m_seqout),
00044 m_MyServicePort("MyService")
00045
00046
00047 {
00048 }
00049
00053 AutoTestOut::~AutoTestOut()
00054 {
00055 }
00056
00057
00058
00059 RTC::ReturnCode_t AutoTestOut::onInitialize()
00060 {
00061
00062
00063
00064
00065
00066 addOutPort("out", m_outOut);
00067 addOutPort("seqout", m_seqoutOut);
00068 m_seqout.data.length(5);
00069
00070
00071
00072 m_MyServicePort.registerConsumer("myservice0", "MyService", m_myservice0);
00073
00074
00075 addPort(m_MyServicePort);
00076
00077
00078
00079 return RTC::RTC_OK;
00080 }
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104 RTC::ReturnCode_t AutoTestOut::onActivated(RTC::UniqueId ec_id)
00105 {
00106
00107 fin.open("original-data");
00108 if (!fin){
00109 std::cout << "Can't open original-data..." << std::endl;
00110 return RTC::RTC_ERROR;
00111 }
00112 return RTC::RTC_OK;
00113 }
00114
00115
00116 RTC::ReturnCode_t AutoTestOut::onDeactivated(RTC::UniqueId ec_id)
00117 {
00118 fin.close();
00119 fin.clear();
00120 return RTC::RTC_OK;
00121 }
00122
00123
00124 RTC::ReturnCode_t AutoTestOut::onExecute(RTC::UniqueId ec_id)
00125 {
00126
00127 coil::usleep(100000);
00128
00129
00130 std::vector<std::string> vstr;
00131 std::string ss;
00132
00133 if (getline(fin, ss)){
00134
00135
00136 std::cout << std::fixed;
00137 std::cout << std::showpoint;
00138 std::cout << std::setprecision(6);
00139 std::stringstream iss;
00140 std::string str;
00141 iss.str(ss);
00142 iss >> m_out.data;
00143 std::cout << m_out.data << std::endl;
00144
00145
00146
00147 if (getline(fin, ss)){
00148 std::cout << ss << std::endl;
00149
00150 vstr = coil::split(ss, " ");
00151 std::stringstream isss;
00152
00153 for (int len=0; len<5; ++len){
00154
00155 isss.str(vstr[len]);
00156 isss >>m_seqout.data[len];
00157 std::cout << "m_seqout.data[len] = " << m_seqout.data[len] << std::endl;
00158 isss.clear();
00159 }
00160
00161
00162 if (getline(fin,ss)){
00163 std::cout << ss << std::endl;
00164
00165 char* retmsg;
00166
00167 if (!CORBA::is_nil(m_myservice0._ptr())){
00168 retmsg = m_myservice0->echo(ss.c_str());
00169 }
00170
00171 m_outOut.write();
00172 m_seqoutOut.write();
00173
00174 }
00175 }
00176 }
00177
00178 return RTC::RTC_OK;
00179 }
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218 extern "C"
00219 {
00220
00221 void AutoTestOutInit(RTC::Manager* manager)
00222 {
00223 coil::Properties profile(autotestout_spec);
00224 manager->registerFactory(profile,
00225 RTC::Create<AutoTestOut>,
00226 RTC::Delete<AutoTestOut>);
00227 }
00228
00229 };
00230
00231