void Mirobot::loop(){ marcel.loop(); ledHandler(); servoHandler(); autoHandler(); calibrateHandler(); sensorNotifier(); #ifdef ESP8266 if(wifiEnabled){ sendDiscovery(); updateHandler(); } #endif checkReady(); }
bool cPluginEpgsearch::Service(const char *Id, void *Data) { if (strcmp(Id, "MainMenuHooksPatch-v1.0::osSchedule") == 0 && EPGSearchConfig.ReplaceOrgSchedule!=0) { if (Data == NULL) return true; cOsdMenu **menu = (cOsdMenu**) Data; if (menu) *menu = (cOsdMenu*) MainMenuAction(); return true; } if (strcmp(Id, "Epgsearch-search-v1.0") == 0) { if (Data == NULL) return true; cSearchExt* SearchExt = new cSearchExt; Epgsearch_search_v1_0* searchData = (Epgsearch_search_v1_0*) Data; searchData->pResultMenu = NULL; strn0cpy(SearchExt->search,searchData->query, sizeof(SearchExt->search)); if (searchData->channelNr > 0) { #if VDRVERSNUM > 20300 LOCK_CHANNELS_READ; const cChannels *vdrchannels = Channels; #else cChannels *vdrchannels = &Channels; #endif SearchExt->useChannel = true; SearchExt->channelMin = vdrchannels->GetByNumber(searchData->channelNr); SearchExt->channelMax = vdrchannels->GetByNumber(searchData->channelNr); } SearchExt->mode = searchData->mode; SearchExt->useTitle = searchData->useTitle; SearchExt->useSubtitle = searchData->useSubTitle; SearchExt->useDescription = searchData->useDescription; searchData->pResultMenu = new cMenuSearchResultsForSearch(SearchExt, cTemplFile::GetTemplateByName("MenuSearchResults")); return true; } if (strcmp(Id, "Epgsearch-exttimeredit-v1.0") == 0 && !EPGSearchConfig.useVDRTimerEditMenu) { if (Data == NULL) return true; Epgsearch_exttimeredit_v1_0* serviceData = (Epgsearch_exttimeredit_v1_0*) Data; serviceData->pTimerMenu = new cMenuMyEditTimer(serviceData->timer, serviceData->bNew, serviceData->event); return true; } if (strcmp(Id, "Epgsearch-enablesearchtimers-v1.0") == 0) { if (Data == NULL) return true; else { Epgsearch_enablesearchtimers_v1_0* serviceData = (Epgsearch_enablesearchtimers_v1_0*) Data; if (serviceData->enable && cSearchTimerThread::m_Instance == NULL) cSearchTimerThread::Init(this); else if (!serviceData->enable && cSearchTimerThread::m_Instance != NULL) cSearchTimerThread::Exit(); } return true; } if (strcmp(Id, "Epgsearch-updatesearchtimers-v1.0") == 0) { if (Data == NULL) return true; else { Epgsearch_updatesearchtimers_v1_0* serviceData = (Epgsearch_updatesearchtimers_v1_0*) Data; if (!EPGSearchConfig.useSearchTimers) // enable search timer thread if necessary cSearchTimerThread::Init((cPluginEpgsearch*) cPluginManager::GetPlugin("epgsearch"), true); updateForced = serviceData->showMessage?3:1; } return true; } if (strcmp(Id, "Epgsearch-osdmessage-v1.0") == 0) { if (Data == NULL) return true; else { Epgsearch_osdmessage_v1_0* serviceData = (Epgsearch_osdmessage_v1_0*) Data; Skins.Message(serviceData->type, serviceData->message,5); } return true; } if (strcmp(Id, "Epgsearch-searchmenu-v1.0") == 0) { if (Data == NULL) return true; EpgSearchMenu_v1_0* serviceData = (EpgSearchMenu_v1_0*) Data; serviceData->Menu = new cMenuEPGSearchExt(); return true; } if (strcmp(Id, "Epgsearch-conflictmenu-v1.0") == 0) { if (Data == NULL) return true; EpgSearchMenu_v1_0* serviceData = (EpgSearchMenu_v1_0*) Data; serviceData->Menu = new cMenuConflictCheck(); return true; } if (strcmp(Id, "Epgsearch-lastconflictinfo-v1.0") == 0) { if (Data == NULL) return true; Epgsearch_lastconflictinfo_v1_0* serviceData = (Epgsearch_lastconflictinfo_v1_0*) Data; serviceData->nextConflict = cConflictCheckThread::m_cacheNextConflict; serviceData->relevantConflicts = cConflictCheckThread::m_cacheRelevantConflicts; serviceData->totalConflicts = cConflictCheckThread::m_cacheTotalConflicts; return true; } if (strcmp(Id, "Epgsearch-searchresults-v1.0") == 0) { if (Data == NULL) return true; cSearchExt* SearchExt = new cSearchExt; Epgsearch_searchresults_v1_0* searchData = (Epgsearch_searchresults_v1_0*) Data; searchData->pResultList = NULL; strn0cpy(SearchExt->search,searchData->query, sizeof(SearchExt->search)); if (searchData->channelNr > 0) { #if VDRVERSNUM > 20300 LOCK_CHANNELS_READ; const cChannels *vdrchannels = Channels; #else cChannels *vdrchannels = &Channels; #endif SearchExt->useChannel = true; SearchExt->channelMin = vdrchannels->GetByNumber(searchData->channelNr); SearchExt->channelMax = vdrchannels->GetByNumber(searchData->channelNr); } SearchExt->mode = searchData->mode; SearchExt->useTitle = searchData->useTitle; SearchExt->useSubtitle = searchData->useSubTitle; SearchExt->useDescription = searchData->useDescription; cSearchResults* results = SearchExt->Run(); // transfer to result list if (results) { results->SortBy(CompareEventTime); searchData->pResultList = new cList<Epgsearch_searchresults_v1_0::cServiceSearchResult>; cSearchResult *result = results->First(); while (result) { searchData->pResultList->Add(new Epgsearch_searchresults_v1_0::cServiceSearchResult(result->event)); result = results->Next(result); } } return true; } if (strcmp(Id, "Epgsearch-switchtimer-v1.0") == 0) { if (Data == NULL) return true; else { Epgsearch_switchtimer_v1_0* serviceData = (Epgsearch_switchtimer_v1_0*) Data; if (!serviceData->event) return false; switch(serviceData->mode){ case 0: {// query existence cSwitchTimer *lTimer = SwitchTimers.InSwitchList(serviceData->event); if (lTimer) { serviceData->switchMinsBefore = lTimer->switchMinsBefore; serviceData->announceOnly = lTimer->mode; } // if serviceData->success=lTimer!=NULL; break; } // 0 case 1: { // add/modify cSwitchTimer *lTimer = SwitchTimers.InSwitchList(serviceData->event); if (lTimer) { lTimer->switchMinsBefore = serviceData->switchMinsBefore; lTimer->mode = serviceData->announceOnly; } else { cMutexLock SwitchTimersLock(&SwitchTimers); SwitchTimers.Add(new cSwitchTimer(serviceData->event,serviceData->switchMinsBefore,serviceData->announceOnly)); SwitchTimers.Save(); cSwitchTimerThread::Init(); } // if serviceData->success=true; break; } // 1 case 2: {// delete cSwitchTimer *lTimer = SwitchTimers.InSwitchList(serviceData->event); serviceData->success=lTimer!=NULL; if (lTimer) { cMutexLock SwitchTimersLock(&SwitchTimers); SwitchTimers.Del(lTimer); SwitchTimers.Save(); } // if break; } // 2 default: serviceData->success=false; break; } // switch } // if return true; } // if if (strcmp(Id, "Epgsearch-quicksearch-v1.0") == 0) { if (Data == NULL) return true; EpgSearchMenu_v1_0* serviceData = (EpgSearchMenu_v1_0*) Data; serviceData->Menu = new cMenuQuickSearch(new cSearchExt); return true; } if (strcmp(Id, "Epgsearch-services-v1.0") == 0) { if (Data == NULL) return true; Epgsearch_services_v1_0* serviceData = (Epgsearch_services_v1_0*) Data; std::auto_ptr<cEpgsearchServiceHandler> autoHandler(new cEpgsearchServiceHandler); serviceData->handler = autoHandler; return true; } if (strcmp(Id, "Epgsearch-services-v1.1") == 0) { if (Data == NULL) return true; Epgsearch_services_v1_1* serviceData = (Epgsearch_services_v1_1*) Data; std::auto_ptr<cEpgsearchServiceHandler> autoHandler(new cEpgsearchServiceHandler); serviceData->handler = autoHandler; return true; } return false; }