Changeset 1619
- Timestamp:
- 02/19/10 19:32:08 (14 years ago)
- Location:
- branches/monitor-improvement
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/monitor-improvement/Distribution/doc/man/oscam.server.5
r1571 r1619 257 257 Dreambox and other internal readers 258 258 259 For Dreambox and other internal readers the highest possible 260 clockrate will be auto detected. The \fBmhz\fR parameter will be ignored. 259 For Dreambox and other internal readers the highest possible clockrate will be 260 auto detected. The \fBmhz\fR parameter lets you override the values chosen by 261 OSCam, if it differs from 357 and 358, but usually you will not set any value 262 for mhz. 263 264 For certain Dreamboxes (especially PPC clones) the default mhz parameter leads 265 to slow ECM times and/or "not found" ECMs. By setting \fBmhz\fR to values like 266 200, 300, 400, ... 1600 you can find a value that works for your receiver and 267 your card. The higher the \fBmhz\fR value, the slower the ECM time (strange enough). 268 269 If you choose the value too low, your card is not recognized (no ATR or "card 270 not supported"). If you choose the value too high, you get slow ECM times. Our 271 experience is that either no \fBmhz\fR line, or a line \fBmhz\fR = 1000 works 272 best. 261 273 .TP 3n 262 274 \(bu -
branches/monitor-improvement/Distribution/doc/txt/oscam.server.txt
r1517 r1619 193 193 Dreambox and other internal readers 194 194 195 For Dreambox and other internal readers the highest possible clock 196 rate will be auto detected. The mhz parameter will be ignored. 195 For Dreambox and other internal readers the highest possible 196 clockrate will be auto detected. The mhz parameter lets you override 197 the values chosen by OSCam, if it differs from 357 and 358, but usu 198 ally you will not set any value for mhz. 199 200 For certain Dreamboxes (especially PPC clones) the default mhz 201 parameter leads to slow ECM times and/or "not found" ECMs. By set 202 ting mhz to values like 200, 300, 400, ... 1600 you can find a value 203 that works for your receiver and your card. The higher the mhz 204 value, the slower the ECM time (strange enough). 205 206 If you choose the value too low, your card is not recognized (no ATR 207 or "card not supported"). If you choose the value too high, you get 208 slow ECM times. Our experience is that either no mhz line, or a line 209 mhz = 1000 works best. 197 210 198 211 Phoenix / Smartmouse reader -
branches/monitor-improvement/module-dvbapi.c
r1587 r1619 23 23 #include "globals.h" 24 24 25 #define BUFSIZE 102425 #define BUFSIZE 512 26 26 #define MAX_DEMUX 5 27 27 #define MAX_CAID 50 … … 57 57 unsigned char lastcw0[8]; 58 58 unsigned char lastcw1[8]; 59 pthread_t descramble_thread; 60 unsigned int thread_active; 59 61 } DEMUXTYPE; 60 62 #define DMX_FILTER_SIZE 16 … … 127 129 128 130 unsigned short global_caid_list[MAX_CAID]; 129 CAIDTAB prioritytab; 130 unsigned short ignoretab[CS_MAXCAIDTAB]; 131 CAIDTAB prioritytab,ignoretab; 131 132 132 133 #define BOX_COUNT 2 … … 249 250 int dvbapi_read_device(int dmx_fd, unsigned char *buf, int length, int debug) 250 251 { 251 int len; 252 len=read(dmx_fd, buf, length); 252 int len, rc; 253 struct pollfd pfd[1]; 254 255 pfd[0].fd = dmx_fd; 256 pfd[0].events = (POLLIN | POLLPRI); 257 258 rc = poll(pfd, 1, 5000); 259 if (rc<1) 260 return -1; 261 262 len = read(dmx_fd, buf, length); 253 263 254 264 if (len==-1) … … 362 372 int dmx_fd, len; 363 373 364 dmx_fd=demux[demux_index].demux_e cm_fd;374 dmx_fd=demux[demux_index].demux_emm_fd; 365 375 366 376 dvbapi_set_filter(dmx_fd, selected_api, 0x0001, 0x01, 0xFF, 2000); … … 387 397 } 388 398 399 dvbapi_stop_filter(demux_index, 1); 400 389 401 return; 390 402 } … … 404 416 405 417 if (demux[demux_id].demux_ecm_fd>0) { 406 ioctl(demux[demux_id].demux_ecm_fd,DMX_STOP);418 dvbapi_stop_filter(demux_id, 0); 407 419 close(demux[demux_id].demux_ecm_fd); 408 420 demux[demux_id].demux_ecm_fd=0; … … 410 422 411 423 if (demux[demux_id].demux_emm_fd>0) { 412 ioctl(demux[demux_id].demux_emm_fd,DMX_STOP);424 dvbapi_stop_filter(demux_id, 1); 413 425 close(demux[demux_id].demux_emm_fd); 414 426 demux[demux_id].demux_emm_fd=0; 427 } 428 429 if (demux[demux_id].thread_active == 0) { 430 pthread_cancel(demux[demux_id].descramble_thread); 431 pthread_join(demux[demux_id].descramble_thread, NULL); 432 demux[demux_id].thread_active = -1; 415 433 } 416 434 … … 464 482 demux[demux_index].provider_id=provider_id; 465 483 466 467 484 int camfd=dvbapi_open_device(demux_index,1); 468 485 if (camfd<=0) { … … 499 516 500 517 dvbapi_stop_filter(demux_index,0); 501 dvbapi_stop_filter(demux_index,1);502 518 503 519 cs_debug("dvbapi: trying CA_System_ID: %04x CA_PID: %04x EEM_PID: %04x", demux[demux_index].ECMpids[n].CA_System_ID, demux[demux_index].ECMpids[n].CA_PID, demux[demux_index].ECMpids[n].EMM_PID); … … 512 528 } 513 529 514 if (cfg->dvbapi_au==1) 515 {530 if (cfg->dvbapi_au==1) { 531 dvbapi_stop_filter(demux_index,1); 516 532 if (demux[demux_index].ECMpids[n].EMM_PID>0) 517 533 provid=dvbapi_get_provid(demux_index, demux[demux_index].ECMpids[n].EMM_PID); 518 534 } 519 535 520 //cs_log("Provider ID: %04x", provid);521 522 536 //grep ecm 523 537 dvbapi_get_single_ecm(demux_index, demux[demux_index].ECMpids[n].CA_System_ID, demux[demux_index].ECMpids[n].CA_PID, provid); … … 530 544 { 531 545 int demux_index=(int)di; 532 int dmx1_fd,dmx2_fd ,n=30,k=0;546 int dmx1_fd,dmx2_fd=0,n=30,k=0; 533 547 unsigned int program_number; 534 548 549 pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); 550 pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); 551 535 552 cs_debug("dvbapi: Start descrambling Thread %d", demux_index); 536 553 537 dmx1_fd = dvbapi_open_device(demux_index,0); //ECM,CAT 538 dmx2_fd = dvbapi_open_device(demux_index,0); //EMM 539 554 dmx1_fd = dvbapi_open_device(demux_index,0); //ECM 540 555 demux[demux_index].demux_ecm_fd=dmx1_fd; 541 demux[demux_index].demux_emm_fd=dmx2_fd; 542 543 dvbapi_parse_cat(demux_index); 556 557 if (cfg->dvbapi_au==1) { 558 dmx2_fd = dvbapi_open_device(demux_index,0); //EMM,CAT 559 demux[demux_index].demux_emm_fd=dmx2_fd; 560 dvbapi_parse_cat(demux_index); 561 } 544 562 545 563 program_number=demux[demux_index].program_number; … … 569 587 } 570 588 571 572 struct pollfd pfd2[MAX_DEMUX*2]; 589 struct pollfd pfd2[2]; 573 590 int rc,len,i,pfdcount; 574 591 unsigned char buffer[BUFSIZE]; … … 576 593 while(1) 577 594 { 578 579 595 pfdcount=0; 580 596 … … 587 603 pfdcount++; 588 604 } else break; 589 if (demux[demux_index].demux_emm_fd>0) { 590 pfd2[pfdcount].fd = demux[demux_index].demux_emm_fd; 591 pfd2[pfdcount].events = (POLLIN | POLLPRI); 592 pfdcount++; 593 } else break; 594 595 596 rc=poll(pfd2, pfdcount, 1000); 605 if (cfg->dvbapi_au==1) { 606 if (demux[demux_index].demux_emm_fd>0) { 607 pfd2[pfdcount].fd = demux[demux_index].demux_emm_fd; 608 pfd2[pfdcount].events = (POLLIN | POLLPRI); 609 pfdcount++; 610 } else break; 611 } 612 613 rc=poll(pfd2, pfdcount, 3000); 614 615 if (rc<0) 616 break; 597 617 598 618 for (i = 0; i < pfdcount; i++) { … … 614 634 cs_debug("Read %d bytes\tTable-id: %02x\tCA section length: %d", len, buffer[0], len); 615 635 616 if (len>0) { 617 ECM_REQUEST *er; 618 619 if (!(er=get_ecmtask())) 620 continue; 621 622 er->srvid = demux[demux_index].program_number; 623 er->caid = demux[demux_index].ca_system_id; 624 er->prid = demux[demux_index].provider_id; 625 626 er->l=len; 627 memcpy(er->ecm, buffer, er->l); 628 629 get_cw(er); 630 } 636 ECM_REQUEST *er; 637 638 if (!(er=get_ecmtask())) 639 continue; 640 641 er->srvid = demux[demux_index].program_number; 642 er->caid = demux[demux_index].ca_system_id; 643 er->prid = demux[demux_index].provider_id; 644 645 er->l=len; 646 memcpy(er->ecm, buffer, er->l); 647 648 get_cw(er); 631 649 } 632 650 } … … 635 653 //EMM 636 654 637 if (cfg->dvbapi_au!=1)638 continue;639 640 655 cs_debug("EMM Type: 0x%02x", buffer[0]); 641 642 656 cs_ddump(buffer, len, "emm:"); 643 657 … … 665 679 cs_debug("dvbapi: Stop descrambling Thread %d", demux_index); 666 680 667 return 0; 681 pthread_detach(pthread_self()); 682 pthread_exit(0); 668 683 } 669 684 … … 688 703 if (k+1>=MAX_CAID) break; 689 704 global_caid_list[k]=reader[i].caid[j]; 690 k++; 691 705 k++; 692 706 } 693 707 } 694 708 } 695 709 for (n=0; n<demux[demux_index].ECMpidcount; n++) { 696 if (dvbapi_check_array(ignoretab , CS_MAXCAIDTAB, demux[demux_index].ECMpids[n].CA_System_ID)>=0) {710 if (dvbapi_check_array(ignoretab.caid, CS_MAXCAIDTAB, demux[demux_index].ECMpids[n].CA_System_ID)>=0) { 697 711 cs_debug("-> ignore %04x", demux[demux_index].ECMpids[n].CA_System_ID); 698 712 } else if (dvbapi_check_array(global_caid_list, MAX_CAID, demux[demux_index].ECMpids[n].CA_System_ID)>=0) { … … 725 739 } 726 740 741 void dvbapi_parse_descriptor(int demux_id, int i, unsigned int info_length, unsigned char *buffer) { 742 //int ca_pmt_cmd_id = buffer[i + 5]; 743 unsigned int descriptor_length=0; 744 ushort added,j,n; 745 746 for (j = 0; j < info_length - 1; j += descriptor_length + 2) { 747 descriptor_length = buffer[i + j + 7]; 748 int descriptor_ca_system_id = (buffer[i + j + 8] << 8) | buffer[i + j + 9]; 749 int descriptor_ca_pid = ((buffer[i + j + 10] & 0x1F) << 8) | buffer[i + j + 11]; 750 751 cs_debug("typ: %02x\tca_system_id: %04x\t ca_pid: %04x", buffer[i + j + 6], descriptor_ca_system_id, descriptor_ca_pid); 752 753 if (buffer[i + j + 6] == 0x09) { 754 added=0; 755 for (n=0;n<demux[demux_id].ECMpidcount;n++) { 756 if (demux[demux_id].ECMpids[n].CA_System_ID==descriptor_ca_system_id) 757 added=1; 758 } 759 if (added==0) { 760 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].CA_PID=descriptor_ca_pid; 761 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].CA_System_ID=descriptor_ca_system_id; 762 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].EMM_PID=0; 763 demux[demux_id].ECMpidcount++; 764 } 765 } 766 } 767 } 768 727 769 // from tuxbox camd 728 770 int dvbapi_parse_capmt(unsigned char *buffer, unsigned int length) 729 771 { 730 unsigned short i, j, u, n, added;772 unsigned short i, u; 731 773 unsigned short ca_mask=0x01, demux_index2=0x00; 732 774 … … 761 803 762 804 for (i=0;i<MAX_DEMUX;i++) { 763 if (demux[i].demux_index==demux_index2) { 764 if (demux[i].program_number==((buffer[1] << 8) | buffer[2])) { // already descrambling prog on this device 765 if (demux[i].active==1) { 766 //remove any inactive program 767 for (u=0;u<MAX_DEMUX;u++) { 768 if (demux[u].demux_index==demux_index2 && demux[u].active==0) 769 dvbapi_stop_descrambling(u); 770 demux[u].active=0; 771 } 772 773 } else 774 demux[i].active=1; 775 return 0; 776 } 805 if (demux[i].demux_index==demux_index2 && demux[i].program_number==((buffer[1] << 8) | buffer[2])) { // already descrambling prog on this device 806 if (demux[i].active==1) { 807 //remove any inactive program 808 for (u=0;u<MAX_DEMUX;u++) { 809 if (demux[u].demux_index==demux_index2 && demux[u].active==0) 810 dvbapi_stop_descrambling(u); 811 demux[u].active=0; 812 } 813 } else 814 demux[i].active=1; 815 return 0; 777 816 } 778 817 } … … 814 853 815 854 //CA_PIDS for all streams 816 if (program_info_length != 0) 817 { 818 int ca_pmt_cmd_id = buffer[6]; 819 cs_debug("ca_pmt_id: %02x", ca_pmt_cmd_id); 820 int descriptor_length=0; 821 for (i = 0; i < program_info_length - 1; i += descriptor_length + 2) 822 { 823 descriptor_length = buffer[i + 8]; 824 int ca_system_id = (buffer[i + 9] << 8) | buffer[i + 10]; 825 int ca_pid = ((buffer[i + 11] & 0x1F) << 8)| buffer[i + 12]; 826 827 cs_debug("typ: %02x ca_system_id: %04x\t ca_pid: %04x\tca_descriptor_length %d", buffer[i + 7], ca_system_id, ca_pid, descriptor_length); 828 829 if (buffer[i + 7] == 0x09) { 830 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].CA_PID=ca_pid; 831 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].CA_System_ID=ca_system_id; 832 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].EMM_PID=0; 833 demux[demux_id].ECMpidcount++; 834 } 835 } 855 if (program_info_length != 0) { 856 dvbapi_parse_descriptor(demux_id, 1, program_info_length, buffer); 836 857 } 837 858 … … 849 870 demux[demux_id].STREAMpidcount++; 850 871 851 if (es_info_length != 0) 852 { 853 int ca_pmt_cmd_id = buffer[i + 5]; 854 cs_debug("dvbapi: ca_pmt_cmd_id 0x%02x", ca_pmt_cmd_id); 855 unsigned int descriptor_length=0; 856 for (j = 0; j < es_info_length - 1; j += descriptor_length + 2) 857 { 858 descriptor_length = buffer[i + j + 7]; 859 int descriptor_ca_system_id = (buffer[i + j + 8] << 8) | buffer[i + j + 9]; 860 int descriptor_ca_pid = ((buffer[i + j + 10] & 0x1F) << 8) | buffer[i + j + 11]; 861 862 cs_debug("typ: %02x\tca_system_id: %04x\t ca_pid: %04x", buffer[i + j + 6], descriptor_ca_system_id, descriptor_ca_pid); 863 864 if (buffer[i + j + 6] == 0x09) { 865 added=0; 866 for (n=0;n<demux[demux_id].ECMpidcount;n++) { 867 if (demux[demux_id].ECMpids[n].CA_System_ID==descriptor_ca_system_id) 868 added=1; 869 } 870 if (added==0) { 871 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].CA_PID=descriptor_ca_pid; 872 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].CA_System_ID=descriptor_ca_system_id; 873 demux[demux_id].ECMpids[demux[demux_id].ECMpidcount].EMM_PID=0; 874 demux[demux_id].ECMpidcount++; 875 } 876 } 877 } 878 } 879 } 880 881 pthread_t p3; 882 883 cs_log("dvbapi: Found %d ECMpids in PMT", demux[demux_id].ECMpidcount); 884 cs_debug("dvbapi: Found %d STREAMpids in PMT", demux[demux_id].STREAMpidcount); 872 if (es_info_length != 0) { 873 dvbapi_parse_descriptor(demux_id, i, es_info_length, buffer); 874 } 875 } 876 877 cs_debug("dvbapi: Found %d ECMpids and %d STREAMpids in PMT", demux[demux_id].ECMpidcount); 885 878 886 879 if (demux[demux_id].ECMpidcount>0) { 887 880 dvbapi_resort_ecmpids(demux_id); 888 if (demux[demux_id].ECMpidcount>0) 889 pthread_create (&p3, NULL, thread_descrambling, (void*)demux_id); 890 } 891 881 if (demux[demux_id].ECMpidcount>0) {} 882 demux[demux_id].thread_active=pthread_create(&demux[demux_id].descramble_thread, NULL, thread_descrambling, (void*)demux_id); 883 } 892 884 893 885 return 0; … … 974 966 while(1) 975 967 { 976 cs_sleepms( 1000); // check every second968 cs_sleepms(500); 977 969 //cs_debug("dvbapi: check zap"); 978 970 … … 992 984 993 985 // if message begins with an apdu_tag and is longer than three bytes 994 995 986 if ((buffer[0] == 0x9F) && ((buffer[1] >> 7) == 0x01) && ((buffer[2] >> 7) == 0x00)) { 996 987 dvbapi_handlesockmsg(buffer, len); … … 1007 998 } 1008 999 1009 1000 void dvbapi_chk_caidtab(char *caidasc, CAIDTAB *ctab) { 1001 1002 char *ptr1, *ptr3; 1003 int i; 1004 1005 for (i=0, ptr1=strtok(caidasc, ","); (i<CS_MAXCAIDTAB) && (ptr1); ptr1=strtok(NULL, ",")) 1006 { 1007 unsigned long caid, prov; 1008 if( (ptr3=strchr(trim(ptr1), ':')) ) 1009 *ptr3++='\0'; 1010 else 1011 ptr3=""; 1012 1013 if (((caid=a2i(ptr1, 2))|(prov=a2i(ptr3, 3))) < 0x10000) 1014 { 1015 ctab->caid[i]=caid; 1016 ctab->mask[i]=prov; 1017 i++; 1018 } 1019 } 1020 } 1010 1021 1011 1022 int dvbapi_main_local() … … 1036 1047 demux[i].ca_fd=0; 1037 1048 demux[i].demux_index=-1; 1038 1049 demux[i].thread_active = -1; 1039 1050 memset(demux[i].buffer_cache_dmx,0 ,12); 1040 1051 } … … 1053 1064 } 1054 1065 1055 char *ptr1, *ptr3; 1056 //priority 1057 for (i=0, ptr1=strtok(cfg->dvbapi_priority, ","); (i<CS_MAXCAIDTAB) && (ptr1); ptr1=strtok(NULL, ",")) 1058 { 1059 unsigned long caid, prov; 1060 if( (ptr3=strchr(trim(ptr1), ':')) ) 1061 *ptr3++='\0'; 1062 else 1063 ptr3=""; 1064 1065 if (((caid=a2i(ptr1, 2))|(prov=a2i(ptr3, 3))) < 0x10000) 1066 { 1067 prioritytab.caid[i]=caid; 1068 prioritytab.mask[i]=prov; 1069 i++; 1070 } 1071 } 1072 //ignore 1073 for (i=0, ptr1=strtok(cfg->dvbapi_ignore, ","); (i<CS_MAXCAIDTAB) && (ptr1); ptr1=strtok(NULL, ",")) 1074 { 1075 unsigned long caid, prov; 1076 if( (ptr3=strchr(trim(ptr1), ':')) ) 1077 *ptr3++='\0'; 1078 else 1079 ptr3=""; 1080 1081 if (((caid=a2i(ptr1, 2))|(prov=a2i(ptr3, 3))) < 0x10000) 1082 { 1083 ignoretab[i]=caid; 1084 i++; 1085 } 1086 } 1066 dvbapi_chk_caidtab(cfg->dvbapi_priority, &prioritytab); 1067 dvbapi_chk_caidtab(cfg->dvbapi_ignore, &ignoretab); 1087 1068 1088 1069 pfd2[0].fd = fd_m2c; … … 1099 1080 cs_exit(0); 1100 1081 1101 1102 1082 chk_pending(tp); 1103 1083 … … 1128 1108 memcpy(cw_1, er->cw+8, 8); 1129 1109 1130 for (i=0;i<MAX_DEMUX;i++) 1131 { 1132 if (demux[i].program_number==er->srvid) 1133 { 1134 1110 for (i=0;i<MAX_DEMUX;i++) { 1111 if (demux[i].program_number==er->srvid) { 1135 1112 if (er->rc<=2 && demux[i].ca_system_id==0 && er->caid!=0) { 1113 dvbapi_start_descrambling(i, er->caid, er->pid, er->prid); 1114 } 1115 1116 if (er->rc==4 && cfg->dvbapi_au==1 && dvbapi_check_array(global_caid_list, MAX_CAID, er->caid)>=0) { 1117 //local card and not found -> maybe card need emm 1136 1118 dvbapi_start_descrambling(i, er->caid, er->pid, er->prid); 1137 1119 } … … 1145 1127 memset(&ca_descr,0,sizeof(ca_descr)); 1146 1128 1147 if (demux[i].ca_fd<=0) 1148 { 1129 if (demux[i].ca_fd<=0) { 1149 1130 cs_log("dvbapi: could not write cw."); 1150 1131 return; 1151 1132 } 1152 1133 1153 if (memcmp(cw_0,demux[i].lastcw0,8)!=0 && memcmp(cw_0,nullcw,8)!=0) 1154 { 1134 if (memcmp(cw_0,demux[i].lastcw0,8)!=0 && memcmp(cw_0,nullcw,8)!=0) { 1155 1135 ca_descr.index = i; 1156 1136 ca_descr.parity = 0; … … 1162 1142 } 1163 1143 1164 if (memcmp(cw_1,demux[i].lastcw1,8)!=0 && memcmp(cw_1,nullcw,8)!=0) 1165 { 1144 if (memcmp(cw_1,demux[i].lastcw1,8)!=0 && memcmp(cw_1,nullcw,8)!=0) { 1166 1145 ca_descr.index = i; 1167 1146 ca_descr.parity = 1; … … 1197 1176 1198 1177 int ok=0; 1199 1200 1178 if( !account ) 1201 1179 { -
branches/monitor-improvement/oscam-config.c
r1611 r1619 551 551 cfg->ncd_keepalive = atoi(value); 552 552 return; 553 }554 else555 {556 cfg->ncd_keepalive = 1;557 553 } 558 554 if (token[0] != '#') … … 793 789 strcpy(cfg->ac_logfile, "./oscam_ac.log"); 794 790 #endif 791 cfg->ncd_keepalive=1; 795 792 sprintf(token, "%s%s", cs_confdir, cs_conf); 796 793 if (!(fp=fopen(token, "r"))) … … 1378 1375 memset(account, 0, sizeof(struct s_auth)); 1379 1376 account->au = (-1); 1380 account->ncd_keepalive = 1; 1377 account->monlvl = cfg->mon_level; 1378 account->tosleep = cfg->tosleep; 1379 account->c35_suppresscmd08 = cfg->c35_suppresscmd08; 1380 account->ncd_keepalive = cfg->ncd_keepalive; 1381 1381 for (i = 1; i < CS_MAXCAIDTAB; account->ctab.mask[i++] = 0xffff); 1382 1382 for (i = 1; i < CS_MAXTUNTAB; account->ttab.bt_srvid[i++] = 0x0000); -
branches/monitor-improvement/oscam.c
r1607 r1619 139 139 fprintf(stderr, "\t-d <level> : debug level mask\n"); 140 140 fprintf(stderr, "\t 0 = no debugging (default)\n"); 141 fprintf(stderr, "\t 1 = detailed error messages\n"); 141 142 fprintf(stderr, "\t 2 = ATR parsing info, ECM, EMM and CW dumps\n"); 142 143 fprintf(stderr, "\t 4 = traffic from/to the reader\n"); … … 346 347 client[i].autoau = account->autoau; 347 348 client[i].expirationdate = account->expirationdate; 348 349 //set first to global value and then to specific (higher prio)350 client[i].ncd_keepalive = cfg->ncd_keepalive;351 349 client[i].ncd_keepalive = account->ncd_keepalive; 352 353 //set first to global value and then to specific (higher prio)354 client[i].c35_suppresscmd08 = cfg->c35_suppresscmd08;355 350 client[i].c35_suppresscmd08 = account->c35_suppresscmd08; 356 357 //set first to global value and then to specific (higher prio)358 client[i].tosleep = (60*cfg->tosleep);359 351 client[i].tosleep = (60*account->tosleep); 360 361 //set first to global value and then to specific (higher prio)362 client[i].monlvl = cfg->mon_level;363 352 client[i].monlvl = account->monlvl; 364 365 353 client[i].disabled = account->disabled; 366 354 client[i].fchid = account->fchid; // CHID filters
Note:
See TracChangeset
for help on using the changeset viewer.