~eInputDeviceInit() { while (m_drivers.size()) { delete m_devices.back(); m_devices.pop_back(); delete m_drivers.back(); m_drivers.pop_back(); } }
int eDVBServiceController::checkCA(ePtrList<CA> &list, const ePtrList<Descriptor> &descriptors, int sid) { int found=0; for (ePtrList<Descriptor>::const_iterator i(descriptors); i != descriptors.end(); ++i) { if (i->Tag()==9) // CADescriptor { found++; CADescriptor *ca=(CADescriptor*)*i; #if 0 // this is old unneeded code for camd call.. // now we do this in eDVBCAHandler.. Decoder::addCADescriptor((__u8*)(ca->data)); #endif int avail=0; { singleLock s(availCALock); if (availableCASystems.find(ca->CA_system_ID) != availableCASystems.end()) avail++; } usedCASystems.insert(ca->CA_system_ID); if (avail) { for (ePtrList<CA>::iterator a = list.begin(); a != list.end(); a++) { if (a->casysid==ca->CA_system_ID) { avail=0; break; } } if (avail) { CA *n=new CA; n->ecmpid=ca->CA_PID; n->casysid=ca->CA_system_ID; n->emmpid=-1; list.push_back(n); } } } } return found; }
~eInputDeviceInit() { while (m_drivers.size()) { delete m_devices.back(); m_devices.pop_back(); delete m_drivers.back(); m_drivers.pop_back(); } if (consoleFd >= 0) { ::close(consoleFd); } }
eInputDeviceInit() { int i = 0; consoleFd = ::open("/dev/tty0", O_RDWR); while (1) { char filename[128]; sprintf(filename, "/dev/input/event%d", i); if (::access(filename, R_OK) < 0) break; eRCInputEventDriver *p; m_drivers.push_back(p = new eRCInputEventDriver(filename)); m_devices.push_back(new eRCDeviceInputDev(p, consoleFd)); ++i; } eDebug("Found %d input devices!", i); }
eInputDeviceInit() { int i = 0; while (1) { struct stat s; char filename[128]; sprintf(filename, "/dev/input/event%d", i); if (stat(filename, &s)) break; eRCInputEventDriver *p; m_drivers.push_back(p = new eRCInputEventDriver(filename)); m_devices.push_back(new eRCDeviceInputDev(p)); ++i; } eDebug("Found %d input devices!", i); }
static int testrpc(std::vector<eXMLRPCVariant> ¶ms, ePtrList<eXMLRPCVariant> &result) { if (xmlrpc_checkArgs("ii", params, result)) return 1; std::map<eString, eXMLRPCVariant*> *s=new std::map<eString, eXMLRPCVariant*>; s->INSERT("sum",new eXMLRPCVariant(new __s32(*params[0].getI4()+*params[1].getI4()))); s->INSERT("difference",new eXMLRPCVariant(new __s32(*params[0].getI4()-*params[1].getI4()))); result.push_back(new eXMLRPCVariant(s)); return 0; }
static int getList(std::vector<eXMLRPCVariant> ¶ms, ePtrList<eXMLRPCVariant> &result) { if (xmlrpc_checkArgs("s", params, result)) return 1; eString ¶m=*params[0].getString(); eDebug("getList(%s);", param.c_str()); eDVBServiceController *sapi=eDVB::getInstance()->getServiceAPI(); if (!sapi) { xmlrpc_fault(result, 3, "currently not available"); return 0; } if (!param.length()) // root { ePtrList<eXMLRPCVariant> l; l.setAutoDelete(true); std::map<int,eBouquet*> *pBouquets=eDVB::getInstance()->settings->getBouquets(); if (pBouquets) { for (std::map<int,eBouquet*>::iterator i(pBouquets->begin()); i != pBouquets->end(); ++i) { eBouquet *b=i->second; std::map<eString, eXMLRPCVariant*> *s=new std::map<eString, eXMLRPCVariant*>; static eString s0("caption"); static eString s1("type"); static eString s2("handle"); static eString s3("zappable"); s->INSERT(s0, new eXMLRPCVariant(new eString(b->bouquet_name.c_str()))); static eString g("Group"); s->INSERT(s1, new eXMLRPCVariant(new eString(g))); static eString bs("B:"); eString handle=bs; handle+=eString().setNum(b->bouquet_id, 16); s->INSERT(s2, new eXMLRPCVariant(new eString(handle))); s->INSERT(s3, new eXMLRPCVariant(new bool(0))); l.push_back(new eXMLRPCVariant(s)); } } result.push_back( new eXMLRPCVariant( l.getVector() ) ); } else if (param[0]=='B') { eBouquet *b=NULL; int bouquet_id; if (sscanf(param.c_str(), "B:%x", &bouquet_id)==1) b=eDVB::getInstance()->settings->getBouquet(bouquet_id); if (!b) xmlrpc_fault(result, 3, "invalid handle"); else { ePtrList<eXMLRPCVariant> l; l.setAutoDelete(true); for (std::list<eServiceReferenceDVB>::iterator s = b->list.begin(); s != b->list.end(); s++) { eService *service=eDVB::getInstance()->settings->getTransponders()->searchService(*s); if (!service) continue; std::map<eString, eXMLRPCVariant*> *sm=new std::map<eString, eXMLRPCVariant*>; static eString s0("caption"); static eString s1("type"); static eString s2("handle"); static eString s3("zappable"); sm->INSERT(s0, new eXMLRPCVariant(new eString(service->service_name.c_str()))); static eString g("Service"); sm->INSERT(s1, new eXMLRPCVariant(new eString(g))); static eString bs("S:"); eString handle=bs; handle+=eString().setNum(s->getDVBNamespace().get(), 16); handle+=':'; handle+=eString().setNum(s->getOriginalNetworkID().get(), 16); handle+=':'; handle+=eString().setNum(s->getTransportStreamID().get(), 16); handle+=':'; handle+=eString().setNum(s->getServiceID().get(), 16); handle+=':'; handle+=eString().setNum(s->getServiceType(), 16); sm->INSERT(s2, new eXMLRPCVariant(new eString(handle))); sm->INSERT(s3, new eXMLRPCVariant(new bool(1))); l.push_back(new eXMLRPCVariant(sm)); } result.push_back(new eXMLRPCVariant( l.getVector() )); } } else if (param[0]=='S') { eServiceReferenceDVB service=getServiceByID(param.c_str()); if (sapi->service != service) { xmlrpc_fault(result, 4, "service currently not tuned in"); return 0; } if (sapi->service_state==ENOENT) { xmlrpc_fault(result, 4, "service couldn't be tuned in"); return 0; } EIT *eit=eDVB::getInstance()->getEIT(); if (!eit) { xmlrpc_fault(result, 1, "no EIT yet"); return 0; } ePtrList<eXMLRPCVariant> l; l.setAutoDelete(true); for (ePtrList<EITEvent>::iterator i(eit->events); i != eit->events.end(); ++i) { EITEvent *event=*i; eString event_name=0; for (ePtrList<Descriptor>::iterator d(event->descriptor); d != event->descriptor.end(); ++d) { Descriptor *descriptor=*d; if (descriptor->Tag()==DESCR_SHORT_EVENT) { ShortEventDescriptor *ss=(ShortEventDescriptor*)descriptor; event_name=ss->event_name; } } if (!event_name) continue; std::map<eString, eXMLRPCVariant*> *s=new std::map<eString, eXMLRPCVariant*>; static eString s0("caption"); static eString s1("type"); static eString s2("handle"); static eString s3("zappable"); s->INSERT(s0, new eXMLRPCVariant(new eString(event_name))); static eString g("Event"); s->INSERT(s1, new eXMLRPCVariant(new eString(g))); static eString bs("E:"); eString handle=bs; handle+=eString().setNum(service.getDVBNamespace().get(), 16); handle+=':'; handle+=eString().setNum(service.getOriginalNetworkID().get(), 16); handle+=':'; handle+=eString().setNum(service.getTransportStreamID().get(), 16); handle+=':'; handle+=eString().setNum(service.getServiceID().get(), 16); handle+=':'; handle+=eString().setNum(service.getServiceType(), 16); handle+=':'; handle+=eString().setNum(event->event_id, 16); s->INSERT(s2, new eXMLRPCVariant(new eString(handle))); s->INSERT(s3, new eXMLRPCVariant(new bool(1))); l.push_back(new eXMLRPCVariant(s)); } eit->unlock(); result.push_back(new eXMLRPCVariant( l.getVector() )); } else xmlrpc_fault(result, 3, "couldn't get of this"); return 0; }
static int getInfo(std::vector<eXMLRPCVariant> ¶ms, ePtrList<eXMLRPCVariant> &result) { if (xmlrpc_checkArgs("s", params, result)) return 1; eString ¶m=*params[0].getString(); eDebug("getInfo(%s);", param.c_str()); eDVBServiceController *sapi=eDVB::getInstance()->getServiceAPI(); if (!sapi) { xmlrpc_fault(result, 3, "currently not available"); return 0; } if (!param.length()) // currently running { // mal gucken } else if (param[0]=='S') { std::map<eString, eXMLRPCVariant*> *s=new std::map<eString, eXMLRPCVariant*>; eServiceReferenceDVB service=getServiceByID(param.c_str()); if (sapi->service != service) { xmlrpc_fault(result, 4, "service currently not tuned in"); return 0; } if (sapi->service_state==ENOENT) { xmlrpc_fault(result, 4, "service couldn't be tuned in"); return 0; } static eString s1("type"); static eString g("Service"); s->INSERT(s1, new eXMLRPCVariant(new eString(g))); static eString s0("caption"); eService *ser=eDVB::getInstance()->settings->getTransponders()->searchService(service); s->INSERT(s0, new eXMLRPCVariant(new eString(ser?ser->service_name.c_str():""))); static eString s2("parentHandle"); static eString g2("NA"); s->INSERT(s2, new eXMLRPCVariant(new eString(g2))); PMT *pmt=eDVB::getInstance()->getPMT(); if (!pmt) { xmlrpc_fault(result, 1, "no PMT yet"); return 0; } PMTEntry *v=0; for (ePtrList<PMTEntry>::iterator i(pmt->streams); (!v) && i != pmt->streams.end(); ++i) { PMTEntry *pe=*i; switch (pe->stream_type) { case 1: // ISO/IEC 11172 Video case 2: // ITU-T Rec. H.262 | ISO/IEC 13818-2 Video or ISO/IEC 11172-2 constrained parameter video stream v=pe; break; } } if (v) { static eString s2("videoPid"); s->INSERT(s2, new eXMLRPCVariant(new int(v->elementary_PID))); } ePtrList<eXMLRPCVariant> l; l.setAutoDelete(true); for (ePtrList<PMTEntry>::iterator i(pmt->streams); i != pmt->streams.end(); ++i) { PMTEntry *pe=*i; int isaudio=0, isAC3=0; switch (pe->stream_type) { case 3: // ISO/IEC 11172 Audio case 4: // ISO/IEC 13818-3 Audio isaudio=1; break; case 6: { for (ePtrList<Descriptor>::iterator i(pe->ES_info); i != pe->ES_info.end(); ++i) { Descriptor *d=*i; if (d->Tag()==DESCR_AC3) { isaudio=1; isAC3=1; } } } } if (isaudio) { std::map<eString, eXMLRPCVariant*> *a=new std::map<eString, eXMLRPCVariant*>; static eString s1("audioPid"), s2("handle"), s3("type"), s4("language"), s5("mpeg"), s6("ac3"); a->INSERT(s1, new eXMLRPCVariant(new int(pe->elementary_PID))); a->INSERT(s2, new eXMLRPCVariant(new eString("A"))); // nyi a->INSERT(s3, new eXMLRPCVariant(new eString(isAC3?s6:s5))); l.push_back( new eXMLRPCVariant( a ) ); } } static eString as("audioPids"); s->INSERT(as, new eXMLRPCVariant( l.getVector() ) ); pmt->unlock(); result.push_back(new eXMLRPCVariant(s)); eString res=""; result.first()->toXML(res); eDebug("%s", res.c_str()); } else xmlrpc_fault(result, 3, "nene nur service bitte"); return 0; }
void eHelpWindow::init_eHelpWindow(ePtrList<eAction> &parseActionHelpList, int helpID) { int xpos=60, ypos=0, labelheight, imgheight; scrollbar = CreateSkinnedProgress("scrollbar",0,100); visible = new eWidget(this); visible->setName("visible"); BuildSkin("eHelpWindow"); scrollbox = new eWidget(visible); scrollbox->move(ePoint(0, 0)); scrollbox->resize(eSize(visible->width(), visible->height()*8)); const std::set<eString> &styles=eActionMapList::getInstance()->getCurrentStyles(); lastEntry=0; entryBeg[lastEntry++]=0; int pageend=visible->height(); for ( ePtrList<eAction>::iterator it( parseActionHelpList.begin() ); it != parseActionHelpList.end() ; it++ ) { std::map< eString, keylist >::iterator b; for (std::set<eString>::const_iterator si(styles.begin()); si != styles.end(); ++si) { b=it->keys.find(*si); if (b == it->keys.end()) continue; keylist &keys = b->second; for ( keylist::iterator i( keys.begin() ); i != keys.end() ; i++ ) { imgheight=0; if ( strstr( i->producer->getDescription(), eSystemInfo::getInstance()->getHelpStr() ) ) { if (i->picture) { gPixmap *image=eSkin::getActive()->queryImage(i->picture); if (image) { label = new eLabel(scrollbox); label->setFlags(eLabel::flagVCenter); label->move(ePoint(0, ypos)); label->resize(eSize(xpos,image->y)); label->setBlitFlags(BF_ALPHATEST); label->setPixmap(image); label->setPixmapPosition(ePoint((xpos-10)/2-image->x/2, 0)); } } label = new eLabel(scrollbox); label->setFlags(eLabel::flagVCenter); label->setFlags(RS_WRAP); label->move(ePoint(xpos, ypos)); label->resize(eSize(visible->width()-xpos-20, 200)); // since they are inited before language is set, // call gettext again. label->setText(gettext(it->getDescription())); labelheight=label->getExtend().height(); label->resize(eSize(visible->width()-xpos-20, labelheight)); ypos+=(labelheight>imgheight?labelheight:imgheight)+20; if ( ypos-20 > pageend ) { pageend=ypos-(labelheight>imgheight?labelheight:imgheight)-20; entryBeg[lastEntry++]=pageend; pageend+=visible->height(); } break; // add only once :) } } } } if (helpID) { eString helptext=loadHelpText(helpID); label = new eLabel(scrollbox); label->setFlags(eLabel::flagVCenter); label->setFlags(RS_WRAP); label->move(ePoint(0, ypos)); label->resize(eSize(visible->width(), 200)); label->setText(helptext); labelheight = label->getExtend().height(); label->resize(eSize(visible->width(), labelheight)); int tmp = ypos+labelheight; while ( tmp > pageend ) { entryBeg[lastEntry++]=ypos; ypos+=visible->height(); pageend=ypos; } } --lastEntry; cur = 0; doscroll=ypos>visible->height(); if (!doscroll) scrollbar->hide(); else updateScrollbar(); addActionMap(&i_helpwindowActions->map); }