bool dmpExecutorInterface::read(yarp::os::ConnectionReader& connection) { yarp::os::idl::WireReader reader(connection); reader.expectAccept(); if (!reader.readListHeader()) { reader.fail(); return false; } yarp::os::ConstString tag = reader.readTag(); while (!reader.isError()) { // TODO: use quick lookup, this is just a test if (tag == "run") { bool _return; _return = run(); yarp::os::idl::WireWriter writer(reader); if (!writer.isNull()) { if (!writer.writeListHeader(1)) return false; if (!writer.writeBool(_return)) return false; } reader.accept(); return true; } if (tag == "is_running") { bool _return; _return = is_running(); yarp::os::idl::WireWriter writer(reader); if (!writer.isNull()) { if (!writer.writeListHeader(1)) return false; if (!writer.writeBool(_return)) return false; } reader.accept(); return true; } if (tag == "stop") { bool _return; _return = stop(); yarp::os::idl::WireWriter writer(reader); if (!writer.isNull()) { if (!writer.writeListHeader(1)) return false; if (!writer.writeBool(_return)) return false; } reader.accept(); return true; } if (tag == "s") { bool _return; _return = s(); yarp::os::idl::WireWriter writer(reader); if (!writer.isNull()) { if (!writer.writeListHeader(1)) return false; if (!writer.writeBool(_return)) return false; } reader.accept(); return true; } if (tag == "execute_OPC") { int32_t id; if (!reader.readI32(id)) { reader.fail(); return false; } bool _return; _return = execute_OPC(id); yarp::os::idl::WireWriter writer(reader); if (!writer.isNull()) { if (!writer.writeListHeader(1)) return false; if (!writer.writeBool(_return)) return false; } reader.accept(); return true; } if (tag == "waitMotionDone") { double period; double timeout; if (!reader.readDouble(period)) { period = 0.5; } if (!reader.readDouble(timeout)) { timeout = 0; } bool _return; _return = waitMotionDone(period,timeout); yarp::os::idl::WireWriter writer(reader); if (!writer.isNull()) { if (!writer.writeListHeader(1)) return false; if (!writer.writeBool(_return)) return false; } reader.accept(); return true; } if (tag == "set_hand") { Hand newHand; int32_t ecast2; HandVocab cvrt3; if (!reader.readEnum(ecast2,cvrt3)) { reader.fail(); return false; } else { newHand = (Hand)ecast2; } bool _return; _return = set_hand(newHand); yarp::os::idl::WireWriter writer(reader); if (!writer.isNull()) { if (!writer.writeListHeader(1)) return false; if (!writer.writeBool(_return)) return false; } reader.accept(); return true; } if (tag == "get_hand") { Hand _return; _return = get_hand(); yarp::os::idl::WireWriter writer(reader); if (!writer.isNull()) { if (!writer.writeListHeader(1)) return false; if (!writer.writeI32((int32_t)_return)) return false; } reader.accept(); return true; } if (tag == "teach_start") { std::string actionName; Hand handToUse; if (!reader.readString(actionName)) { reader.fail(); return false; } int32_t ecast4; HandVocab cvrt5; if (!reader.readEnum(ecast4,cvrt5)) { handToUse = RIGHT; } else { handToUse = (Hand)ecast4; } bool _return; _return = teach_start(actionName,handToUse); yarp::os::idl::WireWriter writer(reader); if (!writer.isNull()) { if (!writer.writeListHeader(1)) return false; if (!writer.writeBool(_return)) return false; } reader.accept(); return true; } if (tag == "quit") { quit(); yarp::os::idl::WireWriter writer(reader); if (!writer.isNull()) { if (!writer.writeOnewayResponse()) return false; } reader.accept(); return true; } if (reader.noMore()) { reader.fail(); return false; } yarp::os::ConstString next_tag = reader.readTag(); if (next_tag=="") break; tag = tag + "_" + next_tag; } return false; }
void hmhands_update_proc(Layer *me, GContext *ctx) { (void)me; set_hand(&hourhand_container, (pebble_time.tm_hour % 12)*30 + pebble_time.tm_min/2); set_hand(&minutehand_container, pebble_time.tm_min*6); }