bool NetworkProfiler::setPortmonitorParams(std::string portName, yarp::os::Property& param) { //e.g., set in "/view" (log_raw 1)" yarp::os::Bottle cmd, reply; cmd.addString("set"); cmd.addString("in"); cmd.addString(portName.c_str()); Bottle tmp; tmp.fromString(param.toString()); cmd.add(tmp.get(0)); Contact srcCon = Contact::fromString(portName); bool ret = yarp::os::NetworkBase::write(srcCon, cmd, reply, true, true, 2.0); if(!ret) { yError()<<"Cannot write to"<<portName; return false; } if(reply.size() > 1) { if(reply.get(0).isString() && reply.get(0).asString() == "fail") { yError()<<reply.toString(); return false; } else if(reply.get(0).isInt() && reply.get(0).asInt() == -1) { yError()<<reply.toString(); return false; } } return true; }
// Iif a subdevice parameter is given to the wrapper, it will open it as well // and and attach to it immediatly. bool yarp::dev::ServerInertial::openAndAttachSubDevice(yarp::os::Property& prop) { yarp::os::Value &subdevice = prop.find("subdevice"); IMU_polydriver = new yarp::dev::PolyDriver; // yDebug("Subdevice %s\n", subdevice.toString().c_str()); if (subdevice.isString()) { // maybe user isn't doing nested configuration yarp::os::Property p; p.setMonitor(prop.getMonitor(), "subdevice"); // pass on any monitoring p.fromString(prop.toString()); p.put("device",subdevice.toString()); IMU_polydriver->open(p); } else IMU_polydriver->open(subdevice); if (!IMU_polydriver->isValid()) { yError("cannot create device <%s>\n", subdevice.toString().c_str()); return false; } // if we are here, poly is valid IMU_polydriver->view(IMU); // attach to subdevice if(IMU == NULL) { yError("Error, subdevice <%s> has no valid IMU interface\n", subdevice.toString().c_str()); IMU_polydriver->close(); return false; } // iTimed interface IMU_polydriver->view(iTimed); // not mandatory return true; }
bool NetworkProfiler::attachPortmonitorPlugin(std::string portName, yarp::os::Property pluginProp) { //e.g., atch in "(context yarpviz) (file portrate)" yarp::os::Bottle cmd, reply; cmd.addString("atch"); cmd.addString("in"); cmd.addString(pluginProp.toString()); //Property& prop = cmd.addDict(); //prop.fromString(pluginProp.toString()); //yInfo()<<cmd.toString(); Contact srcCon = Contact::fromString(portName); bool ret = yarp::os::NetworkBase::write(srcCon, cmd, reply, true, true, 2.0); if(!ret) { yError()<<"Cannot write to"<<portName; return false; } if(reply.get(0).asString() != "ok") { yError()<<reply.toString(); return false; } return true; }