Worschter Geschrieben 3. August 2005 Melden Share Geschrieben 3. August 2005 Ich hoffe otto_promm nimmt´s mir nicht krumm, aber nachdem ich nun schon wieder ne Weile danach suchen musste hab ich mir gedacht ich mach das mal dahin wo es nicht verloren geht cam.h-------- #ifndef __zapit_cam_h__ #define __zapit_cam_h__ #include "ci.h" #include class CCam : public CBasicClient { private: unsigned int number; virtual const unsigned char getVersion(void) const; virtual const char *getSocketName() const; public: bool sendMessage(const char * const data, const size_t length); bool setCaPmt(CCaPmt * const caPmt); CCam(int Number); }; #endif /* __cam_h__ */ ------------------------------------------------------------------------------------------- cam.cpp --------- /* zapit */ #include #include /* CAMD_UDS_NAME */ #include /* get_length_field_size */ const unsigned char CCam::getVersion(void) const { return 0x9F; } CCam::CCam(int Number) { number = Number; } const char *CCam::getSocketName(void) const { static char camd_uds_name[500]; memset(camd_uds_name, 0, 500); if(number==0) sprintf(camd_uds_name, "%s", CAMD_UDS_NAME); else sprintf(camd_uds_name, "/tmp/camd.sock%02d", number); return camd_uds_name; } bool CCam::sendMessage(const char * const data, const size_t length) { close_connection(); if (!open_connection()) return false; return send_data(data, length); } bool CCam::setCaPmt(CCaPmt * const caPmt) { if (!caPmt) return true; unsigned int size = caPmt->getLength(); unsigned char buffer[3 + get_length_field_size(size) + size]; size_t pos = caPmt->writeToBuffer(buffer); return sendMessage((char *)buffer, pos); } ------------------------------------------------------------------------------------------- zapit.cpp ----------- /* the conditional access module */ CCam *cam = NULL; ändern auf /* the conditional access module */ #define MAXCAMS 10 CCam *cam[MAXCAMS]; -------------------------------------------------------------------------------------------- cam->setCaPmt(thisChannel->getCaPmt()); ändern auf for(int k = 0; k cam[k]->setCaPmt(thisChannel->getCaPmt()); --------------------------------------------------------------------------------------------- if (cam) { delete cam; cam = NULL; } ändern auf for(int k = 0; k if (cam[k]) { delete cam[k]; cam[k] = NULL; } } --------------------------------------------------------------------------------------------- } if (!cam) { cam = new CCam(); } ändern auf for(int k = 0; k if (!cam[k]) { cam[k] = new CCam(k); } } --------------------------------------------------------------------------------------------- Ich glaub das wars. Sollte ich was vergessen habe bitte verbessern. mfg otto Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge