void Debugger::beforeExitingState(Interpreter& interpreter, const XERCESC_NS::DOMElement* state) { handleState(interpreter, state, Breakpoint::BEFORE, Breakpoint::EXIT); }
/** The method sets all actuators. */ void setActuators() { // set all actuator values according to the values in the shared memory block try { dcmTime = proxy->getTime(0); data->readingActuators = data->newestActuators; if(data->readingActuators == lastReadingActuators) { if(actuatorDrops == 0) fprintf(stderr, "libbhuman: missed actuator request.\n"); ++actuatorDrops; } else actuatorDrops = 0; lastReadingActuators = data->readingActuators; float* readingActuators = data->actuators[data->readingActuators]; float* actuators = handleState(readingActuators); if(state != standing) { if(frameDrops > 0 || state == shuttingDown) setEyeLeds(actuators); else copyNonServos(readingActuators, actuators); } setBatteryLeds(actuators); // set position actuators positionRequest[4][0] = dcmTime; // 0 delay! for(int i = 0; i < lbhNumOfPositionActuatorIds; ++i) positionRequest[5][i][0] = actuators[i]; proxy->setAlias(positionRequest); // set hardness actuators bool requestedHardness = false; for(int i = headYawHardnessActuator; i < headYawHardnessActuator + lbhNumOfHardnessActuatorIds; ++i) if(actuators[i] != requestedActuators[i]) { hardnessRequest[4][0] = dcmTime; // 0 delay! for(int j = 0; j < lbhNumOfHardnessActuatorIds; ++j) hardnessRequest[5][j][0] = requestedActuators[headYawHardnessActuator + j] = actuators[headYawHardnessActuator + j]; proxy->setAlias(hardnessRequest); requestedHardness = true; break; } // set us actuator bool requestedUs = false; if(requestedActuators[usActuator] != actuators[usActuator]) { requestedActuators[usActuator] = actuators[usActuator]; if(actuators[usActuator] >= 0.f) { resetUsMeasurements(); usRequest[4][0] = dcmTime; usRequest[5][0][0] = actuators[usActuator]; proxy->setAlias(usRequest); requestedUs = true; } } // set led if(!requestedHardness && !requestedUs) for(int i = 0; i < lbhNumOfLedActuatorIds; ++i) { int index = faceLedRedLeft0DegActuator + ledIndex; if(++ledIndex == lbhNumOfLedActuatorIds) ledIndex = 0; if(actuators[index] != requestedActuators[index]) { ledRequest[0] = std::string(actuatorNames[index]); ledRequest[2][0][0] = requestedActuators[index] = actuators[index]; ledRequest[2][0][1] = dcmTime; proxy->set(ledRequest); break; } } // set team info // since this should very rarely, we don't use a proxy here if(data->bhumanStartTime != lastBHumanStartTime) { for(int i = 0; i < lbhNumOfTeamInfoIds; ++i) memory->insertData(teamInfoNames[i], data->teamInfo[i]); lastBHumanStartTime = data->bhumanStartTime; } } catch(AL::ALError& e) { fprintf(stderr, "libbhuman: %s\n", e.toString().c_str()); } }
void Debugger::afterEnteringState(Interpreter interpreter, const Arabica::DOM::Element<std::string>& state, bool moreComing) { handleState(interpreter, state, Breakpoint::AFTER, Breakpoint::ENTER); }
void Debugger::beforeExitingState(Interpreter interpreter, const Arabica::DOM::Element<std::string>& state, bool moreComing) { handleState(interpreter, state, Breakpoint::BEFORE, Breakpoint::EXIT); }
LRESULT AutoSearchFrame::onContextMenu(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { if(reinterpret_cast<HWND>(wParam) == ctrlAutoSearch) { POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; OMenu asMenu; asMenu.CreatePopupMenu(); CRect rc; ctrlAutoSearch.GetHeader().GetWindowRect(&rc); if (PtInRect(&rc, pt)) { return 0; } if(pt.x == -1 && pt.y == -1) { WinUtil::getContextMenuPos(ctrlAutoSearch, pt); } int enable = ctrlAutoSearch.GetSelectedCount() == 1 ? MFS_ENABLED : MFS_DISABLED; auto index = WinUtil::getFirstSelectedIndex(ctrlAutoSearch); if(ctrlAutoSearch.GetSelectedCount() > 1) { asMenu.appendItem(TSTRING(ENABLE_AUTOSEARCH), [=] { handleState(false); }); asMenu.appendItem(TSTRING(DISABLE_AUTOSEARCH), [=] { handleState(true); }); asMenu.appendSeparator(); } else if(ctrlAutoSearch.GetSelectedCount() == 1) { asMenu.appendItem(TSTRING(SEARCH), [=] { handleSearch(true); }); asMenu.appendItem(TSTRING(SEARCH_FOREGROUND), [=] { handleSearch(false); }); asMenu.appendSeparator(); if(ctrlAutoSearch.GetCheckState(index) == 1) { asMenu.appendItem(TSTRING(DISABLE_AUTOSEARCH), [=] { handleState(true); }); } else { asMenu.appendItem(TSTRING(ENABLE_AUTOSEARCH), [=] { handleState(false); }); } asMenu.appendSeparator(); } if (ctrlAutoSearch.GetSelectedCount() > 0) { auto groups = AutoSearchManager::getInstance()->getGroups(); if (!groups.empty()) { OMenu* groupsMenu = asMenu.createSubMenu(_T("Move to group")); groupsMenu->appendItem(_T("---"), [=] { handleMoveToGroup(Util::emptyString); }); for (auto grp : groups) { groupsMenu->appendItem(Text::toT(grp), [=] { handleMoveToGroup(grp); }); } asMenu.appendSeparator(); } } asMenu.AppendMenu(MF_STRING, IDC_ADD, CTSTRING(ADD)); asMenu.AppendMenu(MF_STRING, IDC_CHANGE, CTSTRING(SETTINGS_CHANGE)); asMenu.AppendMenu(MF_STRING, IDC_DUPLICATE, CTSTRING(DUPLICATE)); tstring title; if (ctrlAutoSearch.GetSelectedCount() == 1) { BundleList bundles; AutoSearch::FinishedPathMap fpl; auto as = ctrlAutoSearch.getItemData(index)->asItem; title = Text::toT(as->getDisplayName()); if (as->usingIncrementation()) { asMenu.appendSeparator(); asMenu.appendItem(TSTRING(INCREASE_NUM), [=] { AutoSearchManager::getInstance()->changeNumber(as, true); }, (as->getMaxNumber() > 0 && as->getCurNumber() >= as->getMaxNumber()) ? OMenu::FLAG_DISABLED : 0); asMenu.appendItem(TSTRING(DECREASE_NUM), [=] { AutoSearchManager::getInstance()->changeNumber(as, false); }, as->getCurNumber() == 0 ? OMenu::FLAG_DISABLED : 0); } AutoSearchManager::getInstance()->getMenuInfo(as, bundles, fpl); if (!bundles.empty() || !fpl.empty()) { asMenu.appendSeparator(); if (!bundles.empty()) { auto bundleMenu = asMenu.createSubMenu(CTSTRING(REMOVE_BUNDLE), true); for(auto& b: bundles) { auto token = b->getToken(); bundleMenu->appendItem(Text::toT(b->getName()), [=] { WinUtil::removeBundle(token); }); } } auto pathMenu = asMenu.createSubMenu(CTSTRING(OPEN_FOLDER), false); if (!bundles.empty()) { pathMenu->InsertSeparatorFirst(CTSTRING(QUEUED_BUNDLES)); for(auto& b: bundles) { string path = b->getTarget(); pathMenu->appendItem(Text::toT(path), [=] { WinUtil::openFolder(Text::toT(path)); }); } } if (!fpl.empty()) { pathMenu->InsertSeparatorLast(CTSTRING(FINISHED_BUNDLES)); for(auto j=fpl.begin(); j != fpl.end(); j++) { string path = j->first; pathMenu->appendItem(Text::toT(path) + (j->second > 0 ? _T(" (") + Text::toT(Util::formatTime("%Y-%m-%d %H:%M", j->second)) + _T(")") : Util::emptyStringT), [=] { WinUtil::openFolder(Text::toT(path)); }); } pathMenu->appendSeparator(); pathMenu->appendItem(CTSTRING(CLEAR_FINISHED_PATHS), [=] { AutoSearchManager::getInstance()->clearPaths(as); }); } } if (!as->getLastError().empty()) { asMenu.appendSeparator(); asMenu.appendItem(TSTRING(CLEAR_ERROR), [=] { as->setLastError(Util::emptyString); updateItem(as); }); } } asMenu.AppendMenu(MF_SEPARATOR); asMenu.AppendMenu(MF_STRING, IDC_REMOVE, CTSTRING(REMOVE)); asMenu.EnableMenuItem(IDC_CHANGE, enable); asMenu.EnableMenuItem(IDC_DUPLICATE, enable); asMenu.SetMenuDefaultItem(IDC_CHANGE); //make a menu title from the search string, its probobly too long to fit but atleast it shows something. if (!title.empty()) asMenu.InsertSeparatorFirst(title); asMenu.open(m_hWnd, TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt); if (!title.empty()) asMenu.RemoveFirstItem(); return TRUE; } bHandled = FALSE; return FALSE; }