本文整理汇总了C++中yarp::os::Bottle::add方法的典型用法代码示例。如果您正苦于以下问题:C++ Bottle::add方法的具体用法?C++ Bottle::add怎么用?C++ Bottle::add使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类yarp::os::Bottle
的用法示例。
在下文中一共展示了Bottle::add方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handleImpedanceMsg
void handleImpedanceMsg(IImpedanceControl *iimp, const yarp::os::Bottle& cmd,
yarp::os::Bottle& response, bool *rec, bool *ok)
{
fprintf(stderr, "Handling IImpedance messages\n");
if (!iimp)
{
fprintf(stderr, "Error, I do not have a valid IImpedance interface\n");
*ok=false;
return;
}
int controlledJoints;
iimp->getAxes(&controlledJoints);
int code = cmd.get(1).asVocab();
switch (code)
{
case VOCAB_SET:
{
*rec = true;
switch(cmd.get(2).asVocab())
{
case VOCAB_IMP_PARAM:
{
*ok = iimp->setImpedance(cmd.get(3).asInt(), cmd.get(4).asDouble(),cmd.get(5).asDouble());
}
break;
case VOCAB_IMP_OFFSET:
{
*ok = iimp->setImpedanceOffset (cmd.get(3).asInt(), cmd.get(4).asDouble());
}
break;
}
}
break;
case VOCAB_GET:
{
*rec = true;
int tmp = 0;
double dtmp0 = 0.0;
double dtmp1 = 0.0;
double dtmp2 = 0.0;
response.addVocab(VOCAB_IS);
response.add(cmd.get(1));
switch(cmd.get(2).asVocab())
{
case VOCAB_IMP_PARAM:
{
*ok = iimp->getImpedance(cmd.get(3).asInt(), &dtmp0, &dtmp1);
response.addDouble(dtmp0);
response.addDouble(dtmp1);
}
break;
case VOCAB_IMP_OFFSET:
{
*ok = iimp->getImpedanceOffset(cmd.get(3).asInt(), &dtmp0);
response.addDouble(dtmp0);
}
break;
}
}
break;
}
//rec --> true se il comando e' riconosciuto
//ok --> contiene il return value della chiamata all'interfaccia
// ...*ok=torque->setPid();
//torque->
}
示例2: respond
bool ServerFrameGrabber::respond(const yarp::os::Bottle& cmd,
yarp::os::Bottle& response) {
int code = cmd.get(0).asVocab();
IFrameGrabberControlsDC1394* fgCtrlDC1394=dynamic_cast<IFrameGrabberControlsDC1394*>(fgCtrl);
//printf("%s\n",cmd.toString().c_str());
switch (code)
{
case VOCAB_SET:
printf("set command received\n");
switch(cmd.get(1).asVocab())
{
case VOCAB_BRIGHTNESS:
response.addInt(int(setBrightness(cmd.get(2).asDouble())));
return true;
case VOCAB_EXPOSURE:
response.addInt(int(setExposure(cmd.get(2).asDouble())));
return true;
case VOCAB_SHARPNESS:
response.addInt(int(setSharpness(cmd.get(2).asDouble())));
return true;
case VOCAB_WHITE:
response.addInt(int(setWhiteBalance(cmd.get(2).asDouble(),cmd.get(3).asDouble())));
return true;
case VOCAB_HUE:
response.addInt(int(setHue(cmd.get(2).asDouble())));
return true;
case VOCAB_SATURATION:
response.addInt(int(setSaturation(cmd.get(2).asDouble())));
return true;
case VOCAB_GAMMA:
response.addInt(int(setGamma(cmd.get(2).asDouble())));
return true;
case VOCAB_SHUTTER:
response.addInt(int(setShutter(cmd.get(2).asDouble())));
return true;
case VOCAB_GAIN:
response.addInt(int(setGain(cmd.get(2).asDouble())));
return true;
case VOCAB_IRIS:
response.addInt(int(setIris(cmd.get(2).asDouble())));
return true;
/*
case VOCAB_TEMPERATURE:
response.addInt(int(setTemperature(cmd.get(2).asDouble())));
return true;
case VOCAB_WHITE_SHADING:
response.addInt(int(setWhiteShading(cmd.get(2).asDouble(),cmd.get(3).asDouble(),cmd.get(4).asDouble())));
return true;
case VOCAB_OPTICAL_FILTER:
response.addInt(int(setOpticalFilter(cmd.get(2).asDouble())));
return true;
case VOCAB_CAPTURE_QUALITY:
response.addInt(int(setCaptureQuality(cmd.get(2).asDouble())));
return true;
*/
}
return DeviceResponder::respond(cmd,response);
case VOCAB_GET:
printf("get command received\n");
response.addVocab(VOCAB_IS);
response.add(cmd.get(1));
switch(cmd.get(1).asVocab())
{
case VOCAB_BRIGHTNESS:
response.addDouble(getBrightness());
return true;
case VOCAB_EXPOSURE:
response.addDouble(getExposure());
return true;
case VOCAB_SHARPNESS:
response.addDouble(getSharpness());
return true;
case VOCAB_WHITE:
{
double b=0.0;
double r=0.0;
getWhiteBalance(b,r);
response.addDouble(b);
response.addDouble(r);
}
return true;
case VOCAB_HUE:
response.addDouble(getHue());
return true;
case VOCAB_SATURATION:
response.addDouble(getSaturation());
return true;
case VOCAB_GAMMA:
response.addDouble(getGamma());
return true;
case VOCAB_SHUTTER:
//.........这里部分代码省略.........
示例3: handleTorqueMsg
//.........这里部分代码省略.........
{
*ok = torque->resetTorquePid (cmd.get(3).asInt());
}
break;
case VOCAB_DISABLE:
{
*ok = torque->disableTorquePid (cmd.get(3).asInt());
}
break;
case VOCAB_ENABLE:
{
*ok = torque->enableTorquePid (cmd.get(3).asInt());
}
break;
case VOCAB_TORQUE_MODE:
{
*ok = torque->setTorqueMode();
}
break;
}
}
break;
case VOCAB_GET:
{
*rec = true;
int tmp = 0;
double dtmp = 0.0;
response.addVocab(VOCAB_IS);
response.add(cmd.get(1));
switch(cmd.get(2).asVocab())
{
case VOCAB_AXES:
{
int tmp;
*ok = torque->getAxes(&tmp);
response.addInt(tmp);
}
break;
case VOCAB_TRQ:
{
*ok = torque->getTorque(cmd.get(3).asInt(), &dtmp);
response.addDouble(dtmp);
}
break;
case VOCAB_TRQS:
{
double *p = new double[controlledJoints];
*ok = torque->getTorques(p);
Bottle& b = response.addList();
int i;
for (i = 0; i < controlledJoints; i++)
b.addDouble(p[i]);
delete[] p;
}
break;
case VOCAB_ERR:
示例4: respond
// Callback handler for RPC commands (?)
bool RpcMsgHandler::respond(const yarp::os::Bottle& cmd, yarp::os::Bottle& reply)
{
bool ok = true;
bool commandUnderstood = true; // is the command recognized?
if (caller->verbose())
printf("command received: %s\n", cmd.toString().c_str());
int code = cmd.get(0).asVocab();
switch (code)
{
case VOCAB_GET:
{
double dtmp = 0.0;
double dtmp2 = 0.0;
reply.addVocab(VOCAB_IS);
reply.add(cmd.get(1));
switch(cmd.get(1).asVocab())
{
case VOCAB_AXES:
{
int axes;
caller->getAxes(axes);
reply.addInt(axes);
}
break;
case VOCAB_DEBUG_PARAMETER:
{
int j = cmd.get(2).asInt();
int index = cmd.get(3).asInt();
ok = caller->getDebugParameter(j, index, &dtmp);
reply.addInt(j);
reply.addInt(index);
reply.addDouble(dtmp);
}
break;
case VOCAB_GENERIC_PARAMETER:
{
int j = cmd.get(2).asInt();
int param = cmd.get(3).asInt();
ok = caller->getParameter(j, param, &dtmp);
reply.addInt(j);
reply.addInt(param);
reply.addDouble(dtmp);
}
break;
default:
{
commandUnderstood = false;
std::cout << "Debug Interface 1: command not understood! received " << cmd.toString().c_str() << std::endl;
}
break;
}
}
break; // case VOCAB_GET
case VOCAB_SET:
{
switch(cmd.get(1).asVocab())
{
case VOCAB_GENERIC_PARAMETER:
{
int j = cmd.get(2).asInt();
int param = cmd.get(3).asInt();
double val = cmd.get(4).asDouble();
ok = caller->setParameter(j, param, val);
}
break;
case VOCAB_DEBUG_PARAMETER:
{
int j = cmd.get(2).asInt();
int index = cmd.get(3).asInt();
double val = cmd.get(4).asDouble();
ok = caller->setDebugParameter(j, index, val);
}
break;
default:
{
commandUnderstood = false;
std::cout << "Debug Interface 2: command not understood! received " << cmd.toString().c_str() << std::endl;
}
break;
}
}
break; // case VOCAB_SET
default:
{
commandUnderstood = false;
std::cout << "Debug Interface 3: command not understood! received " << cmd.toString().c_str() << std::endl;
}
break;
//.........这里部分代码省略.........
示例5: respond
virtual bool respond(const yarp::os::Bottle& command,
yarp::os::Bottle& reply) {
mutex.wait();
switch (command.get(0).asVocab()) {
case VOCAB3('a','d','d'):
{
string name = command.get(1).asString().c_str();
if (name!="") {
removeName(name.c_str());
Entry entry;
entry.name = name;
q.push_back(entry);
reply.clear();
reply.add(Value::makeVocab("add"));
reply.addString(name.c_str());
addQueue(reply);
}
}
break;
case VOCAB3('d','e','l'):
{
if (command.get(1).isInt()) {
int idx = command.get(1).asInt();
bool acted = removeName(idx);
if (acted) {
reply.clear();
reply.add(Value::makeVocab("del"));
reply.addInt(idx);
} else {
reply.clear();
reply.add(Value::makeVocab("no"));
reply.addInt(idx);
}
addQueue(reply);
} else {
string name = command.get(1).asString().c_str();
if (name!="") {
bool acted = removeName(name.c_str());
if (acted) {
reply.clear();
reply.add(Value::makeVocab("del"));
reply.addString(name.c_str());
} else {
reply.clear();
reply.add(Value::makeVocab("no"));
reply.addString(name.c_str());
}
addQueue(reply);
}
}
}
break;
case VOCAB4('l','i','s','t'):
{
reply.clear();
addQueue(reply);
}
break;
default:
updateHelp();
mutex.post();
return DeviceResponder::respond(command,reply);
}
mutex.post();
printf("%s\n", reply.toString().c_str());
return true;
}
示例6: respond
bool DispatcherManager::respond(const yarp::os::Bottle& cmd, yarp::os::Bottle& reply) {
bool success = false;
try {
switch(cmd.get(0).asVocab()) {
case VOCAB4('h','e','l','p'): // print help information
reply.add(yarp::os::Value::makeVocab("help"));
reply.addString("Event Manager configuration options");
reply.addString(" help Displays this message");
reply.addString(" list Print a list of available event listeners");
reply.addString(" add type [type2 ...] Adds one or more event listeners");
reply.addString(" remove [all|idx] Removes event listener at an index or all");
reply.addString(" set [all|idx] Configures a listener");
reply.addString(" stats Prints information");
success = true;
break;
case VOCAB4('l','i','s','t'): // print list of available event listeners
{
reply.add(yarp::os::Value::makeVocab("help"));
std::vector<std::string> keys = FactoryT<std::string, IEventListener>::instance().getKeys();
for(unsigned int i = 0; i < keys.size(); i++) {
reply.addString((std::string(" ") + keys[i]).c_str());
}
success = true;
break;
}
case VOCAB3('a','d','d'): // add
{ // prevent identifier initialization to cross borders of case
yarp::os::Bottle list = cmd.tail();
for(int i = 0; i < list.size(); i++) {
IEventListener* listener = this->factory->create(list.get(i).asString().c_str());
listener->start();
this->dispatcher->addListener(listener);
}
reply.addString("Successfully added listener(s)");
success = true;
break;
}
case VOCAB4('r','e','m','o'): // remove
case VOCAB3('d','e','l'): // del(ete)
{ // prevent identifier initialization to cross borders of case
if(cmd.get(1).isInt() && cmd.get(1).asInt() >= 1 && cmd.get(1).asInt() <= this->dispatcher->countListeners()) {
this->dispatcher->removeListener(cmd.get(1).asInt()-1);
reply.addString("Successfully removed listener.");
success = true;
} else if(cmd.get(1).asString() == "all") {
this->dispatcher->clear();
reply.addString("Successfully removed all listeners.");
success = true;
} else {
throw std::runtime_error("Illegal index!");
}
break;
}
case VOCAB3('s','e','t'): // set
{ // prevent identifier initialization to cross borders of case
yarp::os::Bottle property;
property.addList() = cmd.tail().tail(); // see comment in TrainModule
std::string replymsg = "Setting configuration option ";
if(cmd.get(1).isInt() && cmd.get(1).asInt() >= 1 &&
cmd.get(1).asInt() <= this->dispatcher->countListeners()) {
bool ok = this->dispatcher->getAt(cmd.get(1).asInt()-1).configure(property);
replymsg += ok ? "succeeded" :
"failed; please check key and value type.";
reply.addString(replymsg.c_str());
success = true;
} else if(cmd.get(1).asString() == "all") {
for(int i = 0; i < this->dispatcher->countListeners(); i++) {
if(i > 0) {
replymsg += ", ";
}
bool ok = this->dispatcher->getAt(i).configure(property);
replymsg += ok ? "succeeded" :
"failed; please check key and value type.";
}
replymsg += ".";
reply.addString(replymsg.c_str());
success = true;
} else {
throw std::runtime_error("Illegal index!");
}
break;
}
case VOCAB4('i','n','f','o'): // information
case VOCAB4('s','t','a','t'): // statistics
{ // prevent identifier initialization to cross borders of case
reply.add(yarp::os::Value::makeVocab("help"));
std::ostringstream buffer;
buffer << "Event Manager Information (" << this->dispatcher->countListeners() << " listeners)";
reply.addString(buffer.str().c_str());
for(int i = 0; i < this->dispatcher->countListeners(); i++) {
buffer.str(""); // why isn't there a proper reset method?
//.........这里部分代码省略.........
示例7: respond
bool TrainModule::respond(const yarp::os::Bottle& cmd, yarp::os::Bottle& reply) {
// NOTE: the module class spawns a new thread, which implies that exception
// handling needs to be done in this thread, so not the 'main' thread.
bool success = false;
try {
switch(cmd.get(0).asVocab()) {
case VOCAB4('h','e','l','p'): // print help information
reply.add(yarp::os::Value::makeVocab("help"));
reply.addString("Training module configuration options");
reply.addString(" help Displays this message");
reply.addString(" train Trains the machine and sends the model");
reply.addString(" model Sends the model to the prediction module");
reply.addString(" reset Resets the machine to its current state");
reply.addString(" info Outputs information about the machine");
reply.addString(" pause Disable passing the samples to the machine");
reply.addString(" continue Enable passing the samples to the machine");
reply.addString(" set key val Sets a configuration option for the machine");
reply.addString(" load fname Loads a machine from a file");
reply.addString(" save fname Saves the current machine to a file");
reply.addString(" event [cmd ...] Sends commands to event dispatcher (see: event help)");
reply.addString(" cmd fname Loads commands from a file");
reply.addString(this->getMachine().getConfigHelp().c_str());
success = true;
break;
case VOCAB4('t','r','a','i'): // train the machine, implies sending model
this->getMachine().train();
reply.addString("Training completed.");
case VOCAB4('m','o','d','e'): // send model
this->model_out.write(this->machinePortable);
reply.addString("The model has been written to the port.");
success = true;
break;
case VOCAB4('c','l','e','a'): // clear machine
case VOCAB3('c','l','r'):
case VOCAB4('r','e','s','e'): // reset
case VOCAB3('r','s','t'):
this->getMachine().reset();
reply.addString("Machine cleared.");
success = true;
break;
case VOCAB4('p','a','u','s'): // pause sample stream
case VOCAB4('d','i','s','a'): // disable
this->trainProcessor.setEnabled(false);
reply.addString("Sample stream to machine disabled.");
success = true;
break;
case VOCAB4('c','o','n','t'): // continue sample stream
case VOCAB4('e','n','a','b'): // enable
this->trainProcessor.setEnabled(true);
reply.addString("Sample stream to machine enabled.");
success = true;
break;
case VOCAB4('i','n','f','o'): // information
case VOCAB4('s','t','a','t'): // statistics
{ // prevent identifier initialization to cross borders of case
reply.add(yarp::os::Value::makeVocab("help"));
reply.addString("Machine Information: ");
reply.addString(this->getMachine().getInfo().c_str());
success = true;
break;
}
case VOCAB4('l','o','a','d'): // load
{ // prevent identifier initialization to cross borders of case
reply.add(yarp::os::Value::makeVocab("help"));
std::string replymsg = std::string("Loading machine from '") +
cmd.get(1).asString().c_str() + "'... " ;
if(!cmd.get(1).isString()) {
replymsg += "failed";
} else {
this->getMachinePortable().readFromFile(cmd.get(1).asString().c_str());
replymsg += "succeeded";
}
reply.addString(replymsg.c_str());
success = true;
break;
}
case VOCAB4('s','a','v','e'): // save
{ // prevent identifier initialization to cross borders of case
reply.add(yarp::os::Value::makeVocab("help"));
std::string replymsg = std::string("Saving machine to '") +
cmd.get(1).asString().c_str() + "'... " ;
if(!cmd.get(1).isString()) {
replymsg += "failed";
} else {
this->getMachinePortable().writeToFile(cmd.get(1).asString().c_str());
replymsg += "succeeded";
}
reply.addString(replymsg.c_str());
success = true;
break;
//.........这里部分代码省略.........