bool boxtype_is(const char *boxtype) { return strcasecmp(boxtype_get(), boxtype) == 0; }
bool cardreader_init(struct s_reader *reader) { struct s_client *client = reader->client; client->typ = 'r'; int8_t i = 0; set_localhost_ip(&client->ip); while((cardreader_device_init(reader) == 2) && i < 10) { cs_sleepms(2000); if(!ll_contains(configured_readers, reader) || !is_valid_client(client) || reader->enable != 1) { return false; } i++; } if (i >= 10) { reader->card_status = READER_DEVICE_ERROR; cardreader_close(reader); reader->enable = 0; return false; } else { if(reader->typ == R_INTERNAL) { if(boxtype_is("dm8000") || boxtype_is("dm800") || boxtype_is("dm800se")) {reader->cardmhz = 2700;} if(boxtype_is("dm500") || boxtype_is("dm600pvr")) {reader->cardmhz = 3150;} if(boxtype_is("dm7025")) {reader->cardmhz = 8300;} if((!strncmp(boxtype_get(), "vu", 2 ))||(boxtype_is("ini-8000am"))) {reader->cardmhz = 2700; reader->mhz = 450;} // only one speed for vu+ and Atemio Nemesis due to usage of TDA8024 } if((reader->cardmhz > 2000) && (reader->typ != R_SMART)) { rdr_log(reader, "Reader initialized (device=%s, detect=%s%s, pll max=%.2f MHz, wanted mhz=%.2f MHz)", reader->device, reader->detect & 0x80 ? "!" : "", RDR_CD_TXT[reader->detect & 0x7f], (float)reader->cardmhz / 100, (float)reader->mhz / 100); rdr_log(reader,"Reader sci internal, detected box type: %s", boxtype_get()); } else { if (reader->typ == R_SMART || is_smargo_reader(reader)) { rdr_log_dbg(reader, D_IFD, "clocking for smartreader with smartreader or smargo protocol"); if (reader->cardmhz >= 2000) reader->cardmhz = 369; else if (reader->cardmhz >= 1600) reader->cardmhz = 1600; else if (reader->cardmhz >= 1200) reader->cardmhz = 1200; else if (reader->cardmhz >= 961) reader->cardmhz = 961; else if (reader->cardmhz >= 800) reader->cardmhz = 800; else if (reader->cardmhz >= 686) reader->cardmhz = 686; else if (reader->cardmhz >= 600) reader->cardmhz = 600; else if (reader->cardmhz >= 534) reader->cardmhz = 534; else if (reader->cardmhz >= 480) reader->cardmhz = 480; else if (reader->cardmhz >= 436) reader->cardmhz = 436; else if (reader->cardmhz >= 400) reader->cardmhz = 400; else if (reader->cardmhz >= 369) reader->cardmhz = 369; else if (reader->cardmhz == 357) reader->cardmhz = 369; else // 357 not a default smartreader setting if (reader->cardmhz >= 343) reader->cardmhz = 343; else reader->cardmhz = 320; if (reader->mhz >= 1600) reader->mhz = 1600; else if (reader->mhz >= 1200) reader->mhz = 1200; else if (reader->mhz >= 961) reader->mhz = 961; else if (reader->mhz >= 900) reader->mhz = 900; else if (reader->mhz >= 800) reader->mhz = 800; else if (reader->mhz >= 686) reader->mhz = 686; else if (reader->mhz >= 600) reader->mhz = 600; else if (reader->mhz >= 534) reader->mhz = 534; else if (reader->mhz >= 480) reader->mhz = 480; else if (reader->mhz >= 436) reader->mhz = 436; else if (reader->mhz >= 400) reader->mhz = 369; else if (reader->mhz >= 369) reader->mhz = 369; else if (reader->mhz == 357) reader->mhz = 369; else // 357 not a default smartreader setting if (reader->mhz >= 343) reader->mhz = 343; else reader->mhz = 320; } if ((reader->typ == R_SMART || is_smargo_reader(reader)) && reader->autospeed == 1) { rdr_log(reader, "Reader initialized (device=%s, detect=%s%s, mhz= AUTO, cardmhz=%d)", reader->device, reader->detect & 0x80 ? "!" : "", RDR_CD_TXT[reader->detect & 0x7f], reader->cardmhz); } else { rdr_log(reader, "Reader initialized (device=%s, detect=%s%s, mhz=%d, cardmhz=%d)", reader->device, reader->detect & 0x80 ? "!" : "", RDR_CD_TXT[reader->detect & 0x7f], reader->mhz, reader->cardmhz); if (reader->typ == R_INTERNAL && !(reader->cardmhz > 2000)) rdr_log(reader,"Reader sci internal, detected box type: %s", boxtype_get()); } } return true; } }
static void write_versionfile(bool use_stdout) { FILE *fp = stdout; if(!use_stdout) { char targetfile[256]; fp = fopen(get_tmp_dir_filename(targetfile, sizeof(targetfile), "oscam.version"), "w"); if(!fp) { cs_log("Cannot open %s (errno=%d %s)", targetfile, errno, strerror(errno)); return; } struct tm st; time_t walltime = cs_time(); localtime_r(&walltime, &st); fprintf(fp, "Unix starttime: %ld\n", walltime); fprintf(fp, "Starttime: %02d.%02d.%04d %02d:%02d:%02d\n", st.tm_mday, st.tm_mon + 1, st.tm_year + 1900, st.tm_hour, st.tm_min, st.tm_sec); } fprintf(fp, "Version: oscam-%s-r%s\n", CS_VERSION, CS_SVN_VERSION); fprintf(fp, "Compiler: %s\n", CS_TARGET); fprintf(fp, "Box type: %s (%s)\n", boxtype_get(), boxname_get()); fprintf(fp, "TempDir: %s\n", cs_tmpdir); fprintf(fp, "ConfigDir: %s\n", cs_confdir); #ifdef WEBIF fprintf(fp, "WebifPort: %d\n", cfg.http_port); #endif fprintf(fp, "\n"); write_conf(WEBIF, "Web interface support"); write_conf(WEBIF_LIVELOG, "LiveLog support"); write_conf(WEBIF_JQUERY, "jQuery support intern"); write_conf(TOUCH, "Touch interface support"); write_conf(WITH_SSL, "SSL support"); write_conf(HAVE_DVBAPI, "DVB API support"); if(config_enabled(HAVE_DVBAPI)) { write_conf(WITH_AZBOX, "DVB API with AZBOX support"); write_conf(WITH_MCA, "DVB API with MCA support"); write_conf(WITH_COOLAPI, "DVB API with COOLAPI support"); write_conf(WITH_STAPI, "DVB API with STAPI support"); write_conf(WITH_STAPI5, "DVB API with STAPI5 support"); write_conf(READ_SDT_CHARSETS, "DVB API read-sdt charsets"); } write_conf(IRDETO_GUESSING, "Irdeto guessing"); write_conf(CS_ANTICASC, "Anti-cascading support"); write_conf(WITH_DEBUG, "Debug mode"); write_conf(MODULE_MONITOR, "Monitor"); write_conf(WITH_LB, "Loadbalancing support"); write_conf(CS_CACHEEX, "Cache exchange support"); write_conf(CW_CYCLE_CHECK, "CW Cycle Check support"); write_conf(LCDSUPPORT, "LCD support"); write_conf(LEDSUPPORT, "LED support"); switch (cs_getclocktype()) { case CLOCK_TYPE_UNKNOWN : write_conf(CLOCKFIX, "Clockfix with UNKNOWN clock"); break; case CLOCK_TYPE_REALTIME : write_conf(CLOCKFIX, "Clockfix with realtime clock"); break; case CLOCK_TYPE_MONOTONIC: write_conf(CLOCKFIX, "Clockfix with monotonic clock"); break; } write_conf(IPV6SUPPORT, "IPv6 support"); fprintf(fp, "\n"); write_conf(MODULE_CAMD33, "camd 3.3x"); write_conf(MODULE_CAMD35, "camd 3.5 UDP"); write_conf(MODULE_CAMD35_TCP, "camd 3.5 TCP"); write_conf(MODULE_NEWCAMD, "newcamd"); write_conf(MODULE_CCCAM, "CCcam"); write_conf(MODULE_CCCSHARE, "CCcam share"); write_conf(MODULE_GBOX, "gbox"); write_conf(MODULE_RADEGAST, "radegast"); write_conf(MODULE_SCAM, "scam"); write_conf(MODULE_SERIAL, "serial"); write_conf(MODULE_CONSTCW, "constant CW"); write_conf(MODULE_PANDORA, "Pandora"); write_conf(MODULE_GHTTP, "ghttp"); fprintf(fp, "\n"); write_conf(WITH_CARDREADER, "Reader support"); if(config_enabled(WITH_CARDREADER)) { fprintf(fp, "\n"); write_readerconf(READER_NAGRA, "Nagra"); write_readerconf(READER_IRDETO, "Irdeto"); write_readerconf(READER_CONAX, "Conax"); write_readerconf(READER_CRYPTOWORKS, "Cryptoworks"); write_readerconf(READER_SECA, "Seca"); write_readerconf(READER_VIACCESS, "Viaccess"); write_readerconf(READER_VIDEOGUARD, "NDS Videoguard"); write_readerconf(READER_DRE, "DRE Crypt"); write_readerconf(READER_TONGFANG, "TONGFANG"); write_readerconf(READER_BULCRYPT, "Bulcrypt"); write_readerconf(READER_GRIFFIN, "Griffin"); write_readerconf(READER_DGCRYPT, "DGCrypt"); fprintf(fp, "\n"); write_cardreaderconf(CARDREADER_PHOENIX, "phoenix"); write_cardreaderconf(CARDREADER_INTERNAL_AZBOX, "internal_azbox"); write_cardreaderconf(CARDREADER_INTERNAL_COOLAPI, "internal_coolapi"); write_cardreaderconf(CARDREADER_INTERNAL_SCI, "internal_sci"); write_cardreaderconf(CARDREADER_SC8IN1, "sc8in1"); write_cardreaderconf(CARDREADER_MP35, "mp35"); write_cardreaderconf(CARDREADER_SMARGO, "smargo"); write_cardreaderconf(CARDREADER_PCSC, "pcsc"); write_cardreaderconf(CARDREADER_SMART, "smartreader"); write_cardreaderconf(CARDREADER_DB2COM, "db2com"); write_cardreaderconf(CARDREADER_STAPI, "stapi"); write_cardreaderconf(CARDREADER_STAPI5, "stapi5"); write_cardreaderconf(CARDREADER_STINGER, "stinger"); } else { write_readerconf(WITH_CARDREADER, "Reader Support"); } if(!use_stdout) { fclose(fp); } }